<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Schlüsseltechnologie</title>
  <link>https://schluesseltechnologie-podcast.de/</link>
  <atom:link href="https://xyrillian.de/noises/stp/rss.xml" rel="self" type="application/rss+xml" />
  <language>de</language>
  <copyright>&#xA9; 2021-2026 Stefan Majewsky, ttimeless</copyright>
  <itunes:subtitle>Computertechnik, von Grund auf erklärt</itunes:subtitle>
  <itunes:author>Xyrillian Noises</itunes:author>
  <itunes:summary>Die IT hat unser Leben in den letzten Jahrzehnten von Grund auf verändert. Aber wie funktioniert sie wirklich? Das möchte ttimeless mal erklärt bekommen. Zum Glück hat Xyrill Antworten.
</itunes:summary>
  <description>Die IT hat unser Leben in den letzten Jahrzehnten von Grund auf verändert. Aber wie funktioniert sie wirklich? Das möchte ttimeless mal erklärt bekommen. Zum Glück hat Xyrill Antworten.
</description>
  <itunes:type>episodic</itunes:type>
  <itunes:owner>
  <itunes:name>Stefan Majewsky</itunes:name>
  <itunes:email>majewsky@posteo.de</itunes:email>
  </itunes:owner>
  <image>
    <url>https://xyrillian.de/res/cover-stp.png</url>
    <link>https://schluesseltechnologie-podcast.de/</link>
    <title>Schlüsseltechnologie</title>
  </image>
  <itunes:image href="https://xyrillian.de/res/cover-stp.png"/>
  <itunes:category text="Technology"/>
  <itunes:explicit>no</itunes:explicit>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP088: Die Schlüsseltechnologie-Kochshow</itunes:title>
    <itunes:episode>88</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP088: Die Schlüsseltechnologie-Kochshow</title>
    <link>https://schluesseltechnologie-podcast.de/088-die-schluesseltechnologie-kochshow</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute mal eine eher kurze Folge. Darin geht es ums Kochen und ähnliche Dinge und wie man sie verbinden könnte (oder auch nicht).</itunes:summary>
    <description>Heute mal eine eher kurze Folge. Darin geht es ums Kochen und ähnliche Dinge und wie man sie verbinden könnte (oder auch nicht).</description>
    <content:encoded>&lt;p&gt;Heute mal eine eher kurze Folge. Darin geht es ums Kochen und ähnliche Dinge und wie man sie verbinden könnte (oder auch nicht).&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;ttimeless kocht eines seiner geTeXten Rezepte:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://dl.xyrillian.de/noises/stp-088-shownotes/main.tex&#34;&gt;Präambel in einer Masterdatei&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rezepte in einzelnen Dateien
&lt;ul&gt;
&lt;li&gt;Hier das &lt;a href=&#34;https://dl.xyrillian.de/noises/stp-088-shownotes/hummus.tex&#34;&gt;Hummusrezept&lt;/a&gt; wie von Andong auf &lt;a href=&#34;https://www.youtube.com/mynameisandong&#34;&gt;seinem Youtube-Kanal&lt;/a&gt; vorgestellt: &lt;a href=&#34;https://www.youtube.com/watch?v=IRECUDMZteA&#34;&gt;Can I Recreate the World&#39;s Smoothest Hummus?&lt;/a&gt;, dazu gibt es &lt;a href=&#34;https://dl.xyrillian.de/noises/stp-088-shownotes/pita.tex&#34;&gt;das passende Pita&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://dl.xyrillian.de/noises/stp-088-shownotes/main.pdf&#34;&gt;Gesamtergebnis als PDF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Xyrill kocht ein C&#43;&#43;-Programm mit make(1):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grundproblem: im Kompilierungsmodell von C/C&#43;&#43; entsteht ein Programm in mehreren Schritten
&lt;ul&gt;
&lt;li&gt;jede einzelne Quellcode-Datei wird einzeln vom &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Compiler&amp;amp;oldid=258395815&#34;&gt;Compiler&lt;/a&gt; in eine Objektdatei übersetzt&lt;/li&gt;
&lt;li&gt;am Ende werden alle Objektdateien vom &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Linker_(Computerprogramm)&amp;amp;oldid=239659784&#34;&gt;Linker&lt;/a&gt; zu einer ausführbaren Programmdatei verknüpft&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/majewsky/xmpp-bridge&#34;&gt;als Beispiel ein kleines, vollständiges C-Programm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteile von Makefiles
&lt;ul&gt;
&lt;li&gt;Universalsprache zum Dokumentieren von Prozessen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Nachteile/Beschränkungen
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/sapcc/keppel/blob/3107ae252039710e02ff06a25e0e55a2084f9487/Makefile#L114-L116&#34;&gt;tw. arkane Syntax&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/q/3480950&#34;&gt;(fast?) turingvollständig&lt;/a&gt;, vgl. &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Ninja_(build_system)&amp;amp;oldid=1327454812&#34;&gt;Ninja&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(unter anderem dadurch) vergleichsweise ineffizient, vgl. &lt;a href=&#34;https://gittup.org/tup/&#34;&gt;Tup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;moderne Programmiersprachen verwenden andere Kompilierkonzepte, meist fokussiert um Module aus mehreren Quelldateien&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Insider aus Regionalmagazinen"  />
          <chapter start="00:04:02" title="ttimeless&#39; Rezeptsammlung"  />
          <chapter start="00:18:03" title="Xyrills arkane C-Kochbücher"  />
      </chapters>
      <enclosure length="38176230" url="https://dl.xyrillian.de/noises/stp-088-die-schluesseltechnologie-kochshow.mp3" type="audio/mpeg"/>
      <enclosure length="23751667" url="https://dl.xyrillian.de/noises/stp-088-die-schluesseltechnologie-kochshow.ogg" type="audio/ogg"/>
      <enclosure length="14390681" url="https://dl.xyrillian.de/noises/stp-088-die-schluesseltechnologie-kochshow.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/088-die-schluesseltechnologie-kochshow/</guid>
    <pubDate>Thu, 09 Apr 2026 21:15:00 GMT</pubDate>
    <itunes:duration>39:25</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP087: Graphen von Null bis Dijkstra</itunes:title>
    <itunes:episode>87</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP087: Graphen von Null bis Dijkstra</title>
    <link>https://schluesseltechnologie-podcast.de/087-graphen-von-null-bis-dijkstra</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem wir den Begriff schon ein paar Male gestreift haben, heute ein genauerer Blick auf Graphen. Darin: informierte und uninformierte Suche sowie eine Erkundung der Dresdner Umgebung.</itunes:summary>
    <description>Nachdem wir den Begriff schon ein paar Male gestreift haben, heute ein genauerer Blick auf Graphen. Darin: informierte und uninformierte Suche sowie eine Erkundung der Dresdner Umgebung.</description>
    <content:encoded>&lt;p&gt;Nachdem wir den Begriff schon ein paar Male gestreift haben, heute ein genauerer Blick auf Graphen. Darin: informierte und uninformierte Suche sowie eine Erkundung der Dresdner Umgebung.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;oft erwähnt, aber nie systematisch eingeführt: der Begriff &lt;strong&gt;Graph&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Graph_(Graphentheorie)&amp;amp;oldid=260114694&#34;&gt;Graph&lt;/a&gt;: eine Menge von Knoten mit Kanten dazwischen&lt;/li&gt;
&lt;li&gt;z.B. Nahverkehrsnetz: Knoten = Haltestellen, Kanten = Direktverbindung zwischen zwei Haltestellen&lt;/li&gt;
&lt;li&gt;z.B. soziale Medien: Knoten = Personen, Kanten = &amp;quot;ist befreundet/folgt&amp;quot;&lt;/li&gt;
&lt;li&gt;anders als bei Listen (STP077) oder Maps (STP079) große Variabilität darin, was ein Graph fundamental ist
&lt;ul&gt;
&lt;li&gt;z.B. gerichtete vs. ungerichtete Graphen: Haben die Kanten eine Richtung oder nicht? (siehe Beispiele oben)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;häufig verwendete Unterarten von Graphen:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Baum_(Graphentheorie)&amp;amp;oldid=260160360&#34;&gt;Baum&lt;/a&gt;: ayzklischer ungerichteter zusammenhängender Graph (z.B. siehe STP077/STP079: zum effizienten Abspeichern von sortierten Listen bzw. Maps)&lt;/li&gt;
&lt;li&gt;azyklischer gerichteter Graph (z.B. Versionsverwaltung, Familienstammbaum, Firmen-Organigramm)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Planarer_Graph&amp;amp;oldid=254694423&#34;&gt;planarer Graph&lt;/a&gt;: siehe &lt;a href=&#34;https://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/untangle.html&#34;&gt;&amp;quot;Untangle&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie durchschreitet man einen Graphen? -&amp;gt; Suchalgorithmen, im allgemeinsten Fall die zwei wichtigsten &amp;quot;uninformierten&amp;quot; Suchalgorithmen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Breitensuche&amp;amp;oldid=250572859&#34;&gt;Breitensuche&lt;/a&gt;: von einem Startpunkt pro Runde alle Nachbarn von bereits besuchten Knoten besuchen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Tiefensuche&amp;amp;oldid=260875992&#34;&gt;Tiefensuche&lt;/a&gt;: vom Startpunkt aus immer erst einen Nachbarn besuchen und dann dort wieder einen Nachbarn; sobald keine weiteren unbesuchten Nachbarn möglich sind, Backtracking zum vorherigen Knoten, bis ein neuer unbesuchter Nachbar gefunden wird&lt;/li&gt;
&lt;li&gt;sowohl Breiten- als auch Tiefensuche erzeugen beim Durchschreiten des Graphen einen Suchbaum, der ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Spannbaum&amp;amp;oldid=258057046&#34;&gt;Spannbaum&lt;/a&gt; ist (vgl. Spanning Tree bei Ethernet in STP028)&lt;/li&gt;
&lt;li&gt;Abwägung: Tiefensuche ist einfacher zu implementieren und hat weniger Speicheraufwand (braucht nur eine &amp;quot;besucht-Markierung&amp;quot; und keine Kandidatenliste), &lt;a href=&#34;https://xkcd.com/761/&#34;&gt;kann aber in der Praxis problematisch sein :)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beobachtung: Breitensuche findet garantiert den kürzesten Pfad vom Startpunkt zu einem gewünschten Endpunkt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abwandlung für Wegfindung: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dijkstra-Algorithmus&amp;amp;oldid=259180765&#34;&gt;Dijkstra-Algorithmus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Voraussetzung: Kanten haben auch noch ein Gewicht (analog zu einer Streckenlänge)&lt;/li&gt;
&lt;li&gt;Breitensuche merkt sich bei jedem Knoten den kürzesten Gesamtweg zu diesem Knoten&lt;/li&gt;
&lt;li&gt;beim Auswählen des nächsten Besuchskandidaten Wahl des Knotens mit dem kürzesten Gesamtweg&lt;/li&gt;
&lt;li&gt;Erweiterung zum &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=A*-Algorithmus&amp;amp;oldid=258638060&#34;&gt;A*-Algorithmus&lt;/a&gt; mittels Ergänzung um eine Heuristik, die beschreibt, wie nahe gefundene Knoten am Ziel sind (damit je nach Situation enorme Effizienzsteigerung möglich, siehe z.B. &lt;a href=&#34;https://factorio.com/blog/post/fff-317&#34;&gt;dieser Blogpost der Factorio-Entwickler&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt: &lt;a href=&#34;https://wissenschaftspodcasts.de/wisspodcast/wisspodweihnacht-3-das-haus-vom-niko-hae-mit-geschichten-aus-der-mathematik/&#34;&gt;#WissPodWeihnacht 3: Das Haus vom Niko…hä?!? mit Geschichten aus der Mathematik&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, ein schlafender ttimeless, das Haus vom Nikolaus und passierende Theorien"  />
          <chapter start="00:05:34" title="Graphen allgemein"  />
          <chapter start="00:13:20" title="Unterarten von Graphen"  />
          <chapter start="00:28:06" title="Beispiele von Graphen und wie man sie duchschreitet"  />
          <chapter start="00:50:34" title="Wegfindung"  />
          <chapter start="00:53:52" title="Dijkstra-Algorithmus"  />
          <chapter start="01:08:21" title="A*-Algorithmus"  />
      </chapters>
      <enclosure length="72488859" url="https://dl.xyrillian.de/noises/stp-087-graphen-von-null-bis-dijkstra.mp3" type="audio/mpeg"/>
      <enclosure length="44822673" url="https://dl.xyrillian.de/noises/stp-087-graphen-von-null-bis-dijkstra.ogg" type="audio/ogg"/>
      <enclosure length="26952146" url="https://dl.xyrillian.de/noises/stp-087-graphen-von-null-bis-dijkstra.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/087-graphen-von-null-bis-dijkstra/</guid>
    <pubDate>Thu, 19 Mar 2026 18:40:00 GMT</pubDate>
    <itunes:duration>75:09</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP086: Literatur: Ein Plädoyer für schlanke Software</itunes:title>
    <itunes:episode>86</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP086: Literatur: Ein Plädoyer für schlanke Software</title>
    <link>https://schluesseltechnologie-podcast.de/086-literatur-ein-plaedoyer-fuer-schlanke-software</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die Erfahrung, dass das Plastikgehirn gelegentlich länger für die Dinge braucht, die wir ihm aufgeben, kennen wir alle. War das früher nicht schon mal besser? Oder sollte es nicht zumindest der Vergangenheit angehören? Oder täuschen wir uns und verklären die Vergangenheit…</itunes:summary>
    <description>Die Erfahrung, dass das Plastikgehirn gelegentlich länger für die Dinge braucht, die wir ihm aufgeben, kennen wir alle. War das früher nicht schon mal besser? Oder sollte es nicht zumindest der Vergangenheit angehören? Oder täuschen wir uns und verklären die Vergangenheit…</description>
    <content:encoded>&lt;p&gt;Die Erfahrung, dass das Plastikgehirn gelegentlich länger für die Dinge braucht, die wir ihm aufgeben, kennen wir alle. War das früher nicht schon mal besser? Oder sollte es nicht zumindest der Vergangenheit angehören? Oder täuschen wir uns und verklären die Vergangenheit…&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Anhand von &lt;a href=&#34;https://berthub.eu/articles/LeanSoftware_text.pdf&#34;&gt;&amp;quot;A Plea for Lean Software&amp;quot; (1995)&lt;/a&gt; von Niklaus Wirth besprechen wir zwei wesentliche Fragestellungen. Zuerst einige Vorbeobachtungen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Frage 1: Warum ist Software (bzw. Produkte im Allgemeinen) immer weniger langlebig?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;COBOL-Software aus den 60ern ist immer noch im Einsatz, aber React-Apps von vor 5 Jahren sind hoffnungslos obsolet
&lt;ul&gt;
&lt;li&gt;siehe Vermutung, dass in der Frontend-Entwicklung Schnelllebigkeit von YouTube-Influencern getrieben wird&lt;/li&gt;
&lt;li&gt;bei COBOL/Fortran-Systemen auch regulatorische Hürden (z.B. Steuerungsoftware für Atombomben in Fortran 77, weil ein &lt;a href=&#34;https://infosec.exchange/@david_chisnall/115463730854960344&#34;&gt;Umstieg auf neuere Versionen Tests der Software erfordern würde&lt;/a&gt;, aber Atomwaffentests verboten sind)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;vgl. Erfahrung von ttimeless: Fensterbeschläge von vor 30 Jahren noch top, aber neuere von vor 5 Jahren tw. schon abgeranzt (Geplante Obsoleszenz? Survivorship-Bias?)
&lt;ul&gt;
&lt;li&gt;Wie schätzt man Qualität bei selten gekauften Produkten ab?&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://www.backblaze.com/blog/author/drivestatsteam/&#34;&gt;Backblaze Drive Stats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;sich gegenseitig beschleunigende Marktmechanismen (Qualitätsschwund durch Sparmaßnahmen in der Produktion, Mode)
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.reddit.com/r/BuyItForLife/comments/1106bml/why_everything_you_buy_is_worse_now_feels/&#34;&gt;passend dazu&lt;/a&gt;: &amp;quot;Ich sah neulich eine alte Episode von &#39;Der Preis ist heiß&#39; aus den 80ern, die UK-Edition mit [Bruce Forsyth]. Die Preise waren Dinge wie Mikrowellen, Fernseher, Möbelstücke und so weiter. Die Preise waren weit, weit höher, als was ich je geraten hätte. Wir sind mit der Vorstellung aufgewachsen, dass eine Mikrowelle weniger als 100 Pfund kosten sollte, obwohl sie unter Berücksichtigung der Inflation mittlerweile 400 kosten sollten. Alles ist scheiße günstig geworden.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;These von ttimeless: mehr Leute machen mehr Zeug machen mehr Altlasten (Xyrill erhöht um eine Coding-KI-Industrie und möchte sehen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Frage 2: Warum waren Computer in den 90ern schneller?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;welch Ironie, dass wir uns nach der Zeit zurücksehnen, in der der Autor unseres Textes sich über verschwenderische Programmierweisen aufregt&lt;/li&gt;
&lt;li&gt;vgl. Frage im MDR: Wann kriegen wir wieder Akkulaufzeiten von einer Woche wie bei den alten Nokia-Handys?&lt;/li&gt;
&lt;li&gt;offensichtlicher Einfluss: mehr Leistung, die sich nicht als konkrete Funktion äußert (z.B. höhere Auflösung erfordert mehr Videospeicher, moderne Konnektivität ist objektiv komplexer, als nur auf einen Anruf oder eine SMS zu warten)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=37538521&#34;&gt;Gegenrede&lt;/a&gt;: &amp;quot;Ich war dabei bei den meisten dieser alten Maschinen und meiner Erinnerung nach waren sie &lt;em&gt;immer&lt;/em&gt; langsam, weswegen es ein derart unerbittliches Rennen um das Upgrade auf eine schnellere Maschine gab, und warum für eine lange Zeit Leute jedes Jahr ihren alten Computer ersetzten. [...] Dieser Topos von &#39;wie konnten Dinge langsamer werden, damals war alles so schnell&#39; ist eine fehlerhafte Erinnerung&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=37538305&#34;&gt;andere Perspektive aus demselben Thread&lt;/a&gt;: &amp;quot;Weil wir erweiterbare anstatt zusammensetzbarer Software schreiben. Wir liefern nicht Funktionen aus, sondern Apps. Wieviele Instruktionen braucht man, um in Maschinensprache 1&#43;1 auszurechnen? Wieviele Instruktionen braucht man, um die Suchleiste zu öffnen, den Taschenrechner zu finden und die Berechnung auszuführen?&amp;quot;&lt;/li&gt;
&lt;li&gt;vgl. &lt;a href=&#34;https://freakshow.fm/fs273-papst-von-china&#34;&gt;Freak Show 273&lt;/a&gt; im Kapitel mit dem Nachruf auf Niklaus Wirth: in den 60ern vorherrschende Vorstellung unmittelbar bevorstehender Ablösung von Programmierern durch Computer, aber mehr Rechenleistung erfordert noch mehr Programmierer (vgl. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Softwarekrise&amp;amp;oldid=257790161&#34;&gt;Softwarekrise&lt;/a&gt;, für den Verweis auf kombinatorische Explosion von Software-Komplexität siehe STP070)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Komplexitätsquellen laut Wirth&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;verbesserte Benutzerführung und Funktionalität&amp;quot; laut Wirth keine gute Begründung
&lt;ul&gt;
&lt;li&gt;aber Wirth begründet das mittels seines eigenen extremen Fokus auf Basisfunktionalität (&amp;quot;Diese grundlegenden Aufgaben haben sich [... angesichts u. a. der] Ersetzung von aussagekräftigen Befehlswörtern durch hübsche Bilder [nicht geändert].&amp;quot;)&lt;/li&gt;
&lt;li&gt;Desktop-Metapher und Skeuomorphismus waren essentiell darin, Computersoftware einem breiten Publikum näherzubringen&lt;/li&gt;
&lt;li&gt;vgl. Brooks (essentielle vs. versehentliche Komplexität), aber unterschiedliche Grenzziehungen&lt;/li&gt;
&lt;li&gt;Wirth bevorzugt ziemlich explizit &amp;quot;simple&amp;quot; statt &amp;quot;easy&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;jede Funktion, die der Kunde haben will, wird eingebaut, ob sie sich nun sinnfällig in das ursprüngliche Design einfügt oder nicht
&lt;ul&gt;
&lt;li&gt;Komplexität durch Komplikationen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;monolithischer Systementwurf (&amp;quot;Jeder Kunde zahlt für alle Funktionen, aber nutzt nur wenige von ihnen.&amp;quot;)
&lt;ul&gt;
&lt;li&gt;vgl. oben &amp;quot;wir liefern nicht Funktionen aus, sondern Apps&amp;quot;&lt;/li&gt;
&lt;li&gt;Xyrill baut Systeme auch eher monolitisch, weil sich für ihn der Wartungsaufwand verringert, wenn alles in einer Codebase liegt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Komplexität wird an sich als Funktionalität missverstanden: &amp;quot;Immer mehr scheinen die Leute Komplexität als Raffinesse zu interpretieren, was rätselhaft ist — Unverständliches sollte Argwohn erregen, nicht Bewunderung.&amp;quot;
&lt;ul&gt;
&lt;li&gt;*hust* *hust* ✨KI✨ *hust* *hust*&lt;/li&gt;
&lt;li&gt;kapitalistischer Anreiz: damit Nutzer in der eigenen Teergrube binden und Support und Beratung verkaufen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;gutes Design erfordert systematische Iteration auf dem ersten, offensichtlichen, überkomplizierten Entwurf
&lt;ul&gt;
&lt;li&gt;vgl. Antoine de Saint-Exupéry (&amp;quot;Es scheint, dass Perfektion nicht dann erreicht ist, wenn nichts mehr hinzuzufügen ist, sondern wenn nichts mehr wegzunehmen ist.&amp;quot;)&lt;/li&gt;
&lt;li&gt;aber: Zeitdruck (&amp;quot;akribische Ingenieursroutine zahlt sich kurzfristig nicht aus&amp;quot;)&lt;/li&gt;
&lt;li&gt;Wirth drischt hier stark auf die Kunden ein, die ständig neuen Klimbim wollen, was etwas aus der Zeit gefallen wirkt (bzw. nur etwas deplatziert; heute sind &amp;quot;die Kunden&amp;quot; die Werbeabteilung, die noch mehr Datenspuren sammeln will)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;deswegen auch extrem langsame Einführung von Techniken für methodisches Arbeiten (z.B. stark typisierte Programmiersprachen): &amp;quot;Methodisch korrektes Design [...] ist offenbar unerwünscht, weil auf diese Weise entwickelte Produkte zu viel Zeit bis zur Markteinführung brauchen.&amp;quot;
&lt;ul&gt;
&lt;li&gt;Wirth beschwert sich, dass in den 90ern die Programmiertheorie der 70er (z.B. abstrakte Datentypen) erst langsam in Produktivumgebungen Einzug fand&lt;/li&gt;
&lt;li&gt;passend dazu kommt zurzeit die Programmiertheorie der 90er (z.B. algebraische Datentypen wie in STP072, affine Typsysteme) erst langsam in die heutigen Produktivumgebungen, aber C hält sich immer noch hartnäckig&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie heraus aus der Teergrube? Wirth bespricht sein eigenes &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Oberon_(Programmiersprache)&amp;amp;oldid=258424717&#34;&gt;Oberon System&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ursprüngliches Ziel: ein Betriebssystem inklusive Userspace, das kompakt genug ist, um als Lehrmaterial verwendet und in Lehrbüchern besprochen werden zu können&lt;/li&gt;
&lt;li&gt;extreme Konzentration auf &amp;quot;Grundfunktionen&amp;quot; (z.B. keine grafische Oberfläche, nur Textinteraktion)&lt;/li&gt;
&lt;li&gt;Implementation in einer typsicheren Programmiersprache mit Objektorientierung, um starke Modularität auf Codeebene zu ermöglichen
&lt;ul&gt;
&lt;li&gt;Xyrill ist hier etwas skeptisch, dass Objektorientierte Programmierung hier einen großen Unterschied macht, aber für Wirth ist das extrem wichtig&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;keine abgeschlossenen Programme, sondern nur Funktionsaufrufe
&lt;ul&gt;
&lt;li&gt;also vmtl. kein Speicherschutz in Hardware, sondern nur durch Typsicherheit&lt;/li&gt;
&lt;li&gt;&amp;quot;Wenn ein Modul M eine Prozedur P anbietet, dann kann P aufgerufen werden, indem man einfach auf den Text &#39;M.P&#39; zeigt, sobald er irgendwo auf dem Bildschirm erscheint, und eine Maustaste drückt&amp;quot;&lt;/li&gt;
&lt;li&gt;statt einer Leiste mit Icons eine einfache Textbox mit Befehlsnamen&lt;/li&gt;
&lt;li&gt;vgl. Plan 9, Smalltalk, Forth&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;der Preis des schlanken Systems ist der Aufwand für den sauberen Entwurf&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Am Ende neun Lektionen für das Design schlanker Software. Wir zitieren Nummer 7:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Reduktion von Komplexität und Größe muss in jedem Schritt das Ziel sein: im Lastenheft, im Design, und beim detaillierten Programmieren. Die Kompetenz eines Programmierers soll nach der Fähigkeit gemessen werden, einfache Lösungen zu finden, und ganz bestimmt nicht nach Produktivität, gemessen in &amp;quot;Anzahl Codezeilen, die pro Tag ausgeworfen werden&amp;quot;. Produktive Programmierer tragen zum sicheren Desaster bei.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:04:41" title="Warum ist Software immer weniger langlebig?"  />
          <chapter start="00:31:54" title="Warum waren Computer in den 90ern schneller?"  />
          <chapter start="00:49:33" title="Komplexitätsquellen laut Wirth"  />
          <chapter start="01:19:38" title="Wie heraus aus der Teergrube?"  />
      </chapters>
      <enclosure length="86045070" url="https://dl.xyrillian.de/noises/stp-086-literatur-ein-plaedoyer-fuer-schlanke-software.mp3" type="audio/mpeg"/>
      <enclosure length="52363367" url="https://dl.xyrillian.de/noises/stp-086-literatur-ein-plaedoyer-fuer-schlanke-software.ogg" type="audio/ogg"/>
      <enclosure length="31924639" url="https://dl.xyrillian.de/noises/stp-086-literatur-ein-plaedoyer-fuer-schlanke-software.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/086-literatur-ein-plaedoyer-fuer-schlanke-software/</guid>
    <pubDate>Thu, 26 Feb 2026 19:15:00 GMT</pubDate>
    <itunes:duration>89:17</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP085: Barrierefreiheit im Web (Teil 3)</itunes:title>
    <itunes:episode>85</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP085: Barrierefreiheit im Web (Teil 3)</title>
    <link>https://schluesseltechnologie-podcast.de/085-barrierefreiheit-im-web-teil-3</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem wir das eingegangene Feedback besprochen haben, starten wir zur letzten Etappe dieses überraschend ergiebigen Themas. Weder fehlt es an Anekdoten noch an vorbei fahrenden Krankenwagen und zuletzt müssen auch noch ein paar Worte über Spiele verloren werden.</itunes:summary>
    <description>Nachdem wir das eingegangene Feedback besprochen haben, starten wir zur letzten Etappe dieses überraschend ergiebigen Themas. Weder fehlt es an Anekdoten noch an vorbei fahrenden Krankenwagen und zuletzt müssen auch noch ein paar Worte über Spiele verloren werden.</description>
    <content:encoded>&lt;p&gt;Nachdem wir das eingegangene Feedback besprochen haben, starten wir zur letzten Etappe dieses überraschend ergiebigen Themas. Weder fehlt es an Anekdoten noch an vorbei fahrenden Krankenwagen und zuletzt müssen auch noch ein paar Worte über Spiele verloren werden.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;siehe STP081: gemäß des neuen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Barrierefreiheitsst%C3%A4rkungsgesetz&amp;amp;oldid=258239575&#34;&gt;Barrierefreiheitsstärkungsgesetzes&lt;/a&gt; müssen Webseiten und Webapplikationen die AA-Kriterien der WCAG 2.1 erfüllen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WCAG = &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Web_Content_Accessibility_Guidelines&amp;amp;oldid=254032297&#34;&gt;Web Content Accessibility Guidelines&lt;/a&gt; (Webinhalte-Barrierefreiheits-Richtlinien) der &lt;a href=&#34;https://www.w3.org/WAI/&#34;&gt;Web Accessibility Initiative&lt;/a&gt; des W3C&lt;/li&gt;
&lt;li&gt;Kriterien sind gruppiert in 4 Grundprinzipien und darin 13 Richtlinien&lt;/li&gt;
&lt;li&gt;Kriterien gehen jeweils von A (Pflicht) über AA (Kür) bis AAA (Sahnehäubchen)&lt;/li&gt;
&lt;li&gt;in STP081 und STP083: das Grundprinzip 1 (Wahrnehmbarkeit) und 2 (Bedienbarkeit) mit insgesamt neun Richtlinien, heute der Rest&lt;/li&gt;
&lt;li&gt;zum Mitlesen: &lt;a href=&#34;https://www.w3.org/TR/WCAG22/&#34;&gt;WCAG 2.2 (aktuelle Version, nur Englisch)&lt;/a&gt; oder &lt;a href=&#34;https://www.w3.org/Translations/WCAG20-de/&#34;&gt;WCAG 2.0 (etwas ältere Version, in offizieller deutscher Übersetzung)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundprinzip 3: &lt;strong&gt;Verständlichkeit&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Richtlinie 10: &lt;em&gt;Lesbarkeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Sprache der Webseite muss programmatisch auslesbar sein&lt;/li&gt;
&lt;li&gt;AA: Sprache jedes Teils der Webseite muss programmatisch auslesbar sein&lt;/li&gt;
&lt;li&gt;AAA: für ungewöhnliche Ausdrücke, Fachwörter und Abkürzungen soll eine Definition zugänglich sein; für komplizierte Texte (alles über Hauptschulniveau) soll eine Alternativform in einfacher Sprache vorliegen; Aussprachehinweise sollen zugänglich sein, sofern die Bedeutung eines geschriebenen Wortes von der Aussprache abhängt (z.B. &amp;quot;umfahren&amp;quot; vs. &amp;quot;umfahren&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 11: &lt;em&gt;Vorhersehbarkeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Bedienung von Steuerelementen soll nicht unvorhersehbar eine Seitennavigation oder dergleichen auslösen; Hilfemechanismen (inkl. Kontaktinformationen) müssen (sofern vorhanden) auf jeder Unterseite gleich funktionieren&lt;/li&gt;
&lt;li&gt;AA: Navigationsmechanismen und wiederholte Steuerelemente müssen auf jeder Unterseite gleich erscheinen und funktionieren&lt;/li&gt;
&lt;li&gt;AAA: Navigation nur aufgrund von expliziter Anforderung durch die Nutzer:in&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 12: &lt;em&gt;Hilfestellung bei der Eingabe&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: fehlerhafte Eingaben müssen klar hervorgehoben werden; benötigte Eingaben müssen klar als solche gekennzeichnet sein; Daten sollen nicht mehrmals abgefragt werden (beim zweiten Mal entweder automatisches Ausfüllen oder eine Option zur Datenübernahme), außer wenn Sicherheit es erfordert oder die vorliegenden Daten veraltet sind&lt;/li&gt;
&lt;li&gt;AA: bei fehlerhaften Eingaben sollen Korrekturvorschläge gegeben werden (soweit möglich; z.B. nicht, wenn Geheimniswahrung gefährdet wäre); rechtlich verbindliche Vorgänge sollen entweder umkehrbar sein oder einen separaten Bestätigungsschritt anbieten; Authentifizierung soll keine Tests für geistige Leistungsfähigkeit erfordern (z.B. für &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Captcha&amp;amp;oldid=257160068&#34;&gt;Captcha&lt;/a&gt; muss eine alternative Methode existieren, außer wenn der kognitive Test nur Bilderkennung oder Wiedererkennung vergangener Eingaben umfasst; Passwort-Manager-Blocker sind verboten)&lt;/li&gt;
&lt;li&gt;AAA: kontextsensitive Hilfe bei jeder Eingabe; jegliche formularbasierte Eingabe soll entweder umkehrbar sein oder einen separaten Bestätigungsschritt anbieten; Komplettverbot von Captchas ohne Alternativmethode, die keinen Test für geistige Leistungsfähigkeit umfasst&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundprinzip 4: &lt;strong&gt;Robustheit&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Richtlinie 13: &lt;em&gt;Kompatibilität&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: für alle Steuerelemente sind der Name und die Rolle programmatisch auslesbar (z.B. mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Accessible_Rich_Internet_Applications&amp;amp;oldid=254032608&#34;&gt;ARIA&lt;/a&gt; (&lt;em&gt;Accessible Rich Internet Applications&lt;/em&gt;, barrierefreie reichhaltige Internet-Anwendungen))&lt;/li&gt;
&lt;li&gt;AA: für alle Steuerelemente sind der aktuelle Status bzw. eventuelle Statusnachrichten programmatisch auslesbar (z.B. durch Screenreader)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Feedback zu STP003&lt;/h2&gt;
&lt;p&gt;Dominic schreibt Themenvorschläge, und außerdem:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vor kurzem ist mir &lt;a href=&#34;https://www.youtube.com/watch?v=_Pqfjer8-O4&#34;&gt;ein Video untergekommen, das die unterschiedlichen Gatter sehr anschaulich zeigt&lt;/a&gt; und das ich hiermit empfehlen möchte. (Allerdings empfehle ich das Englische original denn die deutsche Synchronisation ist eine ✨KI✨-Stimme)&lt;/p&gt;
&lt;p&gt;macht weiter so und vielen Dank&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Feedback zu STP084&lt;/h2&gt;
&lt;p&gt;Daniel schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Xyrill, hallo &lt;code&gt;stell es dir in einer unbekannten Fremdsprache vor&lt;/code&gt; ttimeless,&lt;/p&gt;
&lt;p&gt;TL,DR: macht &#39;ne Folge über alternative Betriebssysteme für Smartphones&lt;/p&gt;
&lt;p&gt;Ich habe euren Call for Action aus der Episode 84 des STP gehört. Bei mir liegt aktuell das Thema &lt;code&gt;Betriebssystem fürs Smartphone&lt;/code&gt; auf dem Tisch (dazu später mehr) und da habe ich mich gefragt, ob ihr dazu nicht eine Folge oder einen Teil einer Folge machen könnt.&lt;/p&gt;
&lt;p&gt;Xyrill sagte ja mal, er wechselt alle paar Jahre zwischen Android und iOS. ttimeless hat sich hierzu, glaube ich, noch nicht geäußert (Was mit Holz? &lt;em&gt;Zwinkersmiley&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Es gibt ja inzwischen einige Custom ROMs auf dem Markt und einige Projekte sind auch schon wieder eingestampft (dazu später mehr).&lt;/p&gt;
&lt;p&gt;Ich glaube, GrapheneOS wurde bei euch schon mal angesprochen, mindestens im Pentaradio. Das ist ja bekannt für seine Security Features  und Einstellmöglichkeiten, hat aber den klitzekleinen Nachteil, das es nur auf einer Hardware läuft (Google Pixel).&lt;/p&gt;
&lt;p&gt;Ubuntu Touch macht anscheinend auch Fortschritte. Außerdem schon lange verfügbar sind LineageOS und /e/os. Weitere: DivestOS, CalyxOS (dazu später mehr), Pixel Experience, usw, usf.&lt;/p&gt;
&lt;p&gt;Ich finde, auch im Zuge der Di.day Initiative lohnt sich ein Blick auf dieses Thema. Auch, wenn es hier ein gewisses Skill Level, die Fähigkeit zum Verzicht und Bock auf Bugs bzw Bastelfreude braucht, um mit einem alternativen Betriebssystem auf dem Smartphone unterwegs zu sein.&lt;/p&gt;
&lt;p&gt;Jetzt kommt das &amp;quot;später&amp;quot;: Ich habe mir im letzten Jahr ein Fairphone 4 angeschafft und mir CalyxOS draufgeholfen. Nur um kurz nach der Installation und Einrichtung die Nachricht von den Leutis vom Projekt zu erhalten, dass erstmal keine Updates mehr over-the-air ausgeliefert werden. Wie es mit dem Projekt weitergeht, kann ich ihrer Kommunikation leider nicht entnehmen. &lt;code&gt;¯\_(^^)_/¯&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ich brauche also bald mal ein neues Betriebssystem und ich dachte, ihr habt bestimmt was Spannendes dazu beizutragen. Sei es aus eigener Erfahrung und/oder aus eurem technikbegeisterten und technikversierten Umfeld.&lt;/p&gt;
&lt;p&gt;Der Endgegner in diesem Game ist übrigens die einzige App, die ich nicht durch FOSS ersetzen kann: die Banking-App...
Es liegt in der Natur der Sache, dass ich diese App nicht wie einen Messanger oder Musikstreamingdienst wechseln kann.&lt;/p&gt;
&lt;p&gt;Ich weiß, dass euer Wissensdampfer langsam den Eisberg umschifft (Lob der Sorgfalt) und ihr Zeit für die Produktion neuer Folgen braucht. Selbst wenn dieses Thema erst in einigen Monaten rankommen sollte, freue ich mich zu hören, was ihr dazu zu sagen habt.&lt;/p&gt;
&lt;p&gt;Ansonsten noch vielen Dank für viele unterhaltsame und lehrreiche Stunden und einen Podcast, bei dem ich schon einige Folgen  mehrfach gehört habe. Ganz stark.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Der im Gespräch erwähnte Datenspuren-Vortrag ist &lt;a href=&#34;https://media.ccc.de/v/ds25-517-na-endlich-linux-auf-dem-smartphone&#34;&gt;&amp;quot;Na endlich: Linux auf dem Smartphone&amp;quot;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Feedback zu STP081/083&lt;/h2&gt;
&lt;p&gt;Toni schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Lieber Xyrill, lieber ttimeless,&lt;/p&gt;
&lt;p&gt;ich wurde heute von einem Kollegen auf euren Podcast aufmerksam gemacht. Ausschlaggebend war eure kleine Episodenreihe zum Thema Barrierefreiheit im Web. Ich bin selbst geburtsblind und schon immer mit den Hürden im Netz konfrontiert, schlussendlich hat mich das dazu geführt, dass ich im Rahmen meiner Promotion derzeit zum Thema Zugänglichmachung von interaktiven visuellen Kollaborationswerkzeugen forsche. Studiert habe ich ursprünglich Spieleentwicklung.&lt;/p&gt;
&lt;p&gt;Ihr hattet in eurem Podcast zu Wortmeldungen von Betroffenen aufgefordert. Nun ist das ja schon eine Weile her - ihr meintet im Podcast, ihr nehmt die Folge Ende August auf, das sind ja immerhin schon 4 Monate. Ich finde es super, dass ihr in eurem Podcast über die Barrierefreiheit im Web aufklärt und würde mich noch viel mehr darüber freuen, wenn sie tatsächlich auch die Mehrheit umsetzen oder zumindest die Notwendigkeit dafür einsehen würde - in der Praxis wird man bei Nachfragen tatsächlich immer eher mit Skepsis und Unwillen konfrontiert, selbst aus der eher liberalen und auch der Open-Source-Community. Zudem ist das BFSG auch leider eher ein zahnloser Wolf - es gibt zwar Richtlinien, an die sich technisch jeder halten muss, insbesondere öffentliche Dienste und Dienstleister mit einer gewissen Mindestgröße, aber wo kein Kläger, da kein Richter. Menschen, die von Barrierefreiheit betroffen sind, befinden sich statistisch eher am unteren Ende der Existenzgrenze und machen sich mehr Sorgen um ihr täglich Brot als darüber, Geld in Klageverfahren zu stecken. Und selbst wenn damit Erfolg zu verzeichnen wäre, wäre gerade für große Firmen der Verlust immer noch sehr viel geringer, als das Investment, ihre Webpräsenzen von vornherein umzurüsten.&lt;/p&gt;
&lt;p&gt;Mein Ansatz hier ist daher, Barrierefreiheit direkt schon in der Lehre mitzudenken. Darum bin ich unter Anderem an der Hochschule Anhalt tätig und versuche, meine Studierenden von vornherein darauf einzuschwören.&lt;/p&gt;
&lt;p&gt;Ich könnte vermutlich einen halben Roman dazu verfassen, und auch auf den einen oder anderen Punkt aus eurem Episoden eingehen, aber wie zielführend das ist kann ich nicht sagen. Wenn euch so etwas interessiert, könnte man dazu aber ja gern mal quatschen, oder ihr fragt nochmal nach konkreten Kommentaren, dann setze ich mich hin und mache euch eine Liste fertig ;).&lt;/p&gt;
&lt;p&gt;Bis dahin habt ihr vermutlich einen neuen Hörer dazugewonnen, je nachdem, ob ich noch einen Podcast mehr in meinen täglichen Informationswust reinquätschen kann ;). Macht weiter so, haltet die Ohren steif, und viel Erfolg und Glück im Jahr 2026.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback von Dominik"  />
          <chapter start="00:02:25" title="Feedback von Daniel"  />
          <chapter start="00:10:19" title="Feedback von Toni"  />
          <chapter start="00:15:13" title="Intro und Begrüßung und Krankenwagen"  />
          <chapter start="00:18:55" title="Was bisher geschah"  />
          <chapter start="00:20:35" title="Grundprinzip 3: Verständlichkeit"  />
          <chapter start="00:20:42" title="Richtlinie 10: Lesbarkeit"  />
          <chapter start="00:33:39" title="Richtlinie 11: Vorhersehbarkeit"  />
          <chapter start="00:43:26" title="Richtlinie 12: Hilfestellung bei der Eingabe"  />
          <chapter start="01:01:51" title="Grundprinzip 4: Robustheit"  />
          <chapter start="01:04:35" title="Letzte Worte"  />
      </chapters>
      <enclosure length="70792995" url="https://dl.xyrillian.de/noises/stp-085-barrierefreiheit-im-web-teil-3.mp3" type="audio/mpeg"/>
      <enclosure length="42076261" url="https://dl.xyrillian.de/noises/stp-085-barrierefreiheit-im-web-teil-3.ogg" type="audio/ogg"/>
      <enclosure length="25862713" url="https://dl.xyrillian.de/noises/stp-085-barrierefreiheit-im-web-teil-3.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/085-barrierefreiheit-im-web-teil-3/</guid>
    <pubDate>Thu, 05 Feb 2026 21:00:00 GMT</pubDate>
    <itunes:duration>73:23</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP084: Cursed Computer Iceberg Meme, Runde 3</itunes:title>
    <itunes:episode>84</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP084: Cursed Computer Iceberg Meme, Runde 3</title>
    <link>https://schluesseltechnologie-podcast.de/084-cursed-computer-iceberg-meme-runde-3</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Mal wieder stehen uns angesichts der Merkwürdigkeit der Computertechnik die Haare zu Eisberge.</itunes:summary>
    <description>Mal wieder stehen uns angesichts der Merkwürdigkeit der Computertechnik die Haare zu Eisberge.</description>
    <content:encoded>&lt;p&gt;Mal wieder stehen uns angesichts der Merkwürdigkeit der Computertechnik die Haare zu Eisberge.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir setzen unsere Betrachtung des &lt;a href=&#34;https://suricrasia.online/iceberg/&#34;&gt;Cursed Computer Iceberg Meme&lt;/a&gt; aus STP042 und STP064 fort. Dieses Mal hat Xyrill sich vorgenommen, einen Pick aus jeder Ebene des Eisbergs zu besprechen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Above the Iceberg&amp;quot; - Oberhalb des Eisbergs: &lt;a href=&#34;https://meltdownattack.com/&#34;&gt;Spectre/Meltdown&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel eines Seitenkanalangriffs (vgl. Besprechung von nicht-zeitkonstanten Operationen in STP041)&lt;/li&gt;
&lt;li&gt;war damals (2018) auch &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20180123.html&#34;&gt;im Pentaradio besprochen worden&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;und im &lt;a href=&#34;https://chaosradio.de/cr242-einmaleinschmelzenbitte&#34;&gt;Chaosradio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Grundlage: moderne Prozessoren erzielen ihre Geschwindigkeit zu guten Teilen durch spekulative Ausführung zukünftiger Instruktionen (siehe STP011)&lt;/li&gt;
&lt;li&gt;Idee: Angreifer kann nicht auf geschützten Speicher zugreifen, aber die spekulative Ausführung weiß das nicht&lt;/li&gt;
&lt;li&gt;spekulativ ausgeführter (und dann verworfener) Befehl ist so gebaut, dass je nach dem Wert eines geschützten Bytes eine unterschiedliche Speicherseite angefasst wird&lt;/li&gt;
&lt;li&gt;dann Auslesen des Wert des Bytes durch Timing-Seitenkanal: zuletzt angefasste Speicherseite ist im Cache und schneller lesbar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;On the Iceberg&amp;quot; - Auf dem Eisberg: &lt;a href=&#34;https://superuser.com/a/1202556&#34;&gt;Schriftarten können Schadcode enthalten&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Kombo mit &amp;quot;Middle of the Iceberg&amp;quot; weiter unten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;Below the Water&amp;quot; - Unter der Wasserlinie: &lt;a href=&#34;https://www.youtube.com/watch?v=pdmODVYPDLA&#34;&gt;Magic the Gathering is Turing Complete&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;vgl. unsere Besprechung von &amp;quot;aus Versehen turingvollständig&amp;quot; in STP042 sowie von Turingmaschinen in STP063&lt;/li&gt;
&lt;li&gt;Kyle Hill hat dazu auch noch ein &lt;a href=&#34;https://www.youtube.com/watch?v=uDCj-QOp5gE&#34;&gt;neueres Video&lt;/a&gt; auf seinem eigenen Kanal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;Middle of the Iceberg&amp;quot; - Mitte des Eisbergs: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=TrueType&amp;amp;oldid=1305280909#Hinting_language&#34;&gt;Font-Hinting ist turingvollständig&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;noch ein Fall von &amp;quot;aus Versehen turingvollständig&amp;quot; (siehe STP042)&lt;/li&gt;
&lt;li&gt;Hinting: Anpassung der Form einer Glyphe an die tatsächliche Schriftgröße in Pixeln etc., um ungewollte Rasterisierungs-Artefakte zu reduzieren (&lt;a href=&#34;https://commons.wikimedia.org/w/index.php?title=File:Font-hinting-example.png&amp;amp;oldid=808481633&#34;&gt;grafisches Beispiel&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;in TrueType: Hinting in einer VM, die durch Code in der Schriftartendatei gesteuert wird; damit Einschleusung von Schadcode möglich, wenn diese VM Schwachstellen hat&lt;/li&gt;
&lt;li&gt;Problem: heute Schriftarten nicht nur im Betriebssystem vorinstalliert, sondern auch dynamisch geladen als Webfont&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;Bottom of the Iceberg&amp;quot; - Unterseite des Eisbergs: &lt;a href=&#34;https://www.gayle.com/blog/2015/5/31/the-problem-with-the-fizzbuzz-problem&#34;&gt;Es gibt keine elegante Lösung für FizzBuzz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;Below the Iceberg&amp;quot; - Unterhalb des Eisbergs: &lt;a href=&#34;https://ojs.aaai.org/index.php/aimagazine/article/view/2395&#34;&gt;SAT-Solver werden immer schneller&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;SAT (von engl. &amp;quot;satisfiability&amp;quot;): &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Erf%C3%BCllbarkeitsproblem_der_Aussagenlogik&amp;amp;oldid=256016000&#34;&gt;Erfüllbarkeitsproblem der Aussagenlogik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;relevant deswegen, weil man viele Probleme als SAT-Problem umformulieren kann (z.B. Sudoku, Raumplanung, Paketmanager)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;Deep Water&amp;quot; - Im tiefen Wasser: &lt;a href=&#34;https://developer.arm.com/documentation/dui0801/g/A64-Floating-point-Instructions/FJCVTZS&#34;&gt;FJCVTZS&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;FJCTVZS = &amp;quot;Floating-point Javascript Convert to Signed fixed-point, rounding toward Zero&amp;quot; (Konvertierung eines float64 in einen int32 mit Rundung zur Null hin und Modulo 2^32 bei Überlauf)&lt;/li&gt;
&lt;li&gt;ARM ist zwar RISC (siehe STP075), aber eine spezielle Instruktion für Zahlenumwandlungen in JavaScript-Engines ist offenbar doch wertvoll&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;The Abyss&amp;quot; - Der Abgrund: &lt;a href=&#34;https://www.dampfkraft.com/posuto.html&#34;&gt;Die große Adressdatei der japanischen Post&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;eine Lektion darin, wie wichtig saubere Daten sind, und dass man auf bei der Erstellung von Dateien auf ihre Verwendung achten muss (Parallele zu Dokumentation)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es gibt weiterhin mehr zu entdecken. Wir sehen uns wieder in STP105.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Begrüßung"  />
          <chapter start="00:03:57" title="Über Wiederholungen und Traditionen"  />
          <chapter start="00:07:30" title="Spectre/Meltdown"  />
          <chapter start="00:21:38" title="Schriftarten können Schadcode enthalten"  />
          <chapter start="00:24:28" title="Font-Hinting ist turingvollständig"  />
          <chapter start="00:35:02" title="Magic the Gathering is Turing Complete"  />
          <chapter start="00:40:44" title="Es gibt keine elegante Lösung für FizzBuzz"  />
          <chapter start="00:47:03" title="SAT-Solver werden immer schneller"  />
          <chapter start="00:56:40" title="FJCVTZS"  />
          <chapter start="00:59:37" title="Die große Adressdatei der japanischen Post"  />
      </chapters>
      <enclosure length="64815250" url="https://dl.xyrillian.de/noises/stp-084-cursed-computer-iceberg-meme-runde-3.mp3" type="audio/mpeg"/>
      <enclosure length="39245211" url="https://dl.xyrillian.de/noises/stp-084-cursed-computer-iceberg-meme-runde-3.ogg" type="audio/ogg"/>
      <enclosure length="24007969" url="https://dl.xyrillian.de/noises/stp-084-cursed-computer-iceberg-meme-runde-3.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/084-cursed-computer-iceberg-meme-runde-3/</guid>
    <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
    <itunes:duration>67:10</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP083: Barrierefreiheit im Web (Teil 2)</itunes:title>
    <itunes:episode>83</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP083: Barrierefreiheit im Web (Teil 2)</title>
    <link>https://schluesseltechnologie-podcast.de/083-barrierefreiheit-im-web-2</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Der versprochene zweite Teil ist da. Auch heute soll es darum gehen, wie eine angenehme Erfahrung im Internet und allgemein an Computern aussehen könnte. Zum Thema, ob wir alles geschafft haben, siehe Shownotes unten. Frohe Weihnachten allerseits.</itunes:summary>
    <description>Der versprochene zweite Teil ist da. Auch heute soll es darum gehen, wie eine angenehme Erfahrung im Internet und allgemein an Computern aussehen könnte. Zum Thema, ob wir alles geschafft haben, siehe Shownotes unten. Frohe Weihnachten allerseits.</description>
    <content:encoded>&lt;p&gt;Der versprochene zweite Teil ist da. Auch heute soll es darum gehen, wie eine angenehme Erfahrung im Internet und allgemein an Computern aussehen könnte. Zum Thema, ob wir alles geschafft haben, siehe Shownotes unten. Frohe Weihnachten allerseits.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;siehe STP081: gemäß des neuen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Barrierefreiheitsst%C3%A4rkungsgesetz&amp;amp;oldid=258239575&#34;&gt;Barrierefreiheitsstärkungsgesetzes&lt;/a&gt; müssen Webseiten und Webapplikationen die AA-Kriterien der WCAG 2.1 erfüllen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WCAG = &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Web_Content_Accessibility_Guidelines&amp;amp;oldid=254032297&#34;&gt;Web Content Accessibility Guidelines&lt;/a&gt; (Webinhalte-Barrierefreiheits-Richtlinien) der &lt;a href=&#34;https://www.w3.org/WAI/&#34;&gt;Web Accessibility Initiative&lt;/a&gt; des W3C&lt;/li&gt;
&lt;li&gt;Kriterien sind gruppiert in 4 Grundprinzipien und darin 13 Richtlinien&lt;/li&gt;
&lt;li&gt;Kriterien gehen jeweils von A (Pflicht) über AA (Kür) bis AAA (Sahnehäubchen)&lt;/li&gt;
&lt;li&gt;in STP081: das Grundprinzip 1 (Wahrnehmbarkeit) mit insgesamt vier Richtlinien, heute der Rest&lt;/li&gt;
&lt;li&gt;zum Mitlesen: &lt;a href=&#34;https://www.w3.org/TR/WCAG22/&#34;&gt;WCAG 2.2 (aktuelle Version, nur Englisch)&lt;/a&gt; oder &lt;a href=&#34;https://www.w3.org/Translations/WCAG20-de/&#34;&gt;WCAG 2.0 (etwas ältere Version, in offizieller deutscher Übersetzung)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundprinzip 2: &lt;strong&gt;Bedienbarkeit&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Richtlinie 5: &lt;em&gt;Zugänglichkeit per Tastatur&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: alle Aktionen per Tastatur ansteuerbar, die nicht eine genaue geometrische Ansteuerung erfordern (z.B. Zeichenfläche in einem Zeichenprogramm); kein Steuerelement kann den Tastaturfokus so fangen, dass man den Fokus nur mit einer anderweitigen Aktion (z.B. Mausklick) brechen kann; etc.&lt;/li&gt;
&lt;li&gt;AAA: ausnahmslos alle Aktionen per Tastatur ansteuerbar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 6: &lt;em&gt;Ausreichend Zeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: wenn Interaktionen ein Zeitlimit haben, muss das Limit (wann immer möglich) in irgendeiner Form umgehbar oder zurücksetzbar sein (Aufgaben sollen abschließbar sein, ohne dass ein Zeitlimit plötzlich den Fortschritt zunichte macht); jegliches automatische Bewegen/Scrollen/Blinken/Aktualisieren muss abschaltbar sein&lt;/li&gt;
&lt;li&gt;AAA: absolut keine Zeitlimits für Interaktionen; bei Relogin aufgrund abgelaufener Sitzung darf kein Fortschritt verloren gehen; Benutzer müssen jederzeit über laufende Zeitlimits informiert sein, die kürzer als 20 Stunden sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 7: &lt;em&gt;Keine Anfälle&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Inhalte, die mehr als 3x pro Sekunde blinken, müssen eine Intensität unter den Grenzwerten für Epilepsierisiko liegen&lt;/li&gt;
&lt;li&gt;AAA: gar kein Blinken schneller als 3x pro Sekunde; Animationen infolge von Benutzerinteraktionen müssen abschaltbar sein&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 8: &lt;em&gt;Navigierbarkeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: sinnvolle Titel auf jeder Seite; über mehrere Seiten wiederholte Informationen sind überspringbar; Steuerelemente haben eine sinnvolle Fokusreihenfolge; der Zweck von Links soll soweit wie möglich aus dem Linktext allein erkennbar sein (z.B. nicht &amp;quot;[Hier klicken], um den Kauf abzuschließen&amp;quot;)&lt;/li&gt;
&lt;li&gt;AA: statische Seiten sollen auf mehrere Wege auffindbar sein; Seiten sind mittels Teilüberschriften und Labels sinnvoll strukturiert; Tastaturfokus auf Steuerelementen soll klar erkennbar sein; Steuerelemente mit Fokus sollen nie komplett verdeckt sein (z.B. durch ein danebenliegendes Ausklappmenü); etc.&lt;/li&gt;
&lt;li&gt;AAA: aktueller Ort des Nutzers innerhalb einer Webseitenstruktur soll klar erkennbar sein (z.B. &amp;quot;Sie sind hier: [Start] &amp;gt; [Blog] &amp;gt; [Archiv] &amp;gt; Name des aktuellen Artikels&amp;quot;); etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 9: &lt;em&gt;Alternative Eingabemethoden&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Webseiten/-applikationen, die Mehrpunkt-Interaktion erlauben (&amp;quot;Touch-Gesten&amp;quot;), sollen auch eine Alternative für zeigerbasierte Einzelpunkt-Interaktion erlauben; Aktionen infolge fehlerhaften Runterdrückens der Maustaste sollen abwendbar oder umkehrbar sein; Interaktion durch Bewegungssteuerung soll auch durch Steuerelemente ersetzbar sein sowie gegen Fehlaktivierung resistent sein; etc.&lt;/li&gt;
&lt;li&gt;AA: Klickflächen müssen mindestens 24x24 CSS-Pixel groß sein (vgl. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fitts%E2%80%99_Gesetz&amp;amp;oldid=258729192&#34;&gt;Fitts&#39; Gesetz&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;AAA: Klickflächen müssen mindestens 44x44 CSS-Pixel groß sein; alternative Eingabemethoden sollen beliebig gleichzeitig nutzbar sein (ohne explizites Umschalten)&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Achilles_und_die_Schildkr%C3%B6te&amp;amp;oldid=258338766&#34;&gt;Zenons Paradoxon von Achilles und der Schildkröte&lt;/a&gt;, &lt;a href=&#34;https://www.youtube.com/watch?v=v5ev-RAg7Xs&#34;&gt;The Topological Problem with Voting (Video)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In Teil 3 dieser Serie folgen noch Grundprinzip 3 (Verständlichkeit) und 4 (Robustheit).</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Einstieg, Kurzauffrischung"  />
          <chapter start="00:02:51" title="Gute Kitas und Beautiful PRs"  />
          <chapter start="00:07:34" title="Richtlinie 6: Ausreichend Zeit"  />
          <chapter start="00:15:09" title="Richtlinie 5: Zugänglichkeit per Tastatur"  />
          <chapter start="00:22:41" title="Richtlinie 7: Keine Anfälle"  />
          <chapter start="00:29:17" title="Richtlinie 8: Navigierbarkeit"  />
          <chapter start="00:40:50" title="Richtlinie 9: Alternative Eingabemethoden"  />
          <chapter start="00:51:31" title="Es wird einen dritten Teil geben"  />
          <chapter start="00:52:35" title="Derailing: Der Wert von Allgemeinbildung"  />
      </chapters>
      <enclosure length="57855568" url="https://dl.xyrillian.de/noises/stp-083-barrierefreiheit-im-web-2.mp3" type="audio/mpeg"/>
      <enclosure length="34644790" url="https://dl.xyrillian.de/noises/stp-083-barrierefreiheit-im-web-2.ogg" type="audio/ogg"/>
      <enclosure length="21212542" url="https://dl.xyrillian.de/noises/stp-083-barrierefreiheit-im-web-2.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/083-barrierefreiheit-im-web-2/</guid>
    <pubDate>Thu, 25 Dec 2025 15:50:00 GMT</pubDate>
    <itunes:duration>59:55</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP082: Literatur: Vom Mythos des Mann-Monats, Teil 3</itunes:title>
    <itunes:episode>82</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP082: Literatur: Vom Mythos des Mann-Monats, Teil 3</title>
    <link>https://schluesseltechnologie-podcast.de/082-vom-mythos-des-mann-monats-part-3</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Als letzten Streich in der Besprechung dieses Werkes hört ihr einen Mitschnitt von den Datenspuren von 2025-09-19; und da wir leider nicht den ganzen Rest des Buches in unsere Bühnenzeit bekommen haben, auch noch den Rest in der gewohnten Form. Applaus für den Presenter!</itunes:summary>
    <description>Als letzten Streich in der Besprechung dieses Werkes hört ihr einen Mitschnitt von den Datenspuren von 2025-09-19; und da wir leider nicht den ganzen Rest des Buches in unsere Bühnenzeit bekommen haben, auch noch den Rest in der gewohnten Form. Applaus für den Presenter!</description>
    <content:encoded>&lt;p&gt;Als letzten Streich in der Besprechung dieses Werkes hört ihr einen Mitschnitt von den Datenspuren von 2025-09-19; und da wir leider nicht den ganzen Rest des Buches in unsere Bühnenzeit bekommen haben, auch noch den Rest in der gewohnten Form. Applaus für den Presenter!&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Fortsetzung aus STP068 und STP074. Wir lesen weiterhin die englische Erstausgabe von 1975, die &lt;a href=&#34;https://archive.org/details/MythicalManMonth&#34;&gt;im Internet Archive&lt;/a&gt; digitalisiert wurde.
Erneut als Vorbemerkung: Aus Quellentreue sagen wir &amp;quot;Mann-Monat&amp;quot; statt &amp;quot;Person-Monat&amp;quot;.&lt;/p&gt;
&lt;h3&gt;Kurzzusammenfassung der bisherigen Folgen&lt;/h3&gt;
&lt;p&gt;Für die Zuschauer im Saal, die die vergangenen Folgen nicht gehört haben. Das übergreifende Motiv in dieser ersten Hälfte des Buches ist, wie sich die Arbeit in großen Teams von kleinen Teams unterscheidet.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Die Teergrube
&lt;blockquote&gt;
&lt;p&gt;So wie man in der Teergrube erst gefangen ist, wenn alle Beine drinstecken, so resultiert die Trägheit von Software-Entwicklung aus einem Zusammenspiel mehrerer Faktoren. Ein Programm zu schreiben, ist einfach. Aber die Produktisierung erfordert viel mehr Aufwand: für Generalisierung, Testabdeckung, Dokumentation und fortlaufende Wartung. Außerdem muss sich das Programm in ein größeres System einfügen. Vom Programm zum Programmsystemprodukt erhöht sich der Aufwand um ungefähr eine ganze Größenordnung.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Vom Mythos des Mann-Monats
&lt;blockquote&gt;
&lt;p&gt;Konventionelle Planungsmethoden funktionieren nur, wenn Personen und Monate austauschbar sind. Das beachtet jedoch weder die unterschiedlichen Kompetenzniveaus verschiedener Teammitglieder noch den zusätzlichen Zeitaufwand durch Kommunikation innerhalb des Teams sowie zwischen Teams. Da Programmierer aber schlecht im Schätzen von Zeitaufwand sind, wird in der Praxis der Zeitplan oft an den Bedürfnissen der Kunden ausgerichtet, nicht an den technischen Randbedingungen. Wenn dann das Kind in den Brunnen gefallen ist, tritt das Brooks&#39;sche Gesetz in Kraft: &amp;quot;Das Hinzufügen weiteren Personals zu einem verspäteten Softwareprojekt verspätet es weiter.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Das OP-Team
&lt;blockquote&gt;
&lt;p&gt;Um die Kommunikationskosten zu verringern, stellt Brooks ein Modell für kleinere Teams vor, die in Analogie zu einem OP-Team organisiert sind, in dem immer nur einer auf einmal die eigentliche Programmierarbeit leistet und alle anderen nur zuarbeiten. Die genaue Beschreibung ist sicherlich überholt: Heutzutage braucht man zum Beispiel keinen Schreiber mehr, der Lochkarten sortiert. Aber vielleicht haben wir auch etwas verloren, als wir Sekretärsrollen ersetzt haben dadurch, dass jetzt die rare Expertin Termine im Outlook schubsen und Präsentationsfolien zusammenklicken muss.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Aristokratie, Demokratie und System-Design
&lt;blockquote&gt;
&lt;p&gt;Die Kathedrale von Reims wurde von acht Generationen von Baumeistern errichtet, weist aber trotzdem eine beachtliche gestalterische Kohärenz auf, weil die nachfolgenden Generationen das ursprüngliche Design respektiert haben. Daraus muss aber nicht folgen, dass ein einzelner Architekt alle Entscheidungen trifft und die Erbauer nur stupide die Pläne umsetzen. Auch auf der Umsetzungsebene gibt es viele interessante Designentscheidungen zu treffen; und ein guter Architekt hört auch auf seine Erbauer, wenn es um Fragen von Praktikabilität geht.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Das Problem des zweiten Systems
&lt;blockquote&gt;
&lt;p&gt;In diesem Dialog zwischen Architekt und Erbauer stellen sich also oftmals Ideen des Architekten als unpraktikabel heraus und werden verworfen. Doch wenn das erste System erfolgreich war, gewinnt der Architekt an Prestige und Erfahrung, die dazu verleiten kann, beim nächsten Mal alle Sachzwänge zu ignorieren. Ein weiteres klassisches Diktum von Brooks ist deswegen: &amp;quot;Dieses zweite ist das gefährlichste System, dass man jemals entwirft.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Weitergabe von Informationen
&lt;blockquote&gt;
&lt;p&gt;Damit ein Entwurf von 10 Architekt:innen von 1000 Mitarbeiter:innen und nochmal deutlich mehr Nutzer:innen verstanden wird, braucht es gute Dokumentation: Handbücher für Benutzer, und Architekturpläne für Erbauer. Brooks schlägt hier einiges vor, was heute in der Industrie gelebte Praxis ist (oder zumindest sein sollte), zum Beispiel maschinenlesbare Spezifikation von Schnittstellen und automatisierte Tests zur Überprüfung der Kompatibilität. Sein Ruf nach sorgfältiger Pro/Kontra-Abwägung zwischen mehreren möglichen Design-Optionen verhallt im Zeitalter agiler Softwareentwicklung jedoch oftmals ungehört.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;Warum ist der Turm zu Babel gefallen?
&lt;blockquote&gt;
&lt;p&gt;Offensichtlich ist ineffektive Kommunikation einer der wesentlichen Gründe dafür, dass Software-Großprojekte scheitern oder erst mit deutlicher Verspätung liefern. Somit stellt sich die Frage nach der optimalen Teamstruktur in einer Software-Entwicklungsabteilung. Brooks hält eine baumförmige Struktur für unausweichlich, damit Entscheidungskompetenzen klar geregelt sind. In jedem Entwicklungsteam sollte es sollte es neben einem Architekten (dem Chefentwickler des Teams) auch einen Produzenten geben, der sich um die Kommunikation mit anderen Teams kümmert. Da eine Personalunion zwischen beiden Rollen nicht skaliert, muss entweder der Architekt der Chef des Produzenten sein: Dies passt aber nicht zu den separaten Management-Karrieren in den großen Firmen. Oder der Produzent ist der Chef des Architekten: Dies kann aber nur funktionieren, wenn der Produzent die technische Autorität des Architekten akzeptiert.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Kapitel 8: &amp;quot;Calling the Shot&amp;quot;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Calling the Shot&amp;quot; hier im Baseball-Sinne: vorher ansagen, wo der Ball nach dem Schlag landet&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie lange wird eine System-Programmierungsaufgabe dauern? Wieviel Aufwand ist nötig? Wie schätzt man das?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem: Code schreiben alleine ist noch einigermaßen abschätzbar, macht aber nur einen kleinen Teil (vllt. ein Sechstel) des Gesamtaufwandes aus&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aufwand steigt exponentiell mit der Komplexität des Programmiersystems, weil Interaktionen zwischen verschiedenen Teilen des Systems beachtet werden müssen und Kompromisse im Design erfordern (vgl. Kapitel 1)&lt;/li&gt;
&lt;li&gt;und dann zusätzlicher Overhead, sobald Kommunikation zwischen mehreren Teammitgliedern erforderlich ist (vgl. Kapitel 2)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks fasst dann Erkenntnisse aus mehreren quantitativen Studien zusammen; Highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geschwindigkeitsschätzungen waren zu Beginn immer ziemlich akkurat, aber im Verlauf des Projektes wird mit zunehmender Komplexität alles immer träger&lt;/li&gt;
&lt;li&gt;Aufwand scheint am stärksten von der Gesamtmenge an Code abzuhängen (sprich: 1000 Zeilen Code sind ähnlicher Aufwand, unabhängig von der Sprache) -&amp;gt; Überleitung in das nächste Kapitel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 9: Zehn Pfund in einem Fünf-Pfund-Sack&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;wenn Code kein Wert an sich, sondern eine Verbindlichkeit ist, wie kann man Code reduzieren?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hochsprachen -&amp;gt; vgl. &amp;quot;No Silver Bullet&amp;quot; und intrinsiche vs. versehentliche Komplexität (&amp;quot;essential vs. accidental complexity&amp;quot;; besprochen im &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20221227.html&#34;&gt;Pentaradio vom Dezember 2022&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Xyrill sieht einen Bezug zum Hype um Coding-KI und die damit verbundenen Werbeversprechen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks zieht eine Parallele zu Hardware-Entwurf: &amp;quot;Weil die Größe ein wichtiger Teil der Benutzerkosten eines Programmiersystem-Produktes ist, muss der Erbauer Größenziele setzen, die Größe im Auge behalten, und Techniken zur Größenreduktion ersinnen; genau so, wie ein Hardware-Erbauer Komponentenzahlziele setzt, die Komponentenzahl im Auge behält, und Techniken zur Reduktion der Komponentenzahl ersinnt. Wie jede Art von Kosten ist Größe an sich nicht schlecht, aber überflüssige Größe ist es.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vgl. Kapitel 1 (siehe STP068), wo bereits ein vordefiniertes Ressourcenbudget für jedes Teilprogramm gefordert wurde&lt;/li&gt;
&lt;li&gt;heute (leider?) nicht mehr en vogue; Speicher ist zu günstig geworden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Repräsentation ist die Essenz des Programmierens&amp;quot;: Brooks hält den Entwurf passender Datenstrukturen für sehr viel relevanter als die Auswahl passender Algorithmen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill stimmt offensichtlicherweise zu, siehe STP071/072&lt;/li&gt;
&lt;li&gt;&amp;quot;Zeig mir deine Flussdiagramme ohne die [Datenbank-]Tabellen, und ich werde verwirrt bleiben. Zeig mir deine Tabellen, und ich werde die Flussdiagramme wahrscheinlich nicht brauchen; sie werden offensichtlich sein.&amp;quot;&lt;/li&gt;
&lt;li&gt;Xyrill vermutet, dass hierher seine tiefe Abneigung gegen Prozess-Designer rührt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 10: Die dokumentarische Hypothese&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Hypothese: Verborgen in einem riesigen Papierhaufen verborgen, werden eine kleine Zahl von Dokumenten zu kritischen Angelpunkten, um die sich das Management eines jeden Projektes dreht. Dies sind die zentralen Werkzeuge eines Managers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Auf einen neuen Manager, der gerade aus dem Handwerk gewechselt ist, erscheint der meiste Papierkram als vollständiges Ärgernis, als unnütze Ablenkung, und eine weiße Flut, die droht, ihn zu umspülen. Und in der Tat sind die meisten dieser Dokumente genau das.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;doch einige Dokumente sind essentiell und das wesentliche Arbeitsergebnis des Managers&lt;/li&gt;
&lt;li&gt;Mindestsatz laut Brooks: Zielsetzungen/Spezifikationen, Zeitplan, Budget, Ressourcenzuteilung, Personalzuteilung (letzteres vgl. Conway&#39;s Gesetz: &amp;quot;Organisationen, die Systeme entwerfen, sind gezwungen, Systeme hervorzubringen, die die Kommunikationsstruktur dieser Organisation kopieren.&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;wesentliche Funktionen von Dokumentation für den Manager:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Festhalten von Entscheidungen: Aufschreiben legt Widersprüche, Denkfehler und -lücken offen&lt;/li&gt;
&lt;li&gt;Kommunizieren von Entscheidungen: Manager sind die meiste Zeit Kommunikatoren und nur relativ selten tatsächlich Entscheider&lt;/li&gt;
&lt;li&gt;Erinnern von Entscheidungen: klare Dokumentation einer Entscheidung mit Begründung ermöglicht spätere Rezension und Entscheidung, wann eine Richtungsänderung angebracht ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 11: Plane damit, eines wegzuwerfen (&amp;quot;Plan to Throw One Away&amp;quot;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Analogie zu &lt;strong&gt;Pilotanlagen&lt;/strong&gt; in der Chemietechnik: beim Übergang von Laborprozessen zu Fabrikproduktion im großen Maßstab sind Skalierungsprobleme und methodische Fragen zu lösen, sodass man nicht sofort die Fabrikanlage in der finalen Größe bauen kann&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Plane damit, eines wegzuwerfen. Du wirst es sowieso tun.&amp;quot;&lt;/li&gt;
&lt;li&gt;Programmierer waren zu Brooks&#39; Zeiten damit beschäftigt, die Lektion zu lernen, und sind es heute immer noch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;damit im Zusammenhang: Wie geht man mit Veränderungen der Umstände um? Wieviel Veränderung der Umstände ist man bereit, zu akzeptieren?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These: Unwillen zur Dokumentation ist Unwillen, sich auf eine Entscheidung festzulegen, von der man schon weiß, dass sie immer nur vorläufig sein kann&lt;/li&gt;
&lt;li&gt;bis hin zu Teamstruktur: &amp;quot;In einem großen Projekt muss der Manager zwei oder drei Topprogrammierer als technische Kavallerie vorhalten, die zu Rettung galoppieren können, wo immer der Kampf am schwierigsten ist.&amp;quot; (Xyrill ist sich nicht sicher, ob er da mitgeht)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Software-Maintenance laut Brooks besteht hauptsächlich aus &amp;quot;Änderungen, die Designfehler beheben&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill stimmt nur im Teil zu: der meiste Aufwand bei Maintenance heutzutage ist &amp;quot;Bit Rot&amp;quot; (Umgang mit der stetig fortschreitenden Fäulnis im Ökosystem), also nur indirekt Behebung von Designfehlern&lt;/li&gt;
&lt;li&gt;jede Behebung eines Fehlers kann aber auch neue Fehler erzeugen (sowohl auf handwerklicher Ebene als auch auf Design-Ebene)&lt;/li&gt;
&lt;li&gt;automatisierte Tests helfen, sofern sie eine hinreichend gute Abdeckung erzielen und nicht so aufwändig sind, dass sie den Arbeitsprozess behindern&lt;/li&gt;
&lt;li&gt;trotzdem: Programme werden im Verlauf ihres Lebenszyklus immer komplexer, wodurch die Rate von Folgefehlern steigt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;der letzte Satz des Kapitels war bereits im Juni im Pentaradio zitiert: &amp;quot;Das Erbauen eines Programms ist ein entropieverringernder Prozess […] Die Wartung eines Programms ist ein entropieerhöhender Prozess, und selbst die gescheiteste Umsetzung kann das unausweichliche Absacken des Systems in unreparierbare Obsoleszenz höchstens verzögern.&amp;quot;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 12: Scharfe Werkzeuge&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Programmierer sind eine der wenigen Berufsstände, die ihre eigenen Werkzeuge bauen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;da Effizienz aus der Qualität des Instrumentariums folgt, sollen Softwareentwicklungs-Manager Ressourcen abstellen für &amp;quot;Werkzeugmacher&amp;quot;&lt;/li&gt;
&lt;li&gt;aber: heute anderer Fokus als damals; weniger Bedarf nach z.B. Debugging-Werkzeugen (das bringt die Programmiersprache mit) und mehr Bedarf nach z.B. CI/CD oder Linting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks bespricht dann Strategien, die nicht auf den allgemeinen Fall übertragbar sind&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rationierung der Rechenzeit auf raren Mainframes: heute haben wir überproportionierte PCs für jeden Entwickler, sowie elastische Cloud-Infrastruktur für alles, was da nicht heraufpasst&lt;/li&gt;
&lt;li&gt;Umgang mit Prerelease-Hardware: betrifft die allermeisten großen Software-Projekte nicht (aber siehe &lt;a href=&#34;https://media.ccc.de/v/32c3-7171-when_hardware_must_just_work&#34;&gt;dieser Vortrag von einem AMD-Chipdesigner&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks stellt als offensichtlich wertvolles Werkzeug Hochsprachen auf eine Stufe mit interaktiver Programmierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Ich bin überzeugt, dass nur Schwerfälligkeit und Faulheit die universelle Annahme dieser Werkzeuge aufhalten; die technischen Schwierigkeiten sind nicht länger valide Ausreden.&amp;quot;&lt;/li&gt;
&lt;li&gt;Vorteile von Hochsprachen: erhöhte Produktivität (aufgrund weniger Code; siehe Kapitel 8/9), weniger Programmierfehler (nicht nur aufgrund weniger Code, sondern weil ganze Fehlerklassen eliminiert werden)&lt;/li&gt;
&lt;li&gt;bei interaktiver Programmierung Bezug zu MIT Multics (dem Vorgänger von AT&amp;amp;T Unix): Xyrill hatte hier zuerst an Systeme wie Smalltalk gedacht, aber offenbar ist &amp;quot;interaktiv&amp;quot; hier das Gegenwort zu &amp;quot;Batch Processing&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 13: Das Ganze und die Teile&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Wie verhindert man Probleme beim Zusammenfügen mehrerer Teilprogramme zu einem Gesamtsystem?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brooks enumeriert hier viele bereits erwähnte Sachen: strukturierte Programmierung in Hochsprachen, Debugging (entweder interaktiv auf der Zielmaschine, oder post-mortem mit einem Speicherabbild), Tests (sowohl für Einzelkomponenten als auch das Gesamtsystem)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Missverständnisse bzw. Unklarheiten in der Spezifikation: siehe Kapitel 4-6 für Prozesse zum Erhalt der konzeptionellen Integrität des Gesamtsystems&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill beobachtet, dass das Schreiben der Spezifikation oftmals mehr Konzentration erfordert als das Schreiben des Code (hohe Entscheidungsdichte, dichtes Konsequenzgeflecht)&lt;/li&gt;
&lt;li&gt;Brooks empfiehlt einen Ansatz nach Niklaus Wirth: &amp;quot;Programmentwicklung durch schrittweises Verfeinern&amp;quot; mit verschiedenen Stufen von je nach Stufe möglichst groben Designs, die dann jeweils durch die nächste Stufe verfeinert werden&lt;/li&gt;
&lt;li&gt;Probleme beim Verfeinern stellen dann evtl. die Designfehler auf der gröberen Ebene bloß -&amp;gt; damit der Versuchung entgehen, ein schlechtes Grunddesign mit immer mehr Epizyklen zuzukleistern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Empfehlung: klare Markierungen, wenn zum Zwecke der Fehlerbehebung der dokumentierte Zustand des Systems manipuliert wird&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brooks beschreibt Verkabelung gemäß Plan mit gelben Kabeln und manuelle Änderungen mit lilanen Kabeln, damit diese ins Auge stechen und dann beim nächsten Update des Kabelplans berücksichtigt werden&lt;/li&gt;
&lt;li&gt;in Software nicht so sehr formalisiert, wie es sein sollte (am ehesten in Form von Systemen, die manuelle Änderungen am Produktivsystem unterbinden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;weitere Empfehlungen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;immer eine Komponente nach der anderen hinzufügen, nicht mehrere auf einmal&lt;/li&gt;
&lt;li&gt;Aktualisierungen nicht ständig einspielen, sondern nur ab und zu, damit man zwischendurch den stabilen Zustand des Systems beobachten kann&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 14: Wie man eine Katastrophe ausbrütet (&amp;quot;Hatching a Catastrophe&amp;quot;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Zeitpläne scheitern meist nicht durch ein großes Hindernis (auf welches mit einer großen Anstrengung reagiert würde), sondern durch eine Anhäufung kleiner Hindernisse&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vgl. politische Reaktion auf Versagen: Einsturz einer einzelnen Brücke mobilisiert sofort Unterstützung, aber schleichender Verfall aller Brücken ist alternativlos&lt;/li&gt;
&lt;li&gt;Tod durch tausend Schnitte: heute ist der Chefentwickler krank, morgen ist eine Festplatte auf dem Datenbankserver kaputt, übermorgen verspätet sich der Hardwaretest aufgrund Problemen in der Lieferkette&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Erkennen von Verspätungen erfordert einen festen Zeitplan mit spezifischen Meilensteinen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gegenbeispiel: &amp;quot;Implementation 90% fertig&amp;quot; stimmt so gut wie immer :)&lt;/li&gt;
&lt;li&gt;&amp;quot;Chronisches Überziehen des Zeitplans ist ein Teammoral-Killer.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Aber die anderen sind auch zu spät dran.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;trotzdem ist es ratsam, sich selber ranzuhalten, damit man nicht auf dem &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Methode_des_kritischen_Pfades&amp;amp;oldid=249068045&#34;&gt;kritischen Pfad&lt;/a&gt; landet und dann das ganze Großprojekt ins Stocken bringt&lt;/li&gt;
&lt;li&gt;Manager sollten den kritischen Pfad kennen, damit sie rechtzeitig wissen, wo ihre Aufmerksamkeit am wertvollsten ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 15: Das andere Gesicht&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Ein Computerprogramm ist eine Nachricht des Menschen an die Maschine. [...] Aber ein geschriebenes Programm hat ein anderes Gesicht, dasjenige, dass seine Geschichte dem menschlichen Benutzer erzählt.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;selbst für Programme für den eigenen Gebrauch, damit man sich in einem Jahr noch daran erinnert, was das Programm tut&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks möchte, dass Dokumentation aus drei Teilen besteht&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wie man ein Programm verwendet (klar)&lt;/li&gt;
&lt;li&gt;wie man dem Programm glaubt (Testfälle zum Ausprobieren)&lt;/li&gt;
&lt;li&gt;wie man das Programm verändert (Dokumentation über die interne Struktur, das Dateilayout, verwendete Algorithmen und Datenstrukturen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Brooks findet Strukturdiagramme super, und Flowcharts scheiße: man solle lieber äquivalenten (Pseudo-)Code hinschreiben&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill stimmt zu: die meisten Flowcharts aus der Praxis sind abgrundtief hässlich und unlesbar chaotisch&lt;/li&gt;
&lt;li&gt;Ergebnis: der Code sollte einfach selbstdokumentierend sein bzw. seine Dokumentation inline enthalten (vgl. Donald Knuth und &amp;quot;Literate Programming&amp;quot;)&lt;/li&gt;
&lt;li&gt;offensichtlich ist das alles aus der Zeit, bevor Software ein einzeln verkauftes Produkt war&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt: &lt;a href=&#34;https://aosabook.org/en/index.html&#34;&gt;The Architecture of Open Source Applications&lt;/a&gt;; ein Buch darüber, guten Open-Source-Code zu lesen und zu durchdringen&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Epilog&lt;/h3&gt;
&lt;p&gt;&amp;quot;Die Teergrube der Software-Entwicklung wird noch eine ganze Weile klebrig bleiben. Man kann davon ausgehen, dass die Menschheit auch weiterhin Systeme in Angriff nehmen wird, die gerade so innerhalb oder gerade so außerhalb des Möglichen liegen; und Softwaresysteme sind vielleicht die vertracktesten und komplexesten aller menschlichen Schöpfungen. Das Verwalten dieses komplexen Handwerks wird von uns fordern: den bestmöglichen Einsatz neuer Sprachen und Systeme, die optimale Anwendung bewährter Methoden des Ingenieurmanagements, großzügige Mengen gesunden Menschenverstandes, und die gottgegebene Demut, die eigene Fehlbarkeit und Beschränkungen zu erkennen.&amp;quot;&lt;/p&gt;
&lt;h3&gt;Podcast-Empfehlungen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.acbstories.com/work/gilda-con-arne&#34;&gt;Gilda con Arne – Der Politik-Podcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dlf Doku Serien
&lt;ul&gt;
&lt;li&gt;einige Trailer für Dokus&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.deutschlandradio.de/tech-bro-topia-100.html&#34;&gt;Tech Bro Topia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.deutschlandradio.de/rechtsextreme-vor-gericht-dokuserie-100.html&#34;&gt;Rechtsextreme vor Gericht&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.deutschlandfunkkultur.de/hoerspielmagazin-gespraech-neuland-sechsteilige-feature-100.html&#34;&gt;Neuland&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.deutschlandradio.de/die-geschichte-geht-weiter-100.html&#34;&gt;Die Geschichte geht weiter – Victor Klemperers Tagebücher 1918-1958&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:03:45" title="Kurzzusammenfassung der bisherigen Folgen"  />
          <chapter start="00:05:26" title="1. Die Teergrube"  />
          <chapter start="00:05:56" title="2. Vom Mythos des Mann-Monats"  />
          <chapter start="00:06:51" title="3. Das OP-Team"  />
          <chapter start="00:07:23" title="4. Aristokratie, Demokratie und System-Design"  />
          <chapter start="00:07:51" title="5. Das Problem des zweiten Systems"  />
          <chapter start="00:08:15" title="6. Weitergabe von Informationen"  />
          <chapter start="00:08:47" title="7. Warum ist der Turm zu Babel gefallen?"  />
          <chapter start="00:09:51" title="Kapitel 8: Calling the Shot"  />
          <chapter start="00:14:53" title="Kapitel 9: Zehn Pfund in einem Fünf-Pfund-Sack"  />
          <chapter start="00:24:02" title="Kapitel 10: Die dokumentarische Hypothese"  />
          <chapter start="00:29:30" title="Kapitel 11: Plane damit, eines wegzuwerfen"  />
          <chapter start="00:44:15" title="Kapitel 12: Scharfe Werkzeuge"  />
          <chapter start="01:04:15" title="Kapitel 13: Das Ganze und die Teile"  />
          <chapter start="01:18:17" title="Kapitel 14: Wie man eine Katastrophe ausbrütet"  />
          <chapter start="01:24:33" title="Kapitel 15: Das andere Gesicht"  />
          <chapter start="01:34:26" title="Resümee"  />
          <chapter start="01:36:25" title="Epilog"  />
      </chapters>
      <enclosure length="97616082" url="https://dl.xyrillian.de/noises/stp-082-vom-mythos-des-mann-monats-part-3.mp3" type="audio/mpeg"/>
      <enclosure length="58739460" url="https://dl.xyrillian.de/noises/stp-082-vom-mythos-des-mann-monats-part-3.ogg" type="audio/ogg"/>
      <enclosure length="36037260" url="https://dl.xyrillian.de/noises/stp-082-vom-mythos-des-mann-monats-part-3.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/082-vom-mythos-des-mann-monats-part-3/</guid>
    <pubDate>Thu, 04 Dec 2025 21:00:00 GMT</pubDate>
    <itunes:duration>101:20</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP081: Barrierefreiheit im Web (Teil 1)</itunes:title>
    <itunes:episode>81</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP081: Barrierefreiheit im Web (Teil 1)</title>
    <link>https://schluesseltechnologie-podcast.de/081-barrierefreiheit-im-web-1</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Es gibt Menschen, die körperliche oder mentale Einschränkungen haben. Für diese Menschen könnte unsere Welt angenehmer gestaltet werden. Welche Vorteile auch nicht behinderte Menschen aus entsprechenden Maßnahmen ziehen und was diese Maßnahmen sind, darum soll es heute gehen. Und an einem anderen Tag auch.</itunes:summary>
    <description>Es gibt Menschen, die körperliche oder mentale Einschränkungen haben. Für diese Menschen könnte unsere Welt angenehmer gestaltet werden. Welche Vorteile auch nicht behinderte Menschen aus entsprechenden Maßnahmen ziehen und was diese Maßnahmen sind, darum soll es heute gehen. Und an einem anderen Tag auch.</description>
    <content:encoded>&lt;p&gt;Es gibt Menschen, die körperliche oder mentale Einschränkungen haben. Für diese Menschen könnte unsere Welt angenehmer gestaltet werden. Welche Vorteile auch nicht behinderte Menschen aus entsprechenden Maßnahmen ziehen und was diese Maßnahmen sind, darum soll es heute gehen. Und an einem anderen Tag auch.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;seit 28. Juni 2025 gilt das &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Barrierefreiheitsst%C3%A4rkungsgesetz&amp;amp;oldid=258239575&#34;&gt;Barrierefreiheitsstärkungsgesetz&lt;/a&gt; als nationale Umsetzung der &lt;a href=&#34;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32019L0882&#34;&gt;EU-Richtlinie 2019/882 über die Barrierefreiheitsanforderungen für Produkte und Dienstleistungen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gilt insbesondere auch für alle digitalen Dienstleistungen (Webseiten, Apps, Ticketautomaten, etc.)&lt;/li&gt;
&lt;li&gt;Leitmotiv heute: Ist das nur was für Menschen mit Behinderungen?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Webseiten und Webapplikationen müssen die AA-Kriterien der WCAG 2.1 erfüllen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WCAG = &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Web_Content_Accessibility_Guidelines&amp;amp;oldid=254032297&#34;&gt;Web Content Accessibility Guidelines&lt;/a&gt; (Webinhalte-Barrierefreiheits-Richtlinien) der &lt;a href=&#34;https://www.w3.org/WAI/&#34;&gt;Web Accessibility Initiative&lt;/a&gt; des W3C&lt;/li&gt;
&lt;li&gt;WCAG 2.2 (aktuelle Version von 2024) enthält eine Reihe von Kriterien, gruppiert in 4 Grundprinzipien und darin 13 Richtlinien&lt;/li&gt;
&lt;li&gt;Kriterien gehen jeweils von A (Pflicht) über AA (Kür) bis AAA (Sahnehäubchen)&lt;/li&gt;
&lt;li&gt;zum Mitlesen: &lt;a href=&#34;https://www.w3.org/TR/WCAG22/&#34;&gt;WCAG 2.2 (aktuelle Version, nur Englisch)&lt;/a&gt; oder &lt;a href=&#34;https://www.w3.org/Translations/WCAG20-de/&#34;&gt;WCAG 2.0 (etwas ältere Version, in offizieller deutscher Übersetzung)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundprinzip 1: &lt;strong&gt;Wahrnehmbarkeit&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Richtlinie 1: &lt;em&gt;Textalternativen&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Textalternativen für alle Nicht-Text-Inhalte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 2: &lt;em&gt;Alternativen für zeitbasierte Medien&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Audiobeschreibung oder Alternativdarstellung für voraufgezeichnete Bewegtbilder, Untertitel für voraufgezeichnete Videos mit Ton&lt;/li&gt;
&lt;li&gt;AA: Untertitel für Live-Videos etc.&lt;/li&gt;
&lt;li&gt;AAA: Gebärdenübersetzung für Sprache in Audio/Video etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 3: &lt;em&gt;Anpassbarkeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Struktur und Beziehungen in dargestellter Information sollen programmatisch auslesbar sein (z.B. in HTML Strukturierung anhand semantisch aufgeladener Tags wie &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;); Darstellung soll in korrekter Lesereihenfolge erfolgen; Struktur der Information soll nicht nur aus sensorischen Charakteristika wie Form, Farbe, visueller Anordnung oder Klängen hervorgehen&lt;/li&gt;
&lt;li&gt;AA: Inhalte sollen sowohl in Hochformat als auch Querformat funktionieren; Eingabefelder sollen programmatisch als solche erkennbar sein&lt;/li&gt;
&lt;li&gt;AAA: alle Steuer- und Inhaltselemente sollen programmatisch auslesbar sein&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Rot-Gr%C3%BCn-Sehschw%C3%A4che&amp;amp;oldid=257718299&#34;&gt;Rot-Grun-Sehschwäche&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Richtlinie 4: &lt;em&gt;Unterscheidbarkeit&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;A: Farbe nicht als einziges Unterscheidungsmerkmal (z.B. zwischen guten und schlechten Optionen); Abspielen von Audioinhalten soll durch den Nutzer kontrollierbar sein&lt;/li&gt;
&lt;li&gt;AA: Text- und Hintergrundfarben sollen ein Kontrastverhältnis von mindestens 4.5:1 aufweisen (außerdem 3:1 für aktive Steuerelemente); Text soll ohne Spezialwerkzeuge um bis zu 200% vergrößerbar sein; Inhalte sollen unabhängig vom Bildschirmformat ohne exzessives Scrolling erreichbar sein; etc.&lt;/li&gt;
&lt;li&gt;AAA: Kontrastverhältnis für Text mindestens 7:1; Audio mit Sprache soll geringe Hintergrundgeräusche aufweisen; Text soll mit kurzen Zeilenlängen und mindestens anderthalbfachem Zeilenabstand dargestellt werden; reiner Text soll nicht als Bilddatei ausgespielt werden; etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Einstieg"  />
          <chapter start="00:01:30" title="Das Barrierefreiheitsstärkungsgesetz"  />
          <chapter start="00:11:51" title="Web Content Accessibility Guidelines"  />
          <chapter start="00:18:19" title="Grundprinzip 1: Wahrnehmbarkeit"  />
          <chapter start="00:19:00" title="Richtlinie 1: Textalternativen"  />
          <chapter start="00:22:08" title="Richtlinie 2: Alternativen für zeitbasierte Medien"  />
          <chapter start="00:29:47" title="Richtlinie 3: Anpassbarkeit"  />
      </chapters>
      <enclosure length="62619687" url="https://dl.xyrillian.de/noises/stp-081-barrierefreiheit-im-web-1.mp3" type="audio/mpeg"/>
      <enclosure length="39351670" url="https://dl.xyrillian.de/noises/stp-081-barrierefreiheit-im-web-1.ogg" type="audio/ogg"/>
      <enclosure length="23681612" url="https://dl.xyrillian.de/noises/stp-081-barrierefreiheit-im-web-1.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/081-barrierefreiheit-im-web-1/</guid>
    <pubDate>Thu, 13 Nov 2025 00:10:00 GMT</pubDate>
    <itunes:duration>64:52</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP080: Common Weakness Enumeration (Teil 2)</itunes:title>
    <itunes:episode>80</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP080: Common Weakness Enumeration (Teil 2)</title>
    <link>https://schluesseltechnologie-podcast.de/080-common-weakness-enumeration-part-2</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Im zweiten Teil zu üblichen Schwachstellen hören wir neben einigen Querverweisen auch Xyrills Meinung zu seiner favorisierten Verwundbarkeit.</itunes:summary>
    <description>Im zweiten Teil zu üblichen Schwachstellen hören wir neben einigen Querverweisen auch Xyrills Meinung zu seiner favorisierten Verwundbarkeit.</description>
    <content:encoded>&lt;p&gt;Im zweiten Teil zu üblichen Schwachstellen hören wir neben einigen Querverweisen auch Xyrills Meinung zu seiner favorisierten Verwundbarkeit.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Platz 9: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/862.html&#34;&gt;CWE-862&lt;/a&gt;; fehlende Autorisierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe Besprechung von Authentifizierung und Autorisierung in STP039&lt;/li&gt;
&lt;li&gt;Lösung: Just do it! :)&lt;/li&gt;
&lt;li&gt;passend dazu Platz 14 und 18: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/287.html&#34;&gt;CWE-287&lt;/a&gt; und &lt;a href=&#34;https://cwe.mitre.org/data/definitions/863.html&#34;&gt;CWE-863&lt;/a&gt;; fehlerhafte Authentifizierung bzw. Autorisierung&lt;/li&gt;
&lt;li&gt;außerdem Platz 15: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/269.html&#34;&gt;CWE-269&lt;/a&gt;; unzureichende Privilegienkontrolle&lt;/li&gt;
&lt;li&gt;als Sonderfall Platz 25: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/306.html&#34;&gt;CWE-306&lt;/a&gt;; fehlende Authentifizierung an kritischer Stelle&lt;/li&gt;
&lt;li&gt;daraus folgend Platz 17: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/200.html&#34;&gt;CWE-200&lt;/a&gt;; Preisgabe sensitiver Informationen an nicht Zugriffsberechtigte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 10: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/434.html&#34;&gt;CWE-434&lt;/a&gt;; Unbeschränktes Hochladen von Dateien des falschen Typs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;und dadurch z.B. Einschleusung von Schadcode (Xyrill fühlt sich an den &amp;quot;OpenOffice kann dienstags nicht drucken&amp;quot;-Bug erinnert)&lt;/li&gt;
&lt;li&gt;Lösung: nur bekannte Formate akzeptieren&lt;/li&gt;
&lt;li&gt;passend dazu Platz 16: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/502.html&#34;&gt;CWE-502&lt;/a&gt;; Deserialisieren unvertrauenswürdiger Daten&lt;/li&gt;
&lt;li&gt;Lösung: unbekannte Daten mit &lt;a href=&#34;https://github.com/google/wuffs&#34;&gt;sicheren Parsern&lt;/a&gt; validieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 21: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/476.html&#34;&gt;CWE-476&lt;/a&gt;; Zugriff auf Nullzeiger&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;besprochen in STP045&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 22: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/798.html&#34;&gt;CWE-798&lt;/a&gt;; Zugriff mit hartkodierten Anmeldedaten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In wieviele Plasterouter kommt man wohl immer noch mit Username &lt;code&gt;admin&lt;/code&gt; und Passwort &lt;code&gt;letmein&lt;/code&gt; rein? :)&lt;/li&gt;
&lt;li&gt;tatsächlich auch bei Enterprise-Hardware oftmals Standardpasswörter voreingestellt, die dann beim Einrichten (versehentlich?) nicht geändert werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 23: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/190.html&#34;&gt;CWE-190&lt;/a&gt;; Ganzzahlüberlauf (&amp;quot;Integer Overflow or Wraparound&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;besprochen in STP003 (Überlauf in Logikgattern) und STP037 (berühmte Überlauffehler)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 24: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/400.html&#34;&gt;CWE-400&lt;/a&gt;; unkontrollierter Ressourcenverbrauch&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rückbezug zu STP079 (Komplexitätsattacke in Hashmaps)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;außerdem noch Xyrills Favorit: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/655.html&#34;&gt;CWE-655&lt;/a&gt;; unzureichende psychologische Akzeptabilität :)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:10" title="CWE-287/863: Fehlerhafte Authentifizierung bzw. Autorisierung"  />
          <chapter start="00:08:47" title="CWE-862: Fehlende Autorisierung"  />
          <chapter start="00:11:44" title="CWE-269: Unzureichende Privilegienkontrolle"  />
          <chapter start="00:13:33" title="CWE-306: Fehlende Authentifizierung an kritischer Stelle"  />
          <chapter start="00:16:54" title="CWE-434: Unbeschränktes Hochladen von Dateien des falschen Typs"  />
          <chapter start="00:23:30" title="CWE-502: Deserialisieren unvertrauenswürdiger Daten"  />
          <chapter start="00:24:08" title="CWE-476: Zugriff auf Nullzeiger"  />
          <chapter start="00:26:35" title="CWE-798: Zugriff mit hartkodierten Anmeldedaten"  />
          <chapter start="00:30:47" title="CWE-190: Ganzzahlüberlauf"  />
          <chapter start="00:32:47" title="CWE-400: Unkontrollierter Ressourcenverbrauch"  />
          <chapter start="00:33:36" title="CWE-655: Unzureichende psychologische Akzeptabilität"  />
      </chapters>
      <enclosure length="37622211" url="https://dl.xyrillian.de/noises/stp-080-common-weakness-enumeration-part-2.mp3" type="audio/mpeg"/>
      <enclosure length="23528215" url="https://dl.xyrillian.de/noises/stp-080-common-weakness-enumeration-part-2.ogg" type="audio/ogg"/>
      <enclosure length="14335464" url="https://dl.xyrillian.de/noises/stp-080-common-weakness-enumeration-part-2.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/080-common-weakness-enumeration-part-2/</guid>
    <pubDate>Thu, 23 Oct 2025 08:50:00 GMT</pubDate>
    <itunes:duration>38:50</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP079: Feld von Feldern</itunes:title>
    <itunes:episode>79</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP079: Feld von Feldern</title>
    <link>https://schluesseltechnologie-podcast.de/079-feld-von-feldern</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach einem kurzen Feedback gehen wir diesmal zu Karten… nein, Abbildungen über. Das ist am Anfang kein Problem. Nur wenn die Eimer für Streuwertfunktionen kleiner werden, hat ttimeless etwas Schwierigkeiten.</itunes:summary>
    <description>Nach einem kurzen Feedback gehen wir diesmal zu Karten… nein, Abbildungen über. Das ist am Anfang kein Problem. Nur wenn die Eimer für Streuwertfunktionen kleiner werden, hat ttimeless etwas Schwierigkeiten.</description>
    <content:encoded>&lt;p&gt;Nach einem kurzen Feedback gehen wir diesmal zu Karten… nein, Abbildungen über. Das ist am Anfang kein Problem. Nur wenn die Eimer für Streuwertfunktionen kleiner werden, hat ttimeless etwas Schwierigkeiten.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP077: Liste von Listen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;verschiedene Datenstrukturen implementieren dasselbe Datenformat mit unterschiedlichen Laufzeitcharakteristiken&lt;/li&gt;
&lt;li&gt;heute analog dazu Besprechung von assoziativen Datenfeldern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP072: assoziative Datenfelder (wir sagen hier &amp;quot;Maps&amp;quot;; heißt je nach Programmiersprache auch &amp;quot;Objekt&amp;quot;, &amp;quot;Dictionary&amp;quot;, etc.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eine Sammlung von Wertepaaren mit jeweils einem eindeutigen Schlüssel (&amp;quot;Key&amp;quot;) und einem zugeordneten Wert (&amp;quot;Value&amp;quot;)&lt;/li&gt;
&lt;li&gt;z.B. Wörterbuch: Schlüssel ist das Lemma, Wert ist die Definition&lt;/li&gt;
&lt;li&gt;z.B. Verzeichnis im Dateisystem: Schlüssel ist der Dateiname, Wert ist die Datei (bzw. das Unterverzeichnis)&lt;/li&gt;
&lt;li&gt;praktisches Beispiel: Wörter zählen&lt;/li&gt;
&lt;li&gt;es geht hier nur um Wertepaare, die aktiv im Speicher vorliegen, nicht um berechnete Abbildungen (Gegenbeispiel: Suchmaschine bildet von Suchanfrage auf Ergebnisseite ab)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ansatz 1: &amp;quot;Sammlung von Wertepaaren&amp;quot; als Liste umsetzen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sofern unsortiert, ist die algorithmische Komplexität für die meisten Operationen sehr schlecht
&lt;ul&gt;
&lt;li&gt;z.B. Suchen nach einem bestimmten Schlüssel in linearer Zeit (&lt;code&gt;O(n)&lt;/code&gt;), wenn man die Liste von vorne nach hinten durchgehen muss&lt;/li&gt;
&lt;li&gt;z.B. Einfügen eines neuen Schlüssels auch nur in linearer Zeit, weil man einen evtl. existierenden Eintrag mit demselben Schlüssel finden und ersetzen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;praktikable Umsetzung unter Verwendung einer sortierten Liste, um bestimmte Schlüssel schnell aufzufinden
&lt;ul&gt;
&lt;li&gt;meistens mittels eines balancierten Baums, z.B. in Rust &lt;a href=&#34;https://doc.rust-lang.org/std/collections/struct.BTreeMap.html&#34;&gt;BTreeMap&lt;/a&gt; oder in C&#43;&#43; &lt;a href=&#34;https://cppreference.com/w/cpp/container/map.html&#34;&gt;std::map&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Problem: Schlüssel müssen sortierbar sein (Beispiel: Strings, Ganzzahlen; Gegenbeispiel: komplexe Zahlen, Fließkommazahlen, ungeordnete Mengen)&lt;/li&gt;
&lt;li&gt;Problem: auch bei sortierbaren Schlüsseln können Vergleiche teuer sein&lt;/li&gt;
&lt;li&gt;Wie können wir die Vergleiche günstiger machen?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ansatz 2: Vorsortierung anhand von Streuwertfunktionen (Hashes)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: bei Suche nach einem bestimmten Schlüssel wird ein Hash des Schlüssels ermittelt (in Größenordnung einer kleinen Ganzzahl, z.B. 4 oder 8 Byte; nicht ein kryptografisch starker Hash wie SHA-2 mit 28-64 Bytes); damit schnelle Vergleiche möglich -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Hashtabelle&amp;amp;oldid=255127849&#34;&gt;Hashtabelle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Strategie 1: Gruppierung der Wertepaare in &amp;quot;Buckets&amp;quot; anhand der ersten K Bits des Hash-Wertes des Schlüssels
&lt;ul&gt;
&lt;li&gt;K richtet sich nach der Gesamtanzahl an Wertepaaren (z.B. für 50 Elemente könnte man K = 5 oder 6 und damit 2^K = 32 oder 64 Buckets wählen)&lt;/li&gt;
&lt;li&gt;innerhalb der Buckets einfache Listen von Wertepaaren, die in diesen Bucket fallen; idealerweise nur ein Eintrag pro Bucket&lt;/li&gt;
&lt;li&gt;durch dynamisches Anpassen der Bucket-Anzahl Abwägung zwischen Speicheraufwand für evtl. leere Buckets einerseits und Zeitaufwand für Durchsuchen übervoller Buckets andererseits&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Strategie 2: wie 1, aber jeder Bucket kann maximal ein Element aufnehmen
&lt;ul&gt;
&lt;li&gt;bei Kollisionen strategisches Ausweichen auf andere Buckets in einem systematischen Muster, bis ein freier Platz gefunden wird&lt;/li&gt;
&lt;li&gt;große Variation von Implementationsstrategien für dieses &amp;quot;strategische Ausweichen&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vorwärtsbezug zu STP080: Komplexitätsattacke auf Hashmaps (eine Instanz von &lt;a href=&#34;https://cwe.mitre.org/data/definitions/400.html&#34;&gt;CWE-400&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem, wenn Hashmap mit nutzerdefinierten Daten gefüllt wird: Angreifer könnte Daten so wählen, dass sie alle im selben Bucket landen wollen&lt;/li&gt;
&lt;li&gt;damit extrem hohe Rechenlast durch ständige Kollisionen&lt;/li&gt;
&lt;li&gt;Lösung: Durchmischen des Hash mittels prozessinterner Geheimzahl (siehe STP044 zu Zufallszahlen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Feedback zu STP065&lt;/h4&gt;
&lt;p&gt;Mole schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In STP065 vermutest du, dass der Ethernet-Port wegen Authentifizierung abgeschafft wurde. &amp;quot;Beim WLAN muss man sich authentifizieren, beim Ethernet kann man sich einfach anstecken und lossurfen.&amp;quot; Das ist so natürlich nicht richtig. Im Enterprise-Umfeld gibt es für sowas 802.1x. Das wird übrigens auch beim WLAN zur Authentifizierung mit einem RADIUS-Server benutzt. Außerdem gibt es da SNMP-Traps. Da schaltet dann der Port ab und der Admin bekommt eine Nachricht, wenn die falsche MAC antwortet. Das gab es schon lange vor WLAN.&lt;/p&gt;
&lt;p&gt;Nächstes Problem: Du erklärst, das die NUCs vom VOC für das Streaming zuständig sind. Das ist so auch nicht richtig. Die machen nur das Encoding in die Subformate, wenn der Talk schon geschnitten ist. Für das Streaming sind die Cubes, ordentliche PCs mit extrem teuren Spezial-SDI-Encoding-Karten. Die Kisten brauchen auch echt Leistung, weil die das live machen.&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback von Mole"  />
          <chapter start="00:07:32" title="Intro und Prolog"  />
          <chapter start="00:09:08" title="Rückblick STP077"  />
          <chapter start="00:09:56" title="Rückblick STP071 und STP072"  />
          <chapter start="00:22:06" title="Ansatz 1: Sammlung von Wertepaaren als Liste umsetzen"  />
          <chapter start="00:30:34" title="Ansatz 2: Vorsortierung anhand von Streuwertfunktionen"  />
      </chapters>
      <enclosure length="60570945" url="https://dl.xyrillian.de/noises/stp-079-feld-von-feldern.mp3" type="audio/mpeg"/>
      <enclosure length="37866217" url="https://dl.xyrillian.de/noises/stp-079-feld-von-feldern.ogg" type="audio/ogg"/>
      <enclosure length="23002627" url="https://dl.xyrillian.de/noises/stp-079-feld-von-feldern.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/079-feld-von-feldern/</guid>
    <pubDate>Thu, 02 Oct 2025 21:25:00 GMT</pubDate>
    <itunes:duration>62:44</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP078: Common Weakness Enumeration (Teil 1)</itunes:title>
    <itunes:episode>78</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP078: Common Weakness Enumeration (Teil 1)</title>
    <link>https://schluesseltechnologie-podcast.de/078-common-weakness-enumeration-part-1</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem wir kurz über Alex&#39; Feedback gesprochen haben, soll es heute mal wieder um Sicherheit gehen; diesmal speziell darum, was Personen die Software schreiben beachten sollten, um die bekantesten Fallstricke sicher zu umgehen.</itunes:summary>
    <description>Nachdem wir kurz über Alex&#39; Feedback gesprochen haben, soll es heute mal wieder um Sicherheit gehen; diesmal speziell darum, was Personen die Software schreiben beachten sollten, um die bekantesten Fallstricke sicher zu umgehen.</description>
    <content:encoded>&lt;p&gt;Nachdem wir kurz über Alex&#39; Feedback gesprochen haben, soll es heute mal wieder um Sicherheit gehen; diesmal speziell darum, was Personen die Software schreiben beachten sollten, um die bekantesten Fallstricke sicher zu umgehen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP049: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Common_Vulnerabilities_and_Exposures&amp;amp;oldid=255367540&#34;&gt;CVE-Datenbank&lt;/a&gt; für bekannte Sicherheitslücken in bestimmten Programmen (z.B. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Heartbleed&amp;amp;oldid=253665585&#34;&gt;Heartbleed&lt;/a&gt; ist CVE-2014-0160)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;betrieben von dem privaten Forschungsinstitut &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mitre_Corporation&amp;amp;oldid=252423314&#34;&gt;Mitre Corporation&lt;/a&gt; auf Basis von Fördermitteln der US-Regierung&lt;/li&gt;
&lt;li&gt;April 2025: kurzzeitige Verwirrung nach Aussetzen des Fördervertrages, dann einen Tag später Kommando zurück (&lt;a href=&#34;https://c3d2.de/news/pentaradio24-20250422.html&#34;&gt;Pentaradio berichtete&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;neben CVE pflegt Mitre Corp. eine weniger bekannte Datenbank: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Common_Weakness_Enumeration&amp;amp;oldid=1276415996&#34;&gt;CWE (Common Weakness Enumeration)&lt;/a&gt;, ein Klassifizierungssystem für Arten von Sicherheitslücken&lt;/li&gt;
&lt;li&gt;wir besprechen die jährliche Rangliste der &lt;a href=&#34;https://cwe.mitre.org/top25/archive/2024/2024_cwe_top25.html&#34;&gt;CWE Top 25&lt;/a&gt; mit Stand von 2024&lt;/li&gt;
&lt;li&gt;wertvoll, weil man so als interessierter Laie oder Programmierer-Generalist ein Gefühl für wichtige Angriffsvektoren bekommt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 1: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/79.html&#34;&gt;CWE-79&lt;/a&gt;; fehlerhafte Neutralisierung von Eingaben während der Erzeugung von Webseiten (&amp;quot;Cross-Site Scripting&amp;quot;, XSS)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe Beispielbild im Link&lt;/li&gt;
&lt;li&gt;Webseiten können JavaScript-Code enthalten, der auf dem Browser des Endanwenders ausgeführt wird&lt;/li&gt;
&lt;li&gt;wenn Webseiten aus Eingaben anderer Benutzer zusammengebaut werden, können diese Code einschleusen&lt;/li&gt;
&lt;li&gt;Lösung: Escaping (Entfernen oder Ersetzen von Zeichen mit syntaktischer Bedeutung), kann durch Template Engines teilweise automatisiert werden&lt;/li&gt;
&lt;li&gt;passend dazu Platz 7: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/78.html&#34;&gt;CWE-78&lt;/a&gt;; fehlerhafte Neutralisierung von Eingaben während der Erzeugung von Befehlszeilen&lt;/li&gt;
&lt;li&gt;außerdem Platz 13: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/77.html&#34;&gt;CWE-77&lt;/a&gt;; dasselbe für alle anderen Befehlssprachen, die nicht JavaScript oder die System-Shell sind&lt;/li&gt;
&lt;li&gt;allgemeiner als Platz 12: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/20.html&#34;&gt;CWE-20&lt;/a&gt;; unzureichende Überprüfung von Eingaben&lt;/li&gt;
&lt;li&gt;Lösung: &amp;quot;assume all input is malicious&amp;quot;; nur Eingaben akzeptieren, die strikten Formatvorgaben folgen (z.B. unter Einsatz von regulären Ausdrücken, siehe STP021)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 2, 6 und 20: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/787.html&#34;&gt;CWE-787&lt;/a&gt; und &lt;a href=&#34;https://cwe.mitre.org/data/definitions/125.html&#34;&gt;CWE-125&lt;/a&gt;; Schreiben bzw. Lesen außerhalb des allokierten Speicherbereichs (&amp;quot;Out-of-Bounds Write/Read&amp;quot;) sowie als übergeordnete Kategorie &lt;a href=&#34;https://cwe.mitre.org/data/definitions/119.html&#34;&gt;CWE-119&lt;/a&gt;; allgemeiner Pufferüberlauf (&amp;quot;Buffer Overflow&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;und passend dazu Platz 8: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/416.html&#34;&gt;CWE-416&lt;/a&gt;; Benutzung nach dem Freigeben (&amp;quot;Use after Free&amp;quot;)&lt;/li&gt;
&lt;li&gt;alle bereits besprochen in STP047&lt;/li&gt;
&lt;li&gt;Lösung: speichersichere Programmiersprachen, Speicherprofiling-Tools wie Valgrind (siehe STP076)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 3: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/89.html&#34;&gt;CWE-89&lt;/a&gt;; SQL-Injektion&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL siehe STP012: Abfragesprache für relationale Datenbanksysteme&lt;/li&gt;
&lt;li&gt;Beispiel siehe &lt;a href=&#34;https://xkcd.com/327/&#34;&gt;XKCD 327&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lösung: Datenwerte von der Abfrage trennen (z.B. &lt;code&gt;SELECT * FROM users WHERE name = &#39;Alice&#39;&lt;/code&gt; -&amp;gt; &lt;code&gt;SELECT * FROM users WHERE name = $1&lt;/code&gt; mit Datensatz &lt;code&gt;[&amp;quot;Alice&amp;quot;]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;passend dazu Platz 11: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/94.html&#34;&gt;CWE-94&lt;/a&gt;; Code-Injektion (dasselbe für Programmcode); Überlapp zu CWE-77&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 4: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/352.html&#34;&gt;CWE-352&lt;/a&gt;; Cross-Site Request Forgery (CSRF)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Angreifer möchte im Namen des Opfers eine Aktion ausführen (z.B. auf Rechnung des Opfers in einem Webshop bestellen)&lt;/li&gt;
&lt;li&gt;Angreifer schiebt dem Opfer ein manipuliertes HTML-Formular unter, dass beim Abschicken die gewünschte Aktion auslöst, aber mit den Cookies (und damit der Identität des Opfers)&lt;/li&gt;
&lt;li&gt;Lösung: CSRF-Tokens (echte HTML-Formulare erhalten ein einmalig nutzbares Token, dass nicht vom Angreifer gefälscht werden kann)&lt;/li&gt;
&lt;li&gt;passend dazu Platz 19: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/918.html&#34;&gt;CWE-918&lt;/a&gt;; Server-Site Request Forgery (SSRF)&lt;/li&gt;
&lt;li&gt;dabei manipuliert der Angreifer nicht ein menschliches Opfer oder einen Webclient, sondern einen Webserver, mit seinem privilegierten Zugriff andere Webserver abzufragen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Platz 5: &lt;a href=&#34;https://cwe.mitre.org/data/definitions/22.html&#34;&gt;CWE-22&lt;/a&gt;; Pfaddurchquerung (&amp;quot;Path Traversal&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. bei Webservern mit statischen Inhalten: entsprechende Dateien liegen im Dateisystem in einem bestimmten Ordner&lt;/li&gt;
&lt;li&gt;Dateien außerhalb dieses Ordners sollen eigentlich nicht zugreifbar sein, aber manchmal geht &lt;a href=&#34;http://example.com/../../../etc/passwd&#34;&gt;http://example.com/../../../etc/passwd&lt;/a&gt; oder dergleichen&lt;/li&gt;
&lt;li&gt;Lösung: magische Pfadelemente wie &lt;code&gt;..&lt;/code&gt; (bei Pfaden) oder &lt;code&gt;/&lt;/code&gt; (bei Dateinamen) ablehnen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Feedback zu STP063&lt;/h4&gt;
&lt;p&gt;Alex schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;danke für den Podcast. Ich bin wie immer weit im Rückstand mit Hören, habe zu Folge 63 aber mal die Turing-Maschine für die Subtraktion neu gebastelt. [...] Den Input muss man mit folgender 0 eingeben, also 1110110 z.B.
Gebaut habe ich das auf &lt;a href=&#34;https://turingmachinesimulator.com/&#34;&gt;https://turingmachinesimulator.com/&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code&gt;//----------------------------------------------------------------------
//Syntax:

//-------CONFIGURATION
name: sub
init: q0
accept: qe

//-------DELTA FUNCTION:
//[current_state],[read_symbol]
//[new_state],[write_symbol],[&amp;gt;|&amp;lt;|-]

// &amp;lt; = left
// &amp;gt; = right
// - = hold
// use underscore for blank cells

q0,1 // 1en 1.Op überspringen
q0,1,&amp;gt;

q0,0
q1,0,&amp;gt;

q1,0 // 0en überspringen
q1,0,&amp;gt;

q1,1
q2,1,&amp;gt;

q2,0 // mehr als eine 1 im 2. Op? Ja-&amp;gt;q5, nein-&amp;gt;q3
q3,0,&amp;lt;

q2,1
q5,1,&amp;gt;

q5,1 // 1en 2.Op überspringen, dann auf letzte 1 des 2.Op
q5,1,&amp;gt;

q5,0
q6,0,&amp;lt;

q6,1 // letzte 1 des 2. Op durch 0 ersetzen
q7,0,&amp;lt;

q7,1 // zurück, 1en 2. Op überspringen
q7,1,&amp;lt;

q7,0
q8,0,&amp;lt;

q8,0 // zurück, 0en überspringen
q8,0,&amp;lt;

q8,1 // letzte 1 des 1. Op auf 0 setzen, zurück zu q1
q1,0,&amp;gt;

q3,1 // letzte 1 des 2. Op auf 0 setzen
q4,0,&amp;lt;

q4,0 // zurück, 0en überspringen
q4,0,&amp;lt;

q4,1 // letzte 1 des 1.Op auf Null setzen, zum Ende
qe,0,&amp;gt;
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback von Alex"  />
          <chapter start="00:04:29" title="Intro und Prolog"  />
          <chapter start="00:06:14" title="CVE-Datenbank"  />
          <chapter start="00:11:47" title="CWE-79: Cross-Site Scripting"  />
          <chapter start="00:23:33" title="CWE-78: OS Command Injection"  />
          <chapter start="00:26:56" title="CWE-77: Command Injection"  />
          <chapter start="00:28:50" title="CWE-20: Improper Input Validation"  />
          <chapter start="00:31:26" title="CWE-787, CWE-125 und CWE-119: Buffer Overflow"  />
          <chapter start="00:39:38" title="CWE-416: Use after Free"  />
          <chapter start="00:41:46" title="CWE-89: SQL-Injektion"  />
          <chapter start="00:49:39" title="CWE-352: Cross-Site Request Forgery"  />
          <chapter start="00:58:32" title="CWE-22: Path Traversal"  />
      </chapters>
      <enclosure length="62718320" url="https://dl.xyrillian.de/noises/stp-078-common-weakness-enumeration-part-1.mp3" type="audio/mpeg"/>
      <enclosure length="39013727" url="https://dl.xyrillian.de/noises/stp-078-common-weakness-enumeration-part-1.ogg" type="audio/ogg"/>
      <enclosure length="23659222" url="https://dl.xyrillian.de/noises/stp-078-common-weakness-enumeration-part-1.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/078-common-weakness-enumeration-part-1/</guid>
    <pubDate>Thu, 11 Sep 2025 21:59:00 GMT</pubDate>
    <itunes:duration>64:59</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP077: Liste von Listen</itunes:title>
    <itunes:episode>77</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP077: Liste von Listen</title>
    <link>https://schluesseltechnologie-podcast.de/077-liste-von-listen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Als der inoffizielle Wikipedia-Vorlesepodcast sehen wir es als unsere Pflicht, eine Eigenheit dieser anzusprechen: nämlich Listen von Listen, obwohl es uns eigentlich um Listen im Speicher geht.</itunes:summary>
    <description>Als der inoffizielle Wikipedia-Vorlesepodcast sehen wir es als unsere Pflicht, eine Eigenheit dieser anzusprechen: nämlich Listen von Listen, obwohl es uns eigentlich um Listen im Speicher geht.</description>
    <content:encoded>&lt;p&gt;Als der inoffizielle Wikipedia-Vorlesepodcast sehen wir es als unsere Pflicht, eine Eigenheit dieser anzusprechen: nämlich Listen von Listen, obwohl es uns eigentlich um Listen im Speicher geht.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezüge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fundamentale Datenstrukturen siehe STP071: Felder/Listen, &lt;del&gt;assoziative Datenfelder (Maps), Graphen&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Frage: Wie stellt man solche Datenstrukturen im Speicher dar? Gibt es darauf überhaupt die eine richtige Antwort?&lt;/li&gt;
&lt;li&gt;algorithmische Komplexität siehe STP029: Liste mit &lt;code&gt;n&lt;/code&gt; Elementen ausdrucken in &lt;code&gt;O(n)&lt;/code&gt;, aber sortieren in &lt;code&gt;O(n log(n))&lt;/code&gt; bis &lt;code&gt;O(n^2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Speicherallokation siehe STP047 und Speicherschutz siehe STP019: Bezug wird gleich klar werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listen kann man als &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Liste_(Datenstruktur)&amp;amp;oldid=253638160&#34;&gt;verkettete Liste darstellen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;klassisches Studienobjekt in Erstsemester-Datenstrukturen-Vorlesungen&lt;/li&gt;
&lt;li&gt;intuitiv verständlich: Parallele zu segmentierten Halsketten&lt;/li&gt;
&lt;li&gt;wahlweise einfach oder doppelt verkettet&lt;/li&gt;
&lt;li&gt;effiziente Operationen: Einfügen am Ende, Entfernen am Ende&lt;/li&gt;
&lt;li&gt;ineffiziente Operationen: Einfügen in der Mitte, Wahlzugriff/Suche&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Template:List_data_structure_comparison&amp;amp;oldid=1251607720&#34;&gt;Vergleichstabelle mit Darstellung der Zeiteffizienz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;alles in allem durchwachsene Performance -&amp;gt; geht es besser?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;alternative Strategie: interne Darstellung der Liste als &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Balancierter_Baum&amp;amp;oldid=243407080&#34;&gt;balancierter Baum&lt;/a&gt; (oder evtl. &amp;quot;ausgeglichener Baum&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;außerdem Link auf &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Self-balancing_binary_search_tree&amp;amp;oldid=1273477858&#34;&gt;die englische Wikipedia&lt;/a&gt;, die nicht nur unbalancierte, sondern auch balancierte Bäume zeigt&lt;/li&gt;
&lt;li&gt;kann nur sortierte Listen darstellen&lt;/li&gt;
&lt;li&gt;Idee: Wurzelknoten hat das Median-Element, dann der linke Ast alle kleineren und der rechte Ast alle größeren Elemente&lt;/li&gt;
&lt;li&gt;im Grunde alle gängigen Operationen mittelschnell: Wahlzugriff/Suche, Einfügen an beliebigen Stellen, Entfernen von beliebigen Stellen (Änderungen erfordern im Allgemeinen ein Austarieren des Baumes)&lt;/li&gt;
&lt;li&gt;große Variation von Implementationsstrategien für dieses Balancieren -&amp;gt; hier nicht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;verkettete Listen und balancierte Bäume sehen auf dem Papier ziemlich effizient aus, haben aber in ihrer reinen Form pathologisch schlechtes Speicherverhalten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hoher Platzverbrauch: z.B. bei einfach bzw. doppelt verketteten Listen muss zu jedem Element müssen noch eine bzw. zwei Speicheradressen abgelegt werden&lt;/li&gt;
&lt;li&gt;hohe Allokationslast: wenn nicht eine Arena oder ein vergleichbarer Small Object Allocator verwendet wird&lt;/li&gt;
&lt;li&gt;schlechte Lokalität: beim Durchlaufen nachfolgender Elemente werden im schlimmsten Fall ständig unterschiedliche Speicherseiten getroffen, was fortlaufend Seitenfehler verursachen kann&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;in der Praxis mit Abstand dominante Implementationsstrategie: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Dynamic_array&amp;amp;oldid=1268522792&#34;&gt;dynamische Felder&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beobachtung: Einfügen oder Löschen an beliebigen Stellen wird kaum gemacht; man hängt eher mehrmals ans Ende an und sortiert dann, falls nötig&lt;/li&gt;
&lt;li&gt;Idee: Optimieren auf Einfügen am Ende bei möglichst optimalen Speicherverhalten&lt;/li&gt;
&lt;li&gt;Umsetzung: einfaches Feld (ein fortlaufendes Stück Speicher, in dem mehrere Elemente hintereinander abgelegt werden) mit aktuellem Füllstand N und Kapazität K&lt;/li&gt;
&lt;li&gt;Einfügen ans Ende: normalerweise einfach N erhöhen; wenn N nicht in K passt, größeren Speicher reservieren, alles hinüberkopieren und die alten Speicherallokation verwerfen&lt;/li&gt;
&lt;li&gt;Löschen vom Ende: einfach N reduzieren, keine Deallokation erforderlich&lt;/li&gt;
&lt;li&gt;Einfügen am Anfang oder in die Mitte: alle Elemente dahinter nach hinten verschieben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nahezu optimales Speicherverhalten von dynamischen Feldern begründet ihre Dominanz&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Platzverbrauch: neben der Speichergröße der Elemente selber nur zwei Zahlen (N und K)&lt;/li&gt;
&lt;li&gt;Allokationslast: Vergrößern geht für gewöhnlich in exponentiellen Schritten und wird damit für wachsende Listen immer seltener nötig&lt;/li&gt;
&lt;li&gt;Lokalität: lineare Suche durch die Liste geht linear durch den Speicher hindurch -&amp;gt; folgende Speicherseiten können vom Prozessor oft schon auf Verdacht vorgeladen werden&lt;/li&gt;
&lt;li&gt;trotzdem: die anderen Datenstrukturen haben auch ihre Berechtigung (z.B. modifizierte balancierte Bäume als Basis für Datenbank-Indizes)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Xyrill will auch noch auf analoge Weise über Maps und Graphen reden -&amp;gt; weiter in STP079&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Post aus dem Land der Dänen"  />
          <chapter start="00:03:52" title="Intro und tote Staatsoberhäupter"  />
          <chapter start="00:06:34" title="Rückbezüge zu STP071"  />
          <chapter start="00:15:11" title="Verkettete Listen"  />
          <chapter start="00:26:23" title="Balancierte Bäume"  />
          <chapter start="00:37:41" title="Die Probleme von Ketten und Bäumen"  />
          <chapter start="00:42:11" title="Dynamische Felder"  />
          <chapter start="00:54:20" title="Die Dominanz dynamischer Felder"  />
      </chapters>
      <enclosure length="55147825" url="https://dl.xyrillian.de/noises/stp-077-liste-von-listen.mp3" type="audio/mpeg"/>
      <enclosure length="33721785" url="https://dl.xyrillian.de/noises/stp-077-liste-von-listen.ogg" type="audio/ogg"/>
      <enclosure length="20718791" url="https://dl.xyrillian.de/noises/stp-077-liste-von-listen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/077-liste-von-listen/</guid>
    <pubDate>Thu, 21 Aug 2025 19:40:00 GMT</pubDate>
    <itunes:duration>57:06</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP076: Debugging</itunes:title>
    <itunes:episode>76</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP076: Debugging</title>
    <link>https://schluesseltechnologie-podcast.de/076-debugging</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die Zeiten, in denen wie von Grace Hopper &amp;quot;actual bugs&amp;quot; in Computern gefunden werden, sind wohl weitestgehend vorbei. Trotzdem ist Debugging bis heute eine Sache, um die man in der IT nicht herumkommt.</itunes:summary>
    <description>Die Zeiten, in denen wie von Grace Hopper &amp;quot;actual bugs&amp;quot; in Computern gefunden werden, sind wohl weitestgehend vorbei. Trotzdem ist Debugging bis heute eine Sache, um die man in der IT nicht herumkommt.</description>
    <content:encoded>&lt;p&gt;Die Zeiten, in denen wie von Grace Hopper &amp;quot;actual bugs&amp;quot; in Computern gefunden werden, sind wohl weitestgehend vorbei. Trotzdem ist Debugging bis heute eine Sache, um die man in der IT nicht herumkommt.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Debuggen&amp;amp;oldid=254167673&#34;&gt;Wikipedia definiert den Begriff&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Als Debuggen (dt. Entwanzen) oder Fehlerbehebung bezeichnet man in der Informatik den Vorgang, in einem Computerprogramm Fehler oder unerwartetes Verhalten zu diagnostizieren und zu beheben. Die Suche von Programmfehlern (sogenannten Bugs) ist eine der wichtigsten und anspruchsvollsten Aufgaben der Softwareentwicklung und nimmt einen großen Teil der Entwicklungszeit in Anspruch. Ein guter Programmierer muss daher auch das Debuggen beherrschen und umgekehrt: Nicht jeder gute Programmierer ist auch ein guter Debugger.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Xyrill hat eine Anekdote: Firefox im Hotel-WLAN hängt beim Starten vier Minuten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht dramatisch, könnte man auch hinnehmen (oder halt auf einen anderen Browser wechseln)&lt;/li&gt;
&lt;li&gt;Xyrill war aber in der Stimmung, zu debuggen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kategorie 1: Werkzeuge zum Mitlauschen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Traceroute&amp;amp;oldid=236437154&#34;&gt;traceroute&lt;/a&gt; (bzw. &lt;code&gt;tracert&lt;/code&gt; unter Windows): Nachverfolgung der Netzwerkroute zu einem bestimmten Ziel anhand von Ping-Paketen mit begrenzter TTL; stark variable Pings oder plötzliche Anstiege des Pings deuten auf ein Problem an dem entsprechenden Hop hin&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Tcpdump&amp;amp;oldid=235025527&#34;&gt;tcpdump&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Wireshark&amp;amp;oldid=238943114&#34;&gt;Wireshark&lt;/a&gt;: Mitschneiden aller Netzwerkpakete, die über ein Netzwerk-Interface versendet oder empfangen werden (evtl. mit Suchmuster, z.B. &amp;quot;nur auf Port 80&amp;quot; oder &amp;quot;nur für Ziel-/Quelladresse 192.168.0.1&amp;quot;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://mitmproxy.org/&#34;&gt;mitmproxy&lt;/a&gt; et al: Fangnetz für HTTP-Anfragen und -Antworten, die von einem Prozess geschickt und empfangen werden (quasi wie tcpdump, aber einige Netzwerkschichten höher); super zum Reverse-Engineering von webbasierten APIs&lt;/li&gt;
&lt;li&gt;mal nicht Netzwerk: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Strace&amp;amp;oldid=1268124388&#34;&gt;strace&lt;/a&gt; listet alle Syscalls (Systemrufe) auf, die ein Prozess während seiner Lebenszeit macht (siehe Beispiel unten)&lt;/li&gt;
&lt;li&gt;zurück zum Hotel-WLAN-Beispiel: strace zeigt Timeout bei DNS-Anfrage zum eigenen Hostnamen jeweils 2x nach 120s&lt;/li&gt;
&lt;li&gt;Grund für diese Anfragen bleibt unklar, aber die Lösung ist eindeutig: expliziter Eintrag für den eigenen Hostnamen in &lt;code&gt;/etc/hosts&lt;/code&gt;, um die DNS-Abfrage zu umgehen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kategorie 2: Werkzeuge zum Nachverfolgen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Printf&amp;amp;oldid=243456170&#34;&gt;printf&lt;/a&gt;-Debugging: im Programmcode vorrübergehend Befehle einbauen, die zu sinnfälligen Zeitpunkten Logmeldungen ausdrucken, insb. beinhaltend den aktuellen Zustand von bestimmten Variablen (sprich: transiente Form von Logging, siehe STP032)&lt;/li&gt;
&lt;li&gt;Debugger wie &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=GNU_Debugger&amp;amp;oldid=237899188&#34;&gt;gdb&lt;/a&gt;: Ausführung eines Programms bis zum Moment des Crashs oder bis zu benutzerdefinierten Haltepunkten; dann schrittweise Ausführung bzw. Inspektion von Variablen (flexibler als printf-Debugging, aber erfordert direkten Zugriff auf den Prozess)&lt;/li&gt;
&lt;li&gt;Profiler wie &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Valgrind&amp;amp;oldid=246184662&#34;&gt;valgrind&lt;/a&gt;: Ausführung eines Programms und währenddessen Erfassung von Statistiken zu Laufzeit- und Speichernutzung, um Speicherzugriffsfehler oder Ineffizienzen aufzudecken&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kategorie 3: Werkzeuge zum Zurückverfolgen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bisektion&amp;amp;oldid=194714676&#34;&gt;Bisektion&lt;/a&gt; z.B. mit &lt;a href=&#34;https://git-scm.com/docs/git-bisect&#34;&gt;git bisect&lt;/a&gt;: Aufspüren derjenigen Änderung in einem Versionsverwaltungssystem, die eine bestimmte Verhaltensänderung (z.B. einen Bug oder einen Performance-Einbruch) ausgelöst hat&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;Beispiel einer strace-Ausgabe für den Befehl &lt;code&gt;mv /tmp/foo /tmp/bar&lt;/code&gt; (stark verkürzt):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ strace mv /tmp/foo /tmp/bar
execve(&amp;quot;/usr/bin/mv&amp;quot;, [&amp;quot;mv&amp;quot;, &amp;quot;/tmp/foo&amp;quot;, &amp;quot;/tmp/bar&amp;quot;], 0x7fff820357b0 /* 67 vars */) = 0
... (ca. 60 Zeilen an Setup-Phase der libc und anderer Shared Libraries ausgelassen) ...
ioctl(0, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0
renameat2(AT_FDCWD, &amp;quot;/tmp/foo&amp;quot;, AT_FDCWD, &amp;quot;/tmp/bar&amp;quot;, RENAME_NOREPLACE) = -1 EEXIST (File exists)
openat(AT_FDCWD, &amp;quot;/tmp/bar&amp;quot;, O_RDONLY|O_PATH|O_DIRECTORY) = -1 ENOTDIR (Not a directory)
newfstatat(AT_FDCWD, &amp;quot;/tmp/foo&amp;quot;, {st_mode=S_IFREG|0644, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD, &amp;quot;/tmp/bar&amp;quot;, {st_mode=S_IFREG|0644, st_size=0, ...}, AT_SYMLINK_NOFOLLOW) = 0
geteuid()                               = 1001
faccessat2(AT_FDCWD, &amp;quot;/tmp/bar&amp;quot;, W_OK, AT_EACCESS) = 0
renameat2(AT_FDCWD, &amp;quot;/tmp/foo&amp;quot;, AT_FDCWD, &amp;quot;/tmp/bar&amp;quot;, 0) = 0
lseek(0, 0, SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
close(0)                                = 0
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
&#43;&#43;&#43; exited with 0 &#43;&#43;&#43;
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:02" title="Definition"  />
          <chapter start="00:11:28" title="Werkzeuge zum Mitlauschen"  />
          <chapter start="00:12:48" title="traceroute"  />
          <chapter start="00:20:35" title="tcpdump"  />
          <chapter start="00:23:33" title="mitmproxy"  />
          <chapter start="00:28:19" title="strace"  />
          <chapter start="00:37:58" title="Werkzeuge zum Nachverfolgen"  />
          <chapter start="00:38:32" title="printf"  />
          <chapter start="00:42:12" title="debugger"  />
          <chapter start="00:45:48" title="valgrind"  />
          <chapter start="00:50:22" title="Werkzeuge zum Zurückverfolgen"  />
      </chapters>
      <enclosure length="56592572" url="https://dl.xyrillian.de/noises/stp-076-debugging.mp3" type="audio/mpeg"/>
      <enclosure length="36349839" url="https://dl.xyrillian.de/noises/stp-076-debugging.ogg" type="audio/ogg"/>
      <enclosure length="21579440" url="https://dl.xyrillian.de/noises/stp-076-debugging.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/076-debugging/</guid>
    <pubDate>Thu, 31 Jul 2025 18:00:00 GMT</pubDate>
    <itunes:duration>58:36</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP075: Prozessorarchitekturen im Vergleich</itunes:title>
    <itunes:episode>75</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP075: Prozessorarchitekturen im Vergleich</title>
    <link>https://schluesseltechnologie-podcast.de/075-prozessorarchitekturen-im-vergleich</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach einer sehr deutlichen Einordnung der Aufnahmezeit kommen wir im Wesentlichen zu den Unterschieden zwischen x86 und ARM. Natürlich wird auch geklärt, was das ist. Gegen Ende gibt es noch ein paar Meinungen und Weissagungen zum Thema KI.</itunes:summary>
    <description>Nach einer sehr deutlichen Einordnung der Aufnahmezeit kommen wir im Wesentlichen zu den Unterschieden zwischen x86 und ARM. Natürlich wird auch geklärt, was das ist. Gegen Ende gibt es noch ein paar Meinungen und Weissagungen zum Thema KI.</description>
    <content:encoded>&lt;p&gt;Nach einer sehr deutlichen Einordnung der Aufnahmezeit kommen wir im Wesentlichen zu den Unterschieden zwischen x86 und ARM. Natürlich wird auch geklärt, was das ist. Gegen Ende gibt es noch ein paar Meinungen und Weissagungen zum Thema KI.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP011: grundsätzliche Beschreibung von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Maschinensprache&amp;amp;oldid=244058590&#34;&gt;Maschinensprache&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe Beispiel unter dem obenstehenden Link&lt;/li&gt;
&lt;li&gt;Maschinensprache ist spezifisch für die Prozessorarchitektur, genauer die &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Befehlssatzarchitektur&amp;amp;oldid=252559676&#34;&gt;Befehlssatzarchitektur&lt;/a&gt; (&lt;em&gt;instruction set architecture&lt;/em&gt;, ISA)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;heutzutage relevante ISA&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x86: PCs, Notebooks, Server, &lt;a href=&#34;https://en.wikipedia.org/wiki/File:Processor_families_in_TOP500_supercomputers.svg&#34;&gt;Supercomputer&lt;/a&gt;, Apple Macs bis 2020&lt;/li&gt;
&lt;li&gt;ARM: Smartphones, Tablets, Apple Macs seit 2020, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Einplatinencomputer&amp;amp;oldid=237691993&#34;&gt;Einplatinencomputer (SBC)&lt;/a&gt; wie &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Raspberry_Pi&amp;amp;oldid=252946989&#34;&gt;Raspberry Pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Embedded: AVR, MIPS, etc.&lt;/li&gt;
&lt;li&gt;Hochleistungsrechnen: neben x86 noch Power und SPARC&lt;/li&gt;
&lt;li&gt;Neuentwicklungen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=RISC-V&amp;amp;oldid=253863999&#34;&gt;RISC-V&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Loongson&amp;amp;oldid=1277543901#LoongArch&#34;&gt;LoongArch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum ist die Wahl der ISA wichtig?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ISA beschreibt nominal, wie ein CPU die Bits in einer ausführbaren Binärdatei (sprich: die kodierte Form der Maschinensprache) zu interpretieren hat&lt;/li&gt;
&lt;li&gt;daraus als Konsequenz Festlegung von Hardware-Parametern wie der Adressbreite oder der Anzahl und Größe der verfügbaren Register&lt;/li&gt;
&lt;li&gt;Designentscheidungen in der ISA wirken sich auf die maximal erreichbare Performance und auf die Energieeffizienz aus&lt;/li&gt;
&lt;li&gt;klassischerweise Gegenüberstellung zweier verschiedener Design-Philosophien: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Complex_Instruction_Set_Computer&amp;amp;oldid=252402363&#34;&gt;Complex Instruction Set Computing (CISC)&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Reduced_Instruction_Set_Computer&amp;amp;oldid=250909684&#34;&gt;Reduced Instruction Set Computing (RISC)&lt;/a&gt; (die Grenzen verschwimmen aber in der Praxis)&lt;/li&gt;
&lt;li&gt;historischerweise war CISC die Domäne großer CPU-Hersteller, die sich ein kompliziertes Design leisten konnten, um dem Programmierer Arbeit abzunehmen (z.B. Intel); und RISC die Domäne kleiner CPU-Hersteller, die aus möglichst wenig Arbeitseinsatz möglichst viel erreichen wollten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was steht in einem Maschinencode-Befehl drin?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grundsätzlich eine Operation, die ausgeführt wird (z.B. &amp;quot;Addition zweier 64-Bit-Zahlen&amp;quot;)&lt;/li&gt;
&lt;li&gt;als Quellen für Argumente und Ziel für das Ergebnis: entweder Register, Speicher oder Immediate-Argumente
&lt;ul&gt;
&lt;li&gt;Beispiel CISC: &lt;a href=&#34;https://www.felixcloutier.com/x86/add&#34;&gt;20 verschiedene Ausführungen des ADD-Befehls in x86-64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Beispiel RISC: &lt;a href=&#34;https://projectf.io/posts/riscv-arithmetic/#addition&#34;&gt;2 verschiedene Ausführungen des ADD- bzw. ADDI-Befehls in RISC-V (RV32I)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;wenn RISC wie bei RISC-V eine &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Load/Store-Architektur&amp;amp;oldid=244001127&#34;&gt;Load/Store-Architektur&lt;/a&gt; verwendet, muss man also im Zweifelsfall Argumente erst aus dem Speicher in Register laden
&lt;ul&gt;
&lt;li&gt;dadurch tendenziell mehr Maschinencode, aber weniger Komplexität in der CPU&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abwägungen zwischen Energieeffizienz (ARM) und Performance (x86)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aktueller ARM-Befehlssatz (A64) hat durchgängig 4 Byte große Befehle, was das Dekodieren vereinfacht; x86-Befehle haben eine variable Breite zwischen 1 und 15 Byte&lt;/li&gt;
&lt;li&gt;x86 hat eine lange Pipeline, um u.a. die komplexen Befehle in kleinere Teilschritte (Micro-Operations) zu zerlegen oder bestimmte häufige Befehlssequenzen in effizientere Gruppen (Macro-Operations) zu fusionieren und damit die Performance zu steigern; ARM-Prozessoren machen das nicht und sparen dadurch Energieaufwand&lt;/li&gt;
&lt;li&gt;x86 hat für bestimmte Rollen designierte Spezialregister, die je nach Befehl feste Bedeutungen haben; ARM (und RISC allgemein) verwendet für fast alles 31 General-Purpose-Register&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und zeitliche Einordnung"  />
          <chapter start="00:01:45" title="Rückbezüge"  />
          <chapter start="00:04:23" title="Heutzutage relevante ISA"  />
          <chapter start="00:18:59" title="Warum ist die Wahl der ISA wichtig?"  />
          <chapter start="00:28:25" title="Was steht in einem Maschinencode-Befehl drin?"  />
          <chapter start="00:48:28" title="Abwägungen zwischen Energieeffizienz und Performance"  />
      </chapters>
      <enclosure length="54444642" url="https://dl.xyrillian.de/noises/stp-075-prozessorarchitekturen-im-vergleich.mp3" type="audio/mpeg"/>
      <enclosure length="35698862" url="https://dl.xyrillian.de/noises/stp-075-prozessorarchitekturen-im-vergleich.ogg" type="audio/ogg"/>
      <enclosure length="20666466" url="https://dl.xyrillian.de/noises/stp-075-prozessorarchitekturen-im-vergleich.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/075-prozessorarchitekturen-im-vergleich/</guid>
    <pubDate>Thu, 10 Jul 2025 14:45:00 GMT</pubDate>
    <itunes:duration>56:22</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP074: Literatur: Vom Mythos des Mann-Monats, Teil 2</itunes:title>
    <itunes:episode>74</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP074: Literatur: Vom Mythos des Mann-Monats, Teil 2</title>
    <link>https://schluesseltechnologie-podcast.de/074-vom-mythos-des-mann-monats-teil-2</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Beim letzten Mal war zuviel Buch für zu wenig Zeit übrig. Daher nun die Fortsetzung mit zwar gelegentlich etwas angestaubten, im Großen und Ganzen aber sinnvollen, Vorschlägen zur Organisation von Softwareentwicklung.</itunes:summary>
    <description>Beim letzten Mal war zuviel Buch für zu wenig Zeit übrig. Daher nun die Fortsetzung mit zwar gelegentlich etwas angestaubten, im Großen und Ganzen aber sinnvollen, Vorschlägen zur Organisation von Softwareentwicklung.</description>
    <content:encoded>&lt;p&gt;Beim letzten Mal war zuviel Buch für zu wenig Zeit übrig. Daher nun die Fortsetzung mit zwar gelegentlich etwas angestaubten, im Großen und Ganzen aber sinnvollen, Vorschlägen zur Organisation von Softwareentwicklung.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Fortsetzung aus STP068. Wir lesen weiterhin die englische Erstausgabe von 1975, die &lt;a href=&#34;https://archive.org/details/MythicalManMonth&#34;&gt;im Internet Archive&lt;/a&gt; digitalisiert wurde.&lt;/p&gt;
&lt;h3&gt;Kapitel 4: Aristokratie, Demokratie und System-Design&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Brooks beschreibt als Leitmotiv die Kathedrale von Reims, die von acht Generationen von Baumeistern errichtet wurde, aber trotzdem eine beachtliche gestalterische Kohärenz aufweist, da die nachfolgenden Generationen das ursprüngliche Design ungewöhnlich stark respektieren: &amp;quot;Das Ergebnis verkündet nicht nur die Herrlichkeit Gottes, sondern auch seine Macht, gefallene Menschen von ihrem Stolz zu befreien.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kontrast nicht nur zu den meisten anderen Kirchenbauten, sondern auch zu Programmsystemen&lt;/li&gt;
&lt;li&gt;dort aber nicht wegen Mehrgenerationalität, sondern wegen Vielstimmigkeit&lt;/li&gt;
&lt;li&gt;These: konzeptionelle Integrität ist die wichtigste Eigenschaft im System-Design (vgl. STP006: Unix-Philosophie)&lt;/li&gt;
&lt;li&gt;Vorteil: bessere Verwendbarkeit und Erlernbarkeit&lt;/li&gt;
&lt;li&gt;Umsetzung: das Design sollte von einigen wenigen Architekten kontrolliert werden, die im Interesse des Benutzers handeln; doch hieraus drei Problemstellungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 1: Folgt hieraus nicht eine aristokratische Klassengesellschaft von wenigen Vordenkern und bauendem Fußvolk?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nein, auch auf der Implementationsebene gibt es viele interessante Entscheidungen zu treffen
&lt;ul&gt;
&lt;li&gt;Brooks zitiert einen Aphorismus aus der Kunst: &amp;quot;Form befreit.&amp;quot;, sprich: Kreativität erwächst aus dem Umgang mit Beschränkungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;in der Architektur geht es darum, was man dem Nutzer präsentiert (das &amp;quot;Was&amp;quot;)&lt;/li&gt;
&lt;li&gt;in der Bauphase geht es darum, wie man dieses Verhalten erreicht (das &amp;quot;Wie&amp;quot;)&lt;/li&gt;
&lt;li&gt;es ist absolut gewollt, dass die Erbauer auch Designideen vorschlagen und auf Beschränkungen hinweisen; nur entscheiden sie nicht final über das Design&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 2: Wie verhindert man, dass die Architekten von den Zwängen der Realität abgekoppelt im Elfenbeinturm davonschweben?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill bringt eines seiner Lieblings-Schimpfwörter ins Spiel: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Architecture_astronaut&amp;amp;oldid=1221960855&#34;&gt;&amp;quot;Architektur-Astronaut&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lösung dieselbe wie für das dritte Problem&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 3: Wie stellt man sicher, dass die Erbauer mit allen wichtigen Details des Designs vertraut gemacht werden?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lösung: die Erbauer frühzeitig in den Design-Prozess involvieren, Ideen aufnehmen, Designvorschläge auf praktische Umsetzbarkeit abklopfen etc.&lt;/li&gt;
&lt;li&gt;Vergleich mit der Errichtung eines Gebäudes: man kann die Erbauer nicht erst einstellen, wenn der Plan fertig ist, weil in der Software-Entwicklung immer noch vieles explorativ und nicht nach Standard-Muster abläuft&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 5: Das Problem des zweiten Systems (&amp;quot;Second-System Effect&amp;quot;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;in diesem Dialog zwischen Architekt und Erbauer stellen sich viele Ideen des Architekten als unpraktikabel heraus und werden verworfen... bis zum nächsten Mal&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Szenario: das erste System war erfolgreich, der Architekt hat Prestige und Erfahrung gewonnen&lt;/li&gt;
&lt;li&gt;&amp;quot;Dieses zweite ist das gefährlichste System, dass man jemals entwirft.&amp;quot; -&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Second-system_effect&amp;amp;oldid=1247130968&#34;&gt;Second-System Effect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;beim dritten und vierten System hat man dann mehr Erfahrung, was tatsächlich funktioniert und was nur auf dem Papier gut aussieht&lt;/li&gt;
&lt;li&gt;Xyrill legt Wert darauf, dass seine jüngeren Kollegen früh ihre eigenen Komponenten alleine entwerfen, damit sie dann auch in die Probleme ihrer eigenen Design-Entscheidungen reinlaufen und daraus lernen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;der vorgeschlagene Lösungsansatz ist leider etwas antiquiert: &amp;quot;Eine Disziplin, die dem Architekten die Augen öffnen wird, ist es, jeder kleinen Funktion einen Wert zuzuweisen: Fähigkeit X ist nicht mehr wert als M Bytes Speicher und N Mikrosekunden pro Aufruf. Diese Werte dienen als Richtschnur für die ersten Entscheidungen und während der Implementierung als Leitfaden und Warnung an alle.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht realisitisch in Zeiten, wo die meisten Programmierer offenkundigerweise noch nie einen Profiler verwendet haben oder auch nur ein Gefühl für ihre eigene Ressourcenvergeudung haben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 6: Weitergabe von Informationen (&amp;quot;Passing the Word&amp;quot;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Wie stellt eine Gruppe von 10 Architekten sicher, dass ihre Entwürfe von 1000 Mitarbeitenden berücksichtigt und von allen Benutzern verstanden werden?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gute Dokumentation ist erforderlich: Handbücher für die Benutzer, Architekturpläne für die Erbauer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Qualitäten guter Dokumentation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vorzugsweise aus der Feder von nur ein oder zwei Personen -&amp;gt; Fokus auf konzeptionelle Integrität&lt;/li&gt;
&lt;li&gt;Beschreibung sowohl des definierten Verhaltens als auch der Grenzen der Definiertheit&lt;/li&gt;
&lt;li&gt;Definitionen in formaler Notation und/oder präziser Sprache, um Lücken und Widersprüche im Design möglichst früh aufzudecken&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Anti-Pattern&amp;amp;oldid=248340518&#34;&gt;Anti-Pattern&lt;/a&gt;: Definition eines Systems durch sein eigenes Verhalten
&lt;ul&gt;
&lt;li&gt;führt zu Bug-für-Bug-Kompatibilität (siehe STP050) bzw. Ossifikation (siehe STP056): inhaltliche Widersprüche zwischen der ursprünglichen Implementation, späteren Revisionen sowie später abgeleiteten Spezifikationen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;gutes Pattern: Spezifikation maschinenlesbar darstellen, damit die Erbauer die Konformität ihrer Implementation mit der Spezifikation automatisch prüfen können
&lt;ul&gt;
&lt;li&gt;aktuelles Beispiel: formale Spezifikation von Schnittstellen mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=OpenAPI&amp;amp;oldid=250760605&#34;&gt;OpenAPI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie erarbeitet man Designs? Vorschlag von Brooks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Meetings zwischen den Architekten und involvierten Erbauern, in denen das Problem vorgestellt und mehrere Designideen gesammelt werden&lt;/li&gt;
&lt;li&gt;dann Erarbeitung von detaillierten Designentwürfen mit Pro-/Kontra-Analyse&lt;/li&gt;
&lt;li&gt;daraus entweder sofortiger Konsens oder Entscheidung eines Chefarchitekten&lt;/li&gt;
&lt;li&gt;klingt offensichtlich, ist aber im &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Agile_Softwareentwicklung&amp;amp;oldid=251327114&#34;&gt;agilen Zeitalter&lt;/a&gt; selten anzutreffen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;noch eine kleine Anmerkung am Rande: auch Kurzabsprachen am Telefon sollten dokumentiert werden :)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 7: Warum ist der Turm zu Babel gefallen?&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Woran können Projekte scheitern?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unklare Zielstellung&lt;/li&gt;
&lt;li&gt;nicht genug Personal&lt;/li&gt;
&lt;li&gt;nicht genug Material/Budget&lt;/li&gt;
&lt;li&gt;nicht genug Zeit&lt;/li&gt;
&lt;li&gt;unzureichende Technologien&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ineffektive Kommunikation&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie sollen Teams kommunizieren? Neben direkten Gesprächen z.B. via Telefon und Gruppengesprächen z.B. in Meetings wird ein &lt;strong&gt;Arbeitsbuch&lt;/strong&gt; vorgeschlagen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht ein konkretes Dokument, sondern eine Struktur für alle Dokumente im Projekt&lt;/li&gt;
&lt;li&gt;die Dokumentation am Ende geht aus den Memos am Anfang hervor, also gleich richtig machen&lt;/li&gt;
&lt;li&gt;Memos sollen durchnummeriert werden, damit man später darauf Bezug nehmen kann (wir fühlen uns an RFCs erinnert) -&amp;gt; Arbeitsbuch ergibt sich als Baumstruktur aller Memos (wir fühlen uns an Hypertext erinnert, und in der Tat wird Douglas C. Engelbart am Rande erwähnt)&lt;/li&gt;
&lt;li&gt;Brooks diskutiert dann praktische Unterschiede zwischen Papier und Microfiche, die heutzutage keine Relevanz mehr haben (aber ein Nachteil: die Verteilung aktualisierter physischer Seiten sorgte dafür, dass die Erbauer mitbekamen, wo sich wann was ändert)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;D. L. Parnas von der Carnegie-Mellon-Universität hat eine noch radikalere Lösung vorgeschlagen. Seine These lautet, dass ein Programmierer am effektivsten ist, wenn er von den Details der Konstruktion von Systemteilen, die nicht seine eigenen sind, abgeschirmt wird, anstatt ihnen ausgesetzt zu sein. Dies setzt voraus, dass alle Schnittstellen vollständig und genau definiert sind. Dies ist zwar ein solider Entwurf, aber in der Abhängigkeit von seiner perfekten Ausführung ist eine Katastrophe vorprogrammiert. Ein gutes Informationssystem deckt Schnittstellenfehler auf und regt zu deren Korrektur an.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Xyrill stimmt voll und ganz zu: sorgfältiges Gegenlesen der Meeting-Minutes der benachbarten Teams ist zwar extrem zeitaufwändig, verhindert aber regelmäßig katastrophale Design-Entscheidungen&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Organisationsstruktur: Brooks hält eine baumförmige Organisationsstruktur für unausweichlich (mehrere Vorgesetzte für einen Angestellten = Chaos) und schaut darauf, was jedes Team haben sollte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Produzent (&amp;quot;Producer&amp;quot;): stellt das Team zusammen, verteilt Arbeit, definiert Ziele und Zeitpläne, kommuniziert &lt;strong&gt;außerhalb&lt;/strong&gt; des Teams&lt;/li&gt;
&lt;li&gt;Architekt bzw. technischer Leiter (&amp;quot;Technical Director&amp;quot;): entwirft das Design und entwickelt es fortlaufend weiter, kommuniziert &lt;strong&gt;innerhalb&lt;/strong&gt; des Teams&lt;/li&gt;
&lt;li&gt;drei Optionen, wie diese Rollen verteilt sein können&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Option 1: Produzent und Architekt sind dieselbe Person&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nur für kleine Teams gangbar, bis etwa 3-6 Personen&lt;/li&gt;
&lt;li&gt;&amp;quot;Denker sind rar; Macher sind rarer; und Denker-Macher sind am rarsten.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Option 2: Produzent als Chef, Architekt als seine rechte Hand&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;funktioniert nur, wenn der Produzent die technische Autorität des Architekten akzeptiert&lt;/li&gt;
&lt;li&gt;Xyrill hat lange in einem derartigen Zweierteam als Architekt gearbeitet und weiß, dass es funktionieren kann; kommt aber extrem auf die interpersonelle Dynamik des Duos an&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Option 3: Architekt als Chef, Produzent als seine rechte Hand&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;findet Brooks am besten; Xyrill ist geneigt, zuzustimmen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Noch mehr&lt;/h3&gt;
&lt;p&gt;Es gibt noch acht weitere Kapitel, die wir irgendwann™ mal besprechen werden.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:57" title="Prolog"  />
          <chapter start="00:04:36" title="Kapitel 4: Aristokratie, Demokratie und System-Design"  />
          <chapter start="00:22:51" title="Kapitel 5: Das Problem des zweiten Systems"  />
          <chapter start="00:36:53" title="Kapitel 6: Weitergabe von Informationen"  />
          <chapter start="00:52:47" title="Kapitel 7: Warum ist der Turm zu Babel gefallen?"  />
      </chapters>
      <enclosure length="66976082" url="https://dl.xyrillian.de/noises/stp-074-vom-mythos-des-mann-monats-teil-2.mp3" type="audio/mpeg"/>
      <enclosure length="42305752" url="https://dl.xyrillian.de/noises/stp-074-vom-mythos-des-mann-monats-teil-2.ogg" type="audio/ogg"/>
      <enclosure length="25479761" url="https://dl.xyrillian.de/noises/stp-074-vom-mythos-des-mann-monats-teil-2.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/074-vom-mythos-des-mann-monats-teil-2/</guid>
    <pubDate>Thu, 19 Jun 2025 19:20:00 GMT</pubDate>
    <itunes:duration>69:25</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP073: Was aus Holz</itunes:title>
    <itunes:episode>73</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP073: Was aus Holz</title>
    <link>https://schluesseltechnologie-podcast.de/073-was-aus-holz</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Diesmal vieleicht doch eher aus Interesse denn aus Resignation. Wieder geht&#39;s um Holz. Allerdings noch nicht so weit, wie Xyrill sich das zuerst vorgestellt hatte.</itunes:summary>
    <description>Diesmal vieleicht doch eher aus Interesse denn aus Resignation. Wieder geht&#39;s um Holz. Allerdings noch nicht so weit, wie Xyrill sich das zuerst vorgestellt hatte.</description>
    <content:encoded>&lt;p&gt;Diesmal vieleicht doch eher aus Interesse denn aus Resignation. Wieder geht&#39;s um Holz. Allerdings noch nicht so weit, wie Xyrill sich das zuerst vorgestellt hatte.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP072: Programmierung besteht aus Algorithmen und Datenstrukturen, Holzbau besteht aus Materialien (siehe STP053) und Fertigungstechniken (diesmal)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Als Beispiel die Herstellung einer Leimholzplatte (z.B.: Tischplatte, Schrankseite, Wandverkleidung, …) aus Schnittholz. Wir gehen die Technologie durch und Besprechen dabei auch die Maschinen. Hierbei hauptsächlich stationäre Werkstattmaschinen im Gegensatz zu Handmaschinen: &lt;a href=&#34;https://blog.schneidbrettguru.de/wann-ist-ein-holzschneidebrett-wirklich-gut-gemacht/&#34;&gt;https://blog.schneidbrettguru.de/wann-ist-ein-holzschneidebrett-wirklich-gut-gemacht/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 1: Auftrennen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;heute praktisch immer mit der &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Formatkreiss%C3%A4ge&amp;amp;oldid=250332118&#34;&gt;Kreissäge&lt;/a&gt;, besonders für große Querschnitte praktisch wegen Schiebeschlitten, beim Auftrennen Auftrennblatt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 2: Abrichten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mithilfe einer sogenannten &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Abrichthobelmaschine&amp;amp;oldid=246476675&#34;&gt;Abrichthobelmaschine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;plan machen und Winkelkante erstellen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 3: Aushobeln&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Herstellung von parallelen Flächen zu den bisher abgerichteten mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dickenhobelmaschine&amp;amp;oldid=246478371&#34;&gt;Dickenhobelmaschine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exkurs Fügen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stumpfe Fuge: glatte Flächen&lt;/li&gt;
&lt;li&gt;Gefälzte Fuge: mit einfachem &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Falz_(Verbindungstechnik)&amp;amp;oldid=252678839#Verwendung_au%C3%9Ferhalb_der_Verbindungstechnik&#34;&gt;Falz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Nut-Feder-Verbindung&amp;amp;oldid=223399782&#34;&gt;Nut-Spund&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nut-Feder&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.schneidbrettguru.de/wp-content/uploads/2018/01/Kronenfuge-schema-langholz-mit-stumpf.png&#34;&gt;Kronenfuge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Die profilierten Verbindungen werden mit einer &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fr%C3%A4smaschine&amp;amp;oldid=246835345#Tischfr%C3%A4smaschine&#34;&gt;Tischfräsmaschine&lt;/a&gt; hergestellt, eventuell auch mit einer &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Oberfr%C3%A4se&amp;amp;oldid=251149164&#34;&gt;Oberfräse&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 4: Verleimen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In userem Fall einfach mit Weißleim, weil Leime ca. 5 Einzelsendungen sind&lt;/li&gt;
&lt;li&gt;Pressen mit Zwingen oder mechanischen Pressen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 5: nochmal Aushobeln&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jetzt aber die ganze Platte mit einem Mal, eventuell auch vorher abrichten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 6: nochmal Winkelkante&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jetzt aber die ganze Platte mit einem Mal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 7: Formatzuschnitt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wieder mit der Formatkreissäge, jetzt aber die ganze Platte und mit einem Feinschnittblatt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Addendum zu STP072"  />
          <chapter start="00:03:33" title="Post aus Schweden"  />
          <chapter start="00:07:10" title="Intro und Prolog"  />
          <chapter start="00:10:57" title="Technologie, und was wir heute tun"  />
          <chapter start="00:18:04" title="Grobes Ablängen"  />
          <chapter start="00:20:00" title="Längszuschnitt"  />
          <chapter start="00:25:52" title="Abrichten"  />
          <chapter start="00:36:01" title="Aushobeln"  />
          <chapter start="00:41:42" title="Fugen"  />
          <chapter start="00:54:58" title="Verleimen"  />
          <chapter start="01:00:53" title="Nochmal Aushobeln"  />
          <chapter start="01:02:06" title="Verschnitt"  />
          <chapter start="01:05:47" title="Formzuschnitt und handwerkliches Geschick"  />
          <chapter start="01:07:47" title="Das alles geht auch anders"  />
      </chapters>
      <enclosure length="69391480" url="https://dl.xyrillian.de/noises/stp-073-was-aus-holz.mp3" type="audio/mpeg"/>
      <enclosure length="41476651" url="https://dl.xyrillian.de/noises/stp-073-was-aus-holz.ogg" type="audio/ogg"/>
      <enclosure length="24817804" url="https://dl.xyrillian.de/noises/stp-073-was-aus-holz.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/073-was-aus-holz/</guid>
    <pubDate>Thu, 29 May 2025 20:00:00 GMT</pubDate>
    <itunes:duration>71:56</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP072: Der Datentypeneisberg</itunes:title>
    <itunes:episode>72</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP072: Der Datentypeneisberg</title>
    <link>https://schluesseltechnologie-podcast.de/072-der-datentypeneisberg</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Auch heute geht es mit Rost und Kaffee weiter, allerdings mit grundsätzlicheren Datentypen. ttimeless wird von besonders winzigen Datentypen überrascht und Xyrill formuliert Gedanken darüber, warum Struktur das Handeln bestimmen sollte.</itunes:summary>
    <description>Auch heute geht es mit Rost und Kaffee weiter, allerdings mit grundsätzlicheren Datentypen. ttimeless wird von besonders winzigen Datentypen überrascht und Xyrill formuliert Gedanken darüber, warum Struktur das Handeln bestimmen sollte.</description>
    <content:encoded>&lt;p&gt;Auch heute geht es mit Rost und Kaffee weiter, allerdings mit grundsätzlicheren Datentypen. ttimeless wird von besonders winzigen Datentypen überrascht und Xyrill formuliert Gedanken darüber, warum Struktur das Handeln bestimmen sollte.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP071: anhand von JSON haben wir die sichtbaren Datentypen besprochen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;heute tauchen wir unter die Wasseroberfläche ab und schauen auf Typen, die man eher im Speicher als in einer Datei sieht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einwurf Kombinatorik: Wieviele mögliche Werte haben die vorgenannten Typen (sofern nicht unendlich)? (wir schreiben &lt;code&gt;K(T)&lt;/code&gt; für die Kardinalität des Typs &lt;code&gt;T&lt;/code&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boolean: &lt;code&gt;K(bool) = 2&lt;/code&gt; (&lt;code&gt;true&lt;/code&gt; oder &lt;code&gt;false&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Zahlen: &lt;code&gt;K(T_N) = 2^N&lt;/code&gt; Werte für Zahltypen mit &lt;code&gt;N&lt;/code&gt; Bits (z.B. 256 für &lt;code&gt;i8&lt;/code&gt; oder 65536 für &lt;code&gt;u16&lt;/code&gt;), weil jedes Bit zwei Werte hat, die unabhängig voneinander gewählt werden können&lt;/li&gt;
&lt;li&gt;Listen fester Länge: &lt;code&gt;K([T; N]) = K(T)^N&lt;/code&gt; für &lt;code&gt;K(T)&lt;/code&gt; mögliche Werte des Elementtyps &lt;code&gt;T&lt;/code&gt; und Länge &lt;code&gt;N&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Listen variabler Länge: &lt;code&gt;K(Vec&amp;lt;T&amp;gt;) = ∞&lt;/code&gt; bis auf praktische Platzbeschränkungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listen wirken sich auf die Kardinalität also wie eine Potenzierung aus&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gibt es auch andere Rechenoperationen? -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Algebraischer_Datentyp&amp;amp;oldid=248147888&#34;&gt;algebraische Datentypen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Produkttypen: Gesamttyp &lt;code&gt;P&lt;/code&gt; enthält je einen Wert von Typ &lt;code&gt;T_1, T_2, ..., T_N&lt;/code&gt;, somit &lt;code&gt;K(P) = K(T_1) * K(T_2) * ... * K(T_N)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in Rust: entweder als Tupel (geordnete Folge von Werten, die mit Zahlenindizes bezeichnet sind), z.B. &lt;code&gt;type Vector3D = (f64, f64, f64)&lt;/code&gt;, oder als Strukturtypen (ungeordnete Menge von Werten, die mit Namen bezeichnet sind, z.B. &lt;code&gt;struct Person { first_name: String, last_name: String }&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;in JSON: Tupel als Listen, Strukturtypen als Objekte (beim Einlesen muss die Elementzahl bzw. die Namen der Elemente geprüft werden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Summentypen: Gesamttyp &lt;code&gt;S&lt;/code&gt; enthält entweder einen Wert vom Typ &lt;code&gt;T_1&lt;/code&gt; oder &lt;code&gt;T_2&lt;/code&gt; oder ... oder &lt;code&gt;T_N&lt;/code&gt;, somit &lt;code&gt;K(P) = K(T_1) &#43; K(T_2) &#43; ... &#43; K(T_N)&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in Rust: Enumerationstyp, z.B. &lt;code&gt;enum ParseResult { Ok(DataStructure), Err(ParseError) }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;in JSON: keine klare Konvention, Serialisierung in Rust erzeugt ein Objekt mit einem Eintrag, die nach der jeweiligen Variante benannt ist (z.B. &lt;code&gt;{&amp;quot;Ok&amp;quot;: ...}&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;sehr kleine Spezialfälle: Gibt es Datentypen, die kleiner als &lt;code&gt;bool&lt;/code&gt; sind?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Produkttyp mit null Feldern (in Rust &lt;code&gt;struct Empty {}&lt;/code&gt;): nur ein möglicher Wert (1 ist das neutrale Element der Multiplikation)
&lt;ul&gt;
&lt;li&gt;in JSON kann man das als &lt;code&gt;null&lt;/code&gt; serialisieren&lt;/li&gt;
&lt;li&gt;in Rust kommt dies im Summentyp &lt;code&gt;enum Option&amp;lt;T&amp;gt; { Some(T), None }&lt;/code&gt; vor; &lt;code&gt;None&lt;/code&gt; ist hier im Prinzip eine Kurzschreibweise für &lt;code&gt;None(Empty)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Summentyp mit null Varianten (in Rust &lt;code&gt;enum Impossible {}&lt;/code&gt;): keine möglichen Werte (0 ist das neutrale Element der Addition)
&lt;ul&gt;
&lt;li&gt;in JSON nicht darstellbar (keine Werte haben keine Serialisierung)&lt;/li&gt;
&lt;li&gt;in Rust kommt so ein Typ in Funktionen vor, die kein Ergebnis liefern (z.B. &lt;code&gt;quit()&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;nützlicher, als es zunächst erscheint, sobald &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Monomorphization&amp;amp;oldid=1246708145&#34;&gt;Monomorphisierung&lt;/a&gt; ins Spiel kommt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abendgedanken: Warum das ganze Gerede über Datentypen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;angewandte Programmierung besteht aus zwei (verwandten) Teildisziplinen: Algorithmen (das Wie, der Rechenteil) und Datenstrukturen (das Was, der Speicherteil)&lt;/li&gt;
&lt;li&gt;Xyrill hält Datenstrukturen für das Fundament; die Wahl der Algorithmen muss an zweiter Stelle kommen&lt;/li&gt;
&lt;li&gt;vergleichbarer Ansatz in klassischen Software-Design-Lehrbüchern wie &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Structure_and_Interpretation_of_Computer_Programs&amp;amp;oldid=1244483390&#34;&gt;SICP&lt;/a&gt; und &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=How_to_Design_Programs&amp;amp;oldid=1251901750&#34;&gt;HtDP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:37" title="Was bisher geschah"  />
          <chapter start="00:04:55" title="Kombinatorik"  />
          <chapter start="00:11:48" title="Algebraische Datentypen"  />
          <chapter start="00:12:37" title="Produkttypen"  />
          <chapter start="00:16:26" title="Summentypen"  />
          <chapter start="00:26:45" title="Sehr kleine Spezialfälle"  />
          <chapter start="00:43:06" title="Abendgedanken"  />
      </chapters>
      <enclosure length="47329892" url="https://dl.xyrillian.de/noises/stp-072-der-datentypeneisberg.mp3" type="audio/mpeg"/>
      <enclosure length="28752624" url="https://dl.xyrillian.de/noises/stp-072-der-datentypeneisberg.ogg" type="audio/ogg"/>
      <enclosure length="17323516" url="https://dl.xyrillian.de/noises/stp-072-der-datentypeneisberg.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/072-der-datentypeneisberg/</guid>
    <pubDate>Thu, 08 May 2025 20:15:00 GMT</pubDate>
    <itunes:duration>48:57</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP071: Das Periodensystem der Datentypen</itunes:title>
    <itunes:episode>71</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP071: Das Periodensystem der Datentypen</title>
    <link>https://schluesseltechnologie-podcast.de/071-das-periodensystem-der-datentypen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Offenbar gibt es unterschiedliche Ergebnisse, wenn verschiedene Datentypen für die gleichen Dinge verwendet werden. Wir fangen heute mal damit an, zu verstehen, welche Datentypen es denn überhaupt gibt. Außerdem geht es scheinbar um Kaffee und Rost.</itunes:summary>
    <description>Offenbar gibt es unterschiedliche Ergebnisse, wenn verschiedene Datentypen für die gleichen Dinge verwendet werden. Wir fangen heute mal damit an, zu verstehen, welche Datentypen es denn überhaupt gibt. Außerdem geht es scheinbar um Kaffee und Rost.</description>
    <content:encoded>&lt;p&gt;Offenbar gibt es unterschiedliche Ergebnisse, wenn verschiedene Datentypen für die gleichen Dinge verwendet werden. Wir fangen heute mal damit an, zu verstehen, welche Datentypen es denn überhaupt gibt. Außerdem geht es scheinbar um Kaffee und Rost.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=JavaScript_Object_Notation&amp;amp;oldid=249644714&#34;&gt;JSON&lt;/a&gt;: ein populäres Format für die Serialisierung von Daten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Serialisierung&amp;amp;oldid=241468956&#34;&gt;Serialisierung&lt;/a&gt;: &amp;quot;Abbildung von strukturierten Daten auf eine sequenzielle Darstellungsform&amp;quot;, insb. auf Bytefolgen wie in einer Datei oder einer Datenübertragung im Netzwerk&lt;/li&gt;
&lt;li&gt;JSON ist bekannt dafür, nicht erfunden, sondern &amp;quot;entdeckt&amp;quot; worden zu sein&lt;/li&gt;
&lt;li&gt;außerdem relativ minimal: nur sechs verschiedene Grundstrukturen&lt;/li&gt;
&lt;li&gt;aber trotzdem relativ universell: damit unser Ausgangspunkt für die Kartografierung der Welt der Datentypen&lt;/li&gt;
&lt;li&gt;außerdem Gegenüberstellung mit dem Typvorrat von Rust (einer zeitgenössischen Programmiersprache mit einem detaillierten Typsystem)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;atomare Datentypen: einzelne Werte (C&#43;&#43; nennt sie &amp;quot;Plain Old Data&amp;quot; (POD), Perl nennt sie &amp;quot;Skalare&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Boolean: ein Bit (wahr oder falsch)
&lt;ul&gt;
&lt;li&gt;Typvorrat in Rust: &lt;code&gt;bool&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;in JSON: &lt;code&gt;true&lt;/code&gt; oder &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zahlen: in verschiedenen Bitgrößen, mit oder ohne Vorzeichen, Ganzzahl oder Fließkommazahl
&lt;ul&gt;
&lt;li&gt;Typvorrat in Rust: &lt;code&gt;u8/i8, u16/i16, u32/i32, u64/i64, u128/i128, usize/isize, f32, f64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;in JSON: wie gewohnt ausgeschrieben (z.B. &lt;code&gt;42&lt;/code&gt;, &lt;code&gt;-23.5&lt;/code&gt;) oder in wissenschaftlicher Notation (z.B. &lt;code&gt;7.297e-3&lt;/code&gt; oder &lt;code&gt;-6.022E23&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zeichenfolgen: nicht wirklich unteilbar, aber wird für gewöhnlich als einzelner Wert verstanden
&lt;ul&gt;
&lt;li&gt;Typvorrat in Rust: &lt;code&gt;String&lt;/code&gt; (UTF-8), &lt;code&gt;OsString&lt;/code&gt; (Kodierung gemäß Zeichentabelle des Systems) und andere&lt;/li&gt;
&lt;li&gt;in JSON: als Zeichenkette mit Anführungszeichen und mit Escape-Sequenzen für nicht druckbare Zeichen (z.B. &lt;code&gt;&amp;quot;Mit freundlichen Grüßen\nErika Mustermann&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fehlender Wert: in JSON &lt;code&gt;null&lt;/code&gt; (heißt woanders vielleicht auch &lt;code&gt;nil&lt;/code&gt;)
&lt;ul&gt;
&lt;li&gt;Typvorrat in Rust: siehe später&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listen: ein abgeleiteter Datentyp&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;deswegen vorhin &amp;quot;atomar&amp;quot;: der Typ einer Liste bestimmt sich aus dem Typ der Elemente (in statisch typisierten Programmiersprachen ist z.B. &amp;quot;Liste von 8-Bit-Zahlen&amp;quot; etwas anderes als &amp;quot;Liste von Strings&amp;quot; oder &amp;quot;Liste von Listen von Strings&amp;quot;)&lt;/li&gt;
&lt;li&gt;Typvorrat in Rust:
&lt;ul&gt;
&lt;li&gt;mit variabler Länge: &lt;code&gt;Vec&amp;lt;X&amp;gt;&lt;/code&gt;, wobei &lt;code&gt;X&lt;/code&gt; für den Typ der Elemente steht (Beispiele zu oben: &lt;code&gt;Vec&amp;lt;u8&amp;gt;&lt;/code&gt;, &lt;code&gt;Vec&amp;lt;String&amp;gt;&lt;/code&gt;, &lt;code&gt;Vec&amp;lt;Vec&amp;lt;String&amp;gt;&amp;gt;&lt;/code&gt;); der Name &amp;quot;Vec&amp;quot; deutet auf die Struktur im Arbeitsspeicher hin&lt;/li&gt;
&lt;li&gt;mit fester Länge: &lt;code&gt;[X; N]&lt;/code&gt;, wobei &lt;code&gt;N&lt;/code&gt; für die Anzahl von Elementen steht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;in JSON: kommagetrennte Liste der Elemente in eckigen Klammern (z.B. &lt;code&gt;[42, 23]&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Unterschiede zu Rust:
&lt;ul&gt;
&lt;li&gt;JSON ist nicht statisch typisiert und hat nur einen Listentyp, der alle möglichen Elemente enthalten kann und beliebig lang sein kann (z.B. &lt;code&gt;[42, &amp;quot;Hallo&amp;quot;, []]&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;assoziative Datenfelder: ein anderer abgeleiteter Datentyp&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;enthält nicht einzelne Elemente, sondern Paare von Schlüssel und Wert; ermöglicht schnellen Zugriff auf einen Wert anhand seines Schlüssels&lt;/li&gt;
&lt;li&gt;heißt je nach Programmiersprache bzw. Datenformat &amp;quot;Objekt&amp;quot;, &amp;quot;Map&amp;quot;, &amp;quot;Dictionary&amp;quot; etc.&lt;/li&gt;
&lt;li&gt;Typvorrat in Rust: unter anderem &lt;code&gt;HashMap&amp;lt;K, V&amp;gt;&lt;/code&gt;, wobei &lt;code&gt;K&lt;/code&gt; der Schlüsseltyp (&amp;quot;key&amp;quot;) und &lt;code&gt;V&lt;/code&gt; der Werttyp (&amp;quot;value&amp;quot;) ist; der Name &amp;quot;HashMap&amp;quot; deutet auf die Struktur im Arbeitsspeicher hin&lt;/li&gt;
&lt;li&gt;in JSON: kommagetrennte Liste von Wertpaaren in geschweiften Klammern, die Wertpaare jeweils mit Doppelpunkt getrennt; der Schlüssel muss ein String sein (z.B. &lt;code&gt;{&amp;quot;Karo&amp;quot;: 9, &amp;quot;Herz&amp;quot;: 10, &amp;quot;Pik&amp;quot;: 11, &amp;quot;Kreuz&amp;quot;: 12}&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;wiederum Unterschied zu Rust: Werte verschiedener Typen dürfen gemischt werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Damit ist alles beschrieben, was JSON kann, doch es gibt so viel mehr! Beispiele für abgeleitete Datentypen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mengen (&amp;quot;Sets&amp;quot;): wie Listen, aber ohne definierte Ordnung
&lt;ul&gt;
&lt;li&gt;in Rust: &lt;code&gt;HashSet&amp;lt;X&amp;gt;&lt;/code&gt;; der Name &amp;quot;HashSet&amp;quot; deutet auf die Struktur im Arbeitsspeicher hin&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Graphen: Netzwerke von Knoten mit Kanten dazwischen (z.B. Straßenkarte: Kreuzungen = Knoten, Straßen = Kanten)
&lt;ul&gt;
&lt;li&gt;in Rust: kein entsprechender Typ in der Standardbibliothek&lt;/li&gt;
&lt;li&gt;ähnlich wie bei Listen und assoziativen Datenfeldern viele verschiedene Implementationsstrategien, aber bei Graphen gibt es keinen &amp;quot;Standardansatz&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Außerdem ist JSON relativ restriktiv in der Auswahl an PODs. Andere Serialisierungsformate unterstützen zum Beispiel Datums- oder Zeitangaben, Referenzen auf externe Dateien etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hörtipp: &lt;a href=&#34;https://www.corecursive.com/json-vs-xml-douglas-crockford/&#34;&gt;Douglas Crockford bei CoRecursive zur Entstehung von JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lehrbuch: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Structure_and_Interpretation_of_Computer_Programs&amp;amp;oldid=1244483390&#34;&gt;Structure and Interpretation of Computer Programs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Postkarte aus Potsdam"  />
          <chapter start="00:05:03" title="Intro"  />
          <chapter start="00:09:24" title="Serialisierung und JSON"  />
          <chapter start="00:14:04" title="Softwaredesign"  />
          <chapter start="00:18:26" title="Atomare Datentypen"  />
          <chapter start="00:37:12" title="Abgeleitete Datentypen: Listen"  />
          <chapter start="00:48:09" title="Abgeleitete Datentypen: Assoziative Datenfelder"  />
          <chapter start="00:53:20" title="Was JSON nicht kann"  />
      </chapters>
      <enclosure length="59871018" url="https://dl.xyrillian.de/noises/stp-071-das-periodensystem-der-datentypen.mp3" type="audio/mpeg"/>
      <enclosure length="37095430" url="https://dl.xyrillian.de/noises/stp-071-das-periodensystem-der-datentypen.ogg" type="audio/ogg"/>
      <enclosure length="22397227" url="https://dl.xyrillian.de/noises/stp-071-das-periodensystem-der-datentypen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/071-das-periodensystem-der-datentypen/</guid>
    <pubDate>Thu, 17 Apr 2025 18:25:00 GMT</pubDate>
    <itunes:duration>62:01</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP070: Blitzgespräche</itunes:title>
    <itunes:episode>70</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP070: Blitzgespräche</title>
    <link>https://schluesseltechnologie-podcast.de/070-blitzgespraeche</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Manche Dinge geben keine ganze Folge her. Dies ist der Versuch, ein paar davon zusammenzufassen: Wie definiert sich ein Geek? Bringt es etwas, den Computer aus und wieder einzuschalten? Und rechnet es sich vielleicht in umgekehrtem Polnisch besser?</itunes:summary>
    <description>Manche Dinge geben keine ganze Folge her. Dies ist der Versuch, ein paar davon zusammenzufassen: Wie definiert sich ein Geek? Bringt es etwas, den Computer aus und wieder einzuschalten? Und rechnet es sich vielleicht in umgekehrtem Polnisch besser?</description>
    <content:encoded>&lt;p&gt;Manche Dinge geben keine ganze Folge her. Dies ist der Versuch, ein paar davon zusammenzufassen: Wie definiert sich ein Geek? Bringt es etwas, den Computer aus und wieder einzuschalten? Und rechnet es sich vielleicht in umgekehrtem Polnisch besser?&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;im Intro erwähnt:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Eternal_September&#34;&gt;Eternal September&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://media.ccc.de/v/subscribe11-58195-im-dunkeln-ist-alles-viel-aufregender&#34;&gt;Im Dunkeln ist alles viel aufregender&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Talk Nr. 1:&lt;/strong&gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Geek_Code&#34;&gt;Geek Code&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Primärquelle (Version 3.12, Stand vom 5. März 1996): &lt;a href=&#34;https://web.archive.org/web/20090220181018/http://geekcode.com/geek.html&#34;&gt;https://web.archive.org/web/20090220181018/http://geekcode.com/geek.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vordergründig: eine kompakte Notation zur Selbstbeschreibung von Geeks durch eine Menge von Attributen und Interessen
&lt;ul&gt;
&lt;li&gt;Beispiel: das Attribut &lt;code&gt;d&lt;/code&gt; beschreibt den eigenen Dresscode (&lt;code&gt;d&#43;&#43;&lt;/code&gt; für den Anzugträger, &lt;code&gt;d-&lt;/code&gt; für Jeans und T-Shirt, &lt;code&gt;!d&lt;/code&gt; für nackt etc.)&lt;/li&gt;
&lt;li&gt;diverse Modifier, z.B. &lt;code&gt;$&lt;/code&gt; für &amp;quot;damit verdiene ich Geld&amp;quot; oder &lt;code&gt;&amp;gt;&lt;/code&gt; für ein persönliches Entwicklungsziel&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;code&gt;C&#43;&#43;&lt;/code&gt; alleine ist &amp;quot;ich kenne mich gut mit Computern aus&amp;quot;, &lt;code&gt;C&#43;&#43;&amp;gt;$&lt;/code&gt; ist &amp;quot;...und möchte damit Geld verdienen&amp;quot;&lt;/li&gt;
&lt;li&gt;Xyrill fühlt sich an die Grammatik &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Agglutinierende_Sprache&amp;amp;oldid=232734095&#34;&gt;agglutinierender Sprachen&lt;/a&gt; erinnert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Parallele zum Jargon File (siehe STP050): Geek Code ist ein Produkt seiner Zeit und Subkultur mit veralteten Debatten (z.B. interessiert sich heute noch jemand für Babylon 5 oder Akte X?) tendenziösen Einschätzungen (z.B. vgl. &lt;code&gt;h---&lt;/code&gt; mit &lt;code&gt;r&#43;&#43;&#43;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Kann es sowas heute nochmal geben?
&lt;ul&gt;
&lt;li&gt;Wahrscheinlich schwierig, man bräuchte zu viele Subkategorien.&lt;/li&gt;
&lt;li&gt;Passt wahrscheinlich nicht für die heutigen visuell dominierten Medien (YouTube, TikTok, Instagram etc.).&lt;/li&gt;
&lt;li&gt;Vielleicht für Dating?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Talk Nr. 2:&lt;/strong&gt; Ist was dran an &amp;quot;try turning it off and on again&amp;quot;? Ja! Hierzu eine Kurzeinführung in Kombinatorik:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein Speicher mit einem Bit kann zwei Zustände annehmen (klar)&lt;/li&gt;
&lt;li&gt;ein Speicher mit zwei Bit kann &lt;code&gt;2 * 2 = 4&lt;/code&gt; Zustände annehmen
&lt;ul&gt;
&lt;li&gt;Beispiel/Analogie: UI mit zwei Checkboxen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;aber nur, wenn die Bits voneinander unabhängig sind
&lt;ul&gt;
&lt;li&gt;Beispiel: UI für Ticketkauf, Checkbox 1 = &amp;quot;ist Kind&amp;quot;, Checkbox 2 = &amp;quot;ist Rentner&amp;quot;&lt;/li&gt;
&lt;li&gt;von vier Zuständen ist einer ungültig: Kinder können nicht Rentner sein&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;kombinatorische Explosion: bei mehr Bits exponentiell mehr mögliche Zustände, die meisten davon ungültig
&lt;ul&gt;
&lt;li&gt;Programmfehler oder &amp;quot;kosmische Strahlung&amp;quot; können dazu führen, dass ungültige Zustände erreicht werden&lt;/li&gt;
&lt;li&gt;&amp;quot;Aus- und Wiederanschalten&amp;quot; ist die ultimative Form des Zurücksetzens in einen gültigen Zustand&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Talk Nr. 3:&lt;/strong&gt; Umgekehrte polnische Notation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wie schreibt man mathematische Ausdrücke?
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Infix-Notation:&lt;/strong&gt; die klassische Schreibweise für mathematische Ausdrücke, bei der Operatoren zwischen ihren Operanden stehen&lt;/li&gt;
&lt;li&gt;Problem: Operationsreihenfolge muss entweder per Konvention (&amp;quot;Punkt vor Strich&amp;quot;) oder durch Klammern klargestellt werden (Bsp. &lt;code&gt;2 * 3 &#43; 5 = (2 * 3) &#43; 5 ≠ 2 * (3 &#43; 5)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Polnische_Notation&amp;amp;oldid=249108401&#34;&gt;Polnische Notation&lt;/a&gt;: Operatoren stehen vor ihren Operanden (Bsp. &lt;code&gt;&#43; * 2 3 5&lt;/code&gt; bzw. &lt;code&gt;* 2 &#43; 3 5&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;hier technisch gesehen keine Klammern notwendig (außer um Menschen das Lesen zu erleichtern, Bsp. &lt;code&gt;&#43; (* 2 3) 5&lt;/code&gt; bzw. &lt;code&gt;* 2 (&#43; 3 5)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Umgekehrte_polnische_Notation&amp;amp;oldid=249951216&#34;&gt;Umgekehrte polnische Notation (RPN)&lt;/a&gt;: Operatoren stehen hinter ihren Operanden (Bsp. &lt;code&gt;2 3 * 5 &#43;&lt;/code&gt; bzw. &lt;code&gt;2 3 5 &#43; *&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Warum würde man das machen wollen?
&lt;ul&gt;
&lt;li&gt;RPN entspricht dem Betriebsmodus eines Kellerautomaten (siehe STP021)&lt;/li&gt;
&lt;li&gt;Kellerautomaten kann man extrem günstig in Hardware implementieren (d.h. mit sehr wenig Code, mit sehr wenig Prozessorregistern, mit wenig Speicher)&lt;/li&gt;
&lt;li&gt;Praxisbeispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Forth_(Programmiersprache)&amp;amp;oldid=249759593&#34;&gt;Forth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Praxisbeispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=HP-12C&amp;amp;oldid=245054308&#34;&gt;HP-12C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:07:19" title="Eternal September und Busse"  />
          <chapter start="00:15:06" title="Geek Code"  />
          <chapter start="00:29:51" title="Try turning it off and on again"  />
          <chapter start="00:41:32" title="Umgekehrte polnische Notation"  />
      </chapters>
      <enclosure length="56988475" url="https://dl.xyrillian.de/noises/stp-070-blitzgespraeche.mp3" type="audio/mpeg"/>
      <enclosure length="36135823" url="https://dl.xyrillian.de/noises/stp-070-blitzgespraeche.ogg" type="audio/ogg"/>
      <enclosure length="21591069" url="https://dl.xyrillian.de/noises/stp-070-blitzgespraeche.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/070-blitzgespraeche/</guid>
    <pubDate>Thu, 27 Mar 2025 21:22:00 GMT</pubDate>
    <itunes:duration>59:01</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP069: Anatomie einer GUI</itunes:title>
    <itunes:episode>69</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP069: Anatomie einer GUI</title>
    <link>https://schluesseltechnologie-podcast.de/069-anatomie-einer-gui</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wer hat sich nicht schon einmal über schlechte Benutzeroberflächen geärgert? Aber wer wiederum hat sich Gedanken gemacht, warum diese Oberflächen so sind, wie sie sind, oder wie das Ganze überhaupt zustande kommt?</itunes:summary>
    <description>Wer hat sich nicht schon einmal über schlechte Benutzeroberflächen geärgert? Aber wer wiederum hat sich Gedanken gemacht, warum diese Oberflächen so sind, wie sie sind, oder wie das Ganze überhaupt zustande kommt?</description>
    <content:encoded>&lt;p&gt;Wer hat sich nicht schon einmal über schlechte Benutzeroberflächen geärgert? Aber wer wiederum hat sich Gedanken gemacht, warum diese Oberflächen so sind, wie sie sind, oder wie das Ganze überhaupt zustande kommt?&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP008 (2D-Grafik) und STP010 (3D-Grafik): dort besprochen die grundsätzliche Methodik zum Zeichnen mit Pixeln, aber wer zeichnet hier eigentlich?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/w/index.php?title=File:Schema_der_Schichten_der_grafischen_Benutzeroberfl%C3%A4che.svg&amp;amp;oldid=796566713&#34;&gt;Infografik&lt;/a&gt; zum Rendering-Ablauf unter Linux, mit Display-Manager (bzw. heutzutage Wayland-Compositor) und Desktop-Shell&lt;/li&gt;
&lt;li&gt;unter Windows war früher alles in explorer.exe, heute gibt es den &lt;a href=&#34;https://learn.microsoft.com/en-us/windows/win32/learnwin32/the-desktop-window-manager&#34;&gt;Desktop Window Manager&lt;/a&gt; dafür&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thema heute: Wie baut man als Anwendungsprogramm seine GUI zusammen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;klassischer Ansatz: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=GUI-Toolkit&amp;amp;oldid=246182813&#34;&gt;GUI-Toolkit&lt;/a&gt;; Programmbibliothek mit vorgefertigten Steuerelementen (Texteingabefeld, Knopf, Checkbox, Listenansicht), siehe Beispielbilder im verlinkten Artikel&lt;/li&gt;
&lt;li&gt;neumodischer Ansatz: Darstellung einer Programmoberfläche mit einer Webbrowser-Engine (z.B. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Electron_(Framework)&amp;amp;oldid=247717134&#34;&gt;Electron&lt;/a&gt;); somit Verwendung von Webtechnologien (HTML, CSS und JavaScript) an Stelle (im Wortsinne) eines GUI-Toolkits
&lt;ul&gt;
&lt;li&gt;bis dahin, dass selbst die Interface-Elemente von Computerspielen mittlerweile quasi mit einem Webbrowser gerendert werden (&lt;a href=&#34;https://coherent-labs.com/products/coherent-gameface/&#34;&gt;Beispielprodukt&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;eine Variation von STP022: Webentwickler gibt es wie Sand am Meer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie baut man so ein GUI-Toolkit? &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Retained_Mode&amp;amp;oldid=245388723&#34;&gt;Retained Mode vs. Immediate Mode&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Retained Mode: die Grafikbibliothek behandelt die Steuerelemente als langlebige Objekte, die vom Programm über die Zeit manipuliert werden&lt;/li&gt;
&lt;li&gt;Immediate Mode: beim Zeichnen jedes Einzelbildes muss das Programm die gewünschten Steuerelemente neu deklarieren; Grafikbibliothek speichert nur wenig Zustand (z.B. aktuelle Cursorposition oder noch nicht verarbeitete Eingabeereignisse)&lt;/li&gt;
&lt;li&gt;Unterschiede:
&lt;ul&gt;
&lt;li&gt;Retained Mode ist intuitiver (aus Entwicklersicht)&lt;/li&gt;
&lt;li&gt;Retained Mode führt oft zu einer Duplikation von Zustandsverwaltung (z.B. speichert das Checkbox-Steuerelement ein Bit, ob es angehakt ist; und der Applikationscode selber speichert ein gleichlautendes Bit, ob die entsprechende Funktion aktiviert ist)&lt;/li&gt;
&lt;li&gt;Immediate Mode ist flexibler (z.B. gibt eine direkte Möglichkeit, die Standard-Steuerelemente noch mit einzelnen Zeichenbefehlen zu erweitern)&lt;/li&gt;
&lt;li&gt;Immediate Mode kann resourcenschonender sein (z.B. geringerer Speicherverbrauch, weil nicht sichtbare Steuerelemente weniger wahrscheinlich im Speicher gehalten werden)&lt;/li&gt;
&lt;li&gt;Immediate Mode kann auch mehr Ressourcen verbrauchen (z.B. weil jedes Einzelbild neu gerendert werden muss, auch wenn sich meist in weiten Teilen gar nichts ändert)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mischform: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=React&amp;amp;oldid=248452835&#34;&gt;React&lt;/a&gt;-artige GUI-Toolkits arbeiten im Retained Mode, aber alle Aktualisierungen führen zu einer kompletten Neudeklaration der betroffenen Steuerelemente; diese Deklaration wird dann mit den vorhandenen Steuerelementen abgeglichen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layoutstrategien: Wie werden Steuerelemente gegeneinander angeordnet?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ziel: ein Arrangement von Steuerelementen soll z.B. auf Änderungen der Fenstergröße sinnfällig reagieren&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://doc.qt.io/qt-6/images/qgridlayout.png&#34;&gt;Beispielbild&lt;/a&gt; aus der &lt;a href=&#34;https://doc.qt.io/qt-6/qgridlayout.html&#34;&gt;Dokumentation zu QGridLayout&lt;/a&gt; -&amp;gt; bei Änderungen der Höhe des Fensters sollen die beiden oberen Zeilen gleichbleiben und nur die unterste Zeile wachsen&lt;/li&gt;
&lt;li&gt;explizite Deklaration durch den Programmentwickler mühselig: stattdessen berechnen Steuerelemente selbst bestimmte Eigenschaften wie &amp;quot;minimale Größe&amp;quot;, &amp;quot;maximale Größe&amp;quot;, &amp;quot;sinnvolle Größe&amp;quot; oder &amp;quot;wieviel profitiere ich von Wachstum&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layoutstrategien bei Webseiten und Webapplikationen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anhand des Textflusses, z.B. Eingabefelder und Links/Schaltflächen innerhalb von Mengentext (in anderen GUI-Toolkits unüblich; das Web ist durch seine Dokumentenorientierung hier besonders)&lt;/li&gt;
&lt;li&gt;für alles andere bis ca. 2013: tabellenbasierte Layouts mit manuell (z.B. per JavaScript) berechneten Größen; in der Praxis frustrierend und fehleranfällig&lt;/li&gt;
&lt;li&gt;seit 2013: &lt;a href=&#34;https://css-tricks.com/snippets/css/a-guide-to-flexbox/&#34;&gt;Flexbox&lt;/a&gt; für Layout von Elementen mit dynamischer Größe nebeneinander bzw. in Form eines Textflusses&lt;/li&gt;
&lt;li&gt;seit 2017: &lt;a href=&#34;https://css-tricks.com/snippets/css/complete-guide-grid/&#34;&gt;Grid&lt;/a&gt; für Layout von Elementen, die sich in ein dynamisches Raster einfügen&lt;/li&gt;
&lt;li&gt;außerdem seit 2009/2010: &lt;a href=&#34;https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_media_queries/Using_media_queries&#34;&gt;CSS Media Queries&lt;/a&gt; zum Umschalten zwischen Layouts auf Basis von Eigenschaften des Endgerätes (Bildschirmgröße und -ausrichtung, Maus- oder Touch-Bedienung, Dark Mode oder Light Mode, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zum Weiterhören: &lt;a href=&#34;https://hedgedoc.c3d2.de/pentaradio-2024-03#&#34;&gt;Pentaradio vom März 2024: &amp;quot;UI: Hui oder pfui?&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und anatomische Scherze"  />
          <chapter start="00:02:12" title="Damals bei Windows"  />
          <chapter start="00:11:04" title="Tiling Window Manager"  />
          <chapter start="00:15:51" title="Nochmal zu Windows"  />
          <chapter start="00:18:38" title="Klassischer Ansatz: GUI-Toolkit"  />
          <chapter start="00:30:45" title="Retained Mode vs. Immediate Mode"  />
          <chapter start="00:44:04" title="React-artiges Vorgehen"  />
          <chapter start="00:54:33" title="Layoutstrategien zu Steuerelementen"  />
          <chapter start="01:03:33" title="Layoutstrategien bei Webseiten"  />
      </chapters>
      <enclosure length="68288773" url="https://dl.xyrillian.de/noises/stp-069-anatomie-einer-gui.mp3" type="audio/mpeg"/>
      <enclosure length="42971400" url="https://dl.xyrillian.de/noises/stp-069-anatomie-einer-gui.ogg" type="audio/ogg"/>
      <enclosure length="25915086" url="https://dl.xyrillian.de/noises/stp-069-anatomie-einer-gui.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/069-anatomie-einer-gui/</guid>
    <pubDate>Thu, 06 Mar 2025 18:45:00 GMT</pubDate>
    <itunes:duration>70:47</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP068: Literatur: Vom Mythos des Mann-Monats</itunes:title>
    <itunes:episode>68</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP068: Literatur: Vom Mythos des Mann-Monats</title>
    <link>https://schluesseltechnologie-podcast.de/068-vom-mythos-des-mann-monats</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode wird ein lang gehegter Traum wahr. Xyrill hat ein Buch gelesen und spricht darüber. Obwohl es nicht sehr dick ist, ist es doch sehr gehaltvoll und so entscheiden wir uns kurz vor Ende der Sendung für eine spontane Planänderung.</itunes:summary>
    <description>In dieser Episode wird ein lang gehegter Traum wahr. Xyrill hat ein Buch gelesen und spricht darüber. Obwohl es nicht sehr dick ist, ist es doch sehr gehaltvoll und so entscheiden wir uns kurz vor Ende der Sendung für eine spontane Planänderung.</description>
    <content:encoded>&lt;p&gt;In dieser Episode wird ein lang gehegter Traum wahr. Xyrill hat ein Buch gelesen und spricht darüber. Obwohl es nicht sehr dick ist, ist es doch sehr gehaltvoll und so entscheiden wir uns kurz vor Ende der Sendung für eine spontane Planänderung.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir lesen die englische Erstausgabe von 1975, die &lt;a href=&#34;https://archive.org/details/MythicalManMonth&#34;&gt;im Internet Archive&lt;/a&gt; digitalisiert wurde.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zum Autor: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Frederick_P._Brooks&amp;amp;oldid=229001327&#34;&gt;Frederick P. Brooks, Jr.&lt;/a&gt; (US-amerikanischer Informatiker, 1931-2022)
&lt;ul&gt;
&lt;li&gt;in den 60ern Entwicklungsleiter bei IBM für das Betriebssystem OS/360 (eines der ersten Systeme mit Unterstützung für persistente Massenspeicher mit Wahlzugriff, sprich: Festplatten)&lt;/li&gt;
&lt;li&gt;gilt als Erfinder des Bytes mit 8 Bit; Wikipedia zitiert Brooks aus einem Interview von 2010:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;„Die wichtigste Entscheidung, die ich je getroffen habe, war, die IBM-360-Serie von einem 6-Bit-Byte auf ein 8-Bit-Byte umzustellen und damit die Verwendung von Kleinbuchstaben zu ermöglichen. Diese Veränderung verbreitete sich überall.“&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;zum Buch: &amp;quot;Vom Mythos des Mann-Monats&amp;quot; (&amp;quot;The Mythical Man-Month&amp;quot;) dokumentiert Brooks&#39; Erfahrungen als Projekt-Manager in einem der frühen großen Software-Projekte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht als Lehrbuch angelegt, weil es dafür &amp;quot;noch zu früh&amp;quot; gewesen sei, sondern als Serie persönlicher Eindrücke und Lektionen&lt;/li&gt;
&lt;li&gt;fast jedes Kapitel ist ein alleinstehendes Essay&lt;/li&gt;
&lt;li&gt;wir wollen schauen, ob diese Lektionen auch heute noch Bestand haben&lt;/li&gt;
&lt;li&gt;in der ersten Hälfte des Buches (Kapitel 2-7) ist das übergreifende Motiv, wie sich die Arbeit in großen Teams von kleinen Teams unterscheidet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hörempfehlung: &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20221227.html&#34;&gt;Pentaradio vom Dezember 2022&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anlässlich Brooks&#39; Tod hatten wir über seinen anderen wichtigen Text &amp;quot;No Silver Bullet&amp;quot; und das Thema Komplexität gesprochen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 1: Die Teergrube&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Teergruben-Analogie: steckt ein Tier mit einem Bein in der Teergrube, kann es das Bein meist aus eigener Kraft herausziehen; alle Beine in der Teergrube sind hingegen meist ein Todesurteil&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analog hierzu: Zähheit/Trägheit in der Software-Entwicklung nicht aus einem bestimmten Grund, sondern aufgrund mehrerer parallel wirkender Gründe&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Programme können von Einzelpersonen oder Zweierteams erschaffen werden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;These: aber nicht &amp;quot;Programmsystemprodukte&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vom Programm zum Programmprodukt: Generalisierung (Nützlichkeit für eine ganze Klasse von Situationen), Testabdeckung (siehe STP038), Dokumentation, fortlaufende Wartung -&amp;gt; heute sagt man &amp;quot;Produktisierung&amp;quot; dazu&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brooks schätzt hier dreimal mehr Aufwand als für das reine Programm&lt;/li&gt;
&lt;li&gt;Xyrill würde heute sogar einen größeren Faktor schätzen, vllt. 4 oder 5: im Bereich der Programmierproduktivität gab es mehr Innovationen beim initialen Schreiben als bei Maintenance (siehe Xyrills Kritik an Ruby als einzeilerorientiert; siehe auch LLMs, aber das verschiebt sich eventuell gerade)&lt;/li&gt;
&lt;li&gt;Parallele zu &amp;quot;warum setzt sich Open Source nicht durch&amp;quot;, siehe Besprechnung von &lt;a href=&#34;https://berthub.eu/articles/posts/open-source-by-itself-is-no-alternative-for-big-tech/&#34;&gt;&amp;quot;Open Source on its own is no alternative to Big Tech&amp;quot;&lt;/a&gt; im &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20241224.html&#34;&gt;Pentaradio vom Dezember 2024&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vom Programm zum Programmsystem: Einbettung in ein Netzwerk anderer Programme mit konsistentem Stil und definierten Schnittstellen untereinander&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brooks legt hier auch Wert auf ein vordefiniertes Ressourcenbudget (CPU-Zeit, Speicher, Datenverkehr) für jedes Teilprogramm -&amp;gt; heute überholt; Effizienz der Belegschaft geht über Effizienz des Produktes&lt;/li&gt;
&lt;li&gt;Brooks schätzt hier &lt;em&gt;mindestens&lt;/em&gt; dreimal mehr Aufwand als für die reinen Programme&lt;/li&gt;
&lt;li&gt;Xyrill stimmt im Großen und Ganzen zu: heute zwar öfter von Anfang an wohlgeformte Schnittstellen (vgl. Unix-Philosophie in STP006, JSON in STP071), aber andererseits gestiegene Gesamtkomplexität&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Programmsystemprodukt: ein produktisiertes Programmsystem&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;somit laut Brooks&#39; Schätzung &lt;code&gt;3 x 3 = 9&lt;/code&gt; Mal mehr Aufwand als für die einzelnen Programme&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 2: Vom Mythos des Mann-Monats&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Problem 1: Programmierer sind schlecht im Schätzen von Zeitaufwand&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inhärenter Optimismus: für jede Teilaufgabe schätzt man den Aufwand im Fall, dass alles gut geht&lt;/li&gt;
&lt;li&gt;These: das Programm entsteht erst im Kopf und dann in der Realität; letzteres dauert länger, aber ein Programm, dass im Kopf fertig ist, fühlt sich schon fertig an&lt;/li&gt;
&lt;li&gt;Programme sind kristallisierte Gedanken auf eine sehr viel direktere Art und Weise als z.B. Handwerksstücke, die kategorisch in ein physisches Artefakt umgesetzt werden müssen&lt;/li&gt;
&lt;li&gt;Testphasen sind von diesem Optimismus am stärksten betroffen
&lt;ul&gt;
&lt;li&gt;Xyrill stimmt im Prinzip zu; allerdings wird heute versucht, Tests bei der Entwicklung einzugliedern (siehe Besprechung von TDD in STP038)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 2: konventielle Planungsmethoden funktionieren nur, wenn &amp;quot;Personen und Monate austauschbar sind&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Basiseinheit: Mann-Monat (heute sagt man Personenmonat); die Menge Arbeit, die eine Person in einem Monat verrichten kann&lt;/li&gt;
&lt;li&gt;Messung von Aufwand in Personenmonaten impliziert, dass eine Aufgabe unter mehreren Personen aufgeteilt werden kann und keine Kommunikation zwischen diesen Personen erforderlich ist
&lt;ul&gt;
&lt;li&gt;kommt hin für z.B. Spargelstechen oder Zimmerreinigung im Hotel, aber: &amp;quot;Das Austragen eines Kindes dauert neun Monate, egal, wieviele Frauen der Aufgabe zugewiesen werden.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;zwei Komplikationen: Einarbeitungszeit (linear in der Größe des Personals) und fortwährender Kommunikationsaufwand (quadratisch in der Größe des Personals)
&lt;ul&gt;
&lt;li&gt;Xyrill kann das 100-%-ig bestätigen; in großen Teams verbringen die hochrangigen Techniker signifikant mehr Zeit mit Meetings/Mails/Chat als mit ihrer nominalen Tätigkeit&lt;/li&gt;
&lt;li&gt;quadratisches Wachstum kann teilweise begrenzt werden durch Einführung von Unterteams mit strikten Rollenverteilungen; dann tritt das &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Gesetz_von_Conway&amp;amp;oldid=238711792&#34;&gt;Gesetz von Conway&lt;/a&gt; in Kraft&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 3: der Zeitplan wird durch die Bedürfnisse des Kunden bestimmt, nicht durch die Bedürfnisse der Programmierer&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Restaurant-Analogie: wenn man das langsam gegarte Steak in nur 5 Minuten haben will, wird der Koch sich dem entgegenstellen... oder er dreht halt die Hitze hoch und man kriegt ein schlechteres Produkt&lt;/li&gt;
&lt;li&gt;Programmierprojekte richten sich aber oft dem vom Kunden und/oder Management vorgegebenen Liefertermin: &amp;quot;Es ist sehr schwierig, eine Schätzung energisch, plausibel und arbeitsplatzgefährdend zu verteidigen, die auf keiner quantitativen Methode beruht, durch wenig Daten gestützt und hauptsächlich durch das Bauchgefühl der Manager getragen wird.&amp;quot;&lt;/li&gt;
&lt;li&gt;wenn dann beim Testen am Ende eine Verspätung eintritt, ist die Versuchung groß, halb fertige Produkte zu liefern (vgl. &amp;quot;Bananaware&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem 4: Was macht man, wenn dann das Kind in den Brunnen gefallen ist und man zu spät dran ist?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1: Lieferdatum nach hinten verschieben&lt;/li&gt;
&lt;li&gt;Option 2: Umfang reduzieren
&lt;ul&gt;
&lt;li&gt;passiert eventuell auch unter der Hand, zum Beispiel indem beim Design und beim Testen Arbeitstempo gegen Sorgfalt abgewogen wird&lt;/li&gt;
&lt;li&gt;Xyrill schielt auf sein ständig wachsendes Backlog an &amp;quot;müsste man mal machen&amp;quot;-Aufgaben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Option 3: weitere Leute hinzufügen
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Brooks%27s_law&amp;amp;oldid=1233664913&#34;&gt;Brooks&#39;sches Gesetz&lt;/a&gt;: &amp;quot;Das Hinzufügen weiteren Personals zu einem verspäteten Softwareprojekt verspätet es weiter.&amp;quot;&lt;/li&gt;
&lt;li&gt;siehe Problem 2: neue Mitarbeiter müssen von den bestehenden Teammitgliedern eingearbeitet werden und erhöhen dann permanent den Kommunikationsaufwand&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorschlag von Brooks: Planung basierend auf sequentiellen Teilschritten mit jeweils voneinander unabhängigen Teilaufgaben
&lt;ul&gt;
&lt;li&gt;Personalgröße ergibt sich aus der Anzahl jeweils unabhängiger Teilaufgaben&lt;/li&gt;
&lt;li&gt;Zeitaufwand ergibt sich aus der längsten Kette von sequentiellen Teilschritten&lt;/li&gt;
&lt;li&gt;Parallele zum &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Gantt-Diagramm&amp;amp;oldid=248831153&#34;&gt;Gantt-Diagramm&lt;/a&gt;, dass zu Brooks&#39; Zeit bekannt gewesen sein sollte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Kapitel 3: Das OP-Team (&amp;quot;The Surgical Team&amp;quot;)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Beobachtung: sehr weite Spannbreite im Produktivitätsspektrum der Software-Entwickler; die besten sind 10x so produktiv wie die schlechtesten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill war überrascht, dass diese Beobachtung schon so alt ist; in den 2010ern gab es einen Hype darum und man hat die produktivsten Entwickler als &amp;quot;Rock Stars&amp;quot; gehandelt&lt;/li&gt;
&lt;li&gt;naive Schlussfolgerung: statt einem großen Team lieber ein kleines Team der absolut Besten
&lt;ul&gt;
&lt;li&gt;kleine Teams kommunizieren ja auch besser, also weniger Overhead&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Problem: skaliert irgendwann nicht mehr
&lt;ul&gt;
&lt;li&gt;10 Leute können nicht z.B. ein modernes Betriebssystem bauen (vielleicht als Programm, aber definitiv nicht als fortlaufend gewartetes Programmsystemprodukt)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternativvorschlag: Teamstruktur analog zu Operations-Teams in der Chirurgie&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein Spezialist in der Mitte, der die Schnitte macht&lt;/li&gt;
&lt;li&gt;viele Unterstützer drumherum, die die Werkzeuge anreichen und Instrumente überwachen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;genaue Rollenverteilung in diesem Vorschlag&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chirurg/Chefprogrammierer: erarbeitet die Design-Spezifikation und schreibt Programm, Dokumentation und Tests&lt;/li&gt;
&lt;li&gt;Copilot: berät den Chirurgen in allen Design- und Implementations-Entscheidungen; fungiert als Stellvertreter des Chirurgen&lt;/li&gt;
&lt;li&gt;Administrator: kümmert sich für den Chirugen um alle administrativen Aufgaben (Geldmittel, Personal, Räumlichkeiten, Inventar); bei kleineren Teams teilen sich evtl. mehrere Teams einen Administrator&lt;/li&gt;
&lt;li&gt;Editor: bringt die vom Chirurgen ins Unreine geschriebene oder diktierte Dokumentation in Reinform&lt;/li&gt;
&lt;li&gt;außerdem werden Sekretariatsrollen beschrieben; z.B. ein Schreiber, der Code auf Lochkarten bringt und Programmausgaben sammelt und archiviert&lt;/li&gt;
&lt;li&gt;weitere Randrollen, die von mehreren Teams geteilt werden können: Werkzeugmacher, Tester, Language Lawyer (jemand, der die jeweilige Programmiersprache in- und auswendig kennt und hochspezialisierte Optimierungen oder besonders leichtgängige Strukturen finden kann)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;großer Fokus auf den unterstützenden Sekretärs- und Schreiberrollen, um den Chirurgen und Copilot von Schreibarbeiten zu entlasten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Xyrill stellt sich das heute schwierig vor; Digitalisierung hat zwar viele Schreibarbeiten vereinfacht, aber auf eine Art und Weise, die das Delegieren schwierig macht&lt;/li&gt;
&lt;li&gt;hier könnte der Kern liegen, warum verschiedene Leute so unterschiedlich starken Nutzen aus LLMs ziehen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Skalierungsfrage ist hierdurch vereinfacht: ein Projekt mit 2000 Mitarbeitern kann damit in 200 Zehnerteams geteilt werden, sodass nur die 200 Chirurgen miteinander reden müssen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aber nicht gelöst: 200 Chirurgen können immer noch ganz schön viel Kakophonie erzeugen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro-Intro"  />
          <chapter start="00:05:17" title="Intro und Getränke"  />
          <chapter start="00:06:58" title="Der Autor"  />
          <chapter start="00:13:33" title="Kapitel 1: Die Teergrube"  />
          <chapter start="00:34:14" title="Kapitel 2: Vom Mythos des Mann-Monats"  />
          <chapter start="01:03:18" title="Kapitel 3: Das OP-Team"  />
          <chapter start="01:18:24" title="Eine überraschende Wendung"  />
      </chapters>
      <enclosure length="77231575" url="https://dl.xyrillian.de/noises/stp-068-vom-mythos-des-mann-monats.mp3" type="audio/mpeg"/>
      <enclosure length="51121104" url="https://dl.xyrillian.de/noises/stp-068-vom-mythos-des-mann-monats.ogg" type="audio/ogg"/>
      <enclosure length="29301859" url="https://dl.xyrillian.de/noises/stp-068-vom-mythos-des-mann-monats.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/068-vom-mythos-des-mann-monats/</guid>
    <pubDate>Thu, 13 Feb 2025 22:10:00 GMT</pubDate>
    <itunes:duration>80:06</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP067: Linux auf dem Desktop</itunes:title>
    <itunes:episode>67</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP067: Linux auf dem Desktop</title>
    <link>https://schluesseltechnologie-podcast.de/067-linux-auf-dem-desktop</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Endlich ist die Hardware geliefert und montiert; Zeit, der Elektronik Leben einzuhauchen. Was könnte da besser passen als die Linux-Distribution der Wahl.</itunes:summary>
    <description>Endlich ist die Hardware geliefert und montiert; Zeit, der Elektronik Leben einzuhauchen. Was könnte da besser passen als die Linux-Distribution der Wahl.</description>
    <content:encoded>&lt;p&gt;Endlich ist die Hardware geliefert und montiert; Zeit, der Elektronik Leben einzuhauchen. Was könnte da besser passen als die Linux-Distribution der Wahl.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir haben Feedback bekommen, siehe unten. Zuerst die Shownotes zum eigentlichen Thema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezüge: STP065/066, &lt;a href=&#34;https://www.gamespodcast.de/2024/09/05/sebastian-goes-linux-1/&#34;&gt;Gamespodcast&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unterschiede zu Windows und macOS&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pro: keine Werbung, kein Tracking, keine nervtötenden Virenscanner oder Abzockereien (achtung Ubuntu)
&lt;ul&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://answers.microsoft.com/en-us/insider/forum/all/set-up-windows-11-without-internet-oobebypassnro/4fc44554-b416-4ecb-8961-6f79fd55ae0f&#34;&gt;&lt;code&gt;OOBE\BYPASSNRO&lt;/code&gt;&lt;/a&gt;, &lt;a href=&#34;https://github.com/LeDragoX/Win-Debloat-Tools&#34;&gt;Debloating-Tool für Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Pro: nicht der &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Enshittification&amp;amp;oldid=1252695330&#34;&gt;Enshittification&lt;/a&gt; durch Microsoft und Apple ausgesetzt (siehe: warum Steam Linux unterstützt)&lt;/li&gt;
&lt;li&gt;Pro: Langlebigkeit (siehe Xyrills Schiff des Theseus)&lt;/li&gt;
&lt;li&gt;Pro: unendliche Variabilität -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Linux-Distribution&amp;amp;oldid=248110982&#34;&gt;Distributionen&lt;/a&gt; (vgl. &lt;a href=&#34;https://distrowatch.com&#34;&gt;distrowatch.com&lt;/a&gt;, &lt;a href=&#34;https://www.reddit.com/r/unixporn/&#34;&gt;/r/UnixPorn&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Contra: unendliche Variablität :) -&amp;gt; neben verschiedenen Distributionen zum Beispiel auch verschiedene Desktop-Umgebungen usw.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie wählt man eine Distribution?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Empfehlung für den ersten Kontakt: z.B. &lt;a href=&#34;https://linuxmint.com/&#34;&gt;Linux Mint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;evtl. je nach speziellen Anforderungen: z.B. für Gaming &lt;a href=&#34;https://get.regataos.com.br/&#34;&gt;RegataOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;als Live-System ausprobieren (unter Windows braucht man dafür einen leeren USB-Stick und &lt;a href=&#34;https://rufus.ie/de/&#34;&gt;Rufus&lt;/a&gt; oder &lt;a href=&#34;https://www.ventoy.net/en/index.html&#34;&gt;Ventoy&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;als VM unter Windows ausprobieren (&lt;a href=&#34;https://www.virtualbox.org/wiki/Downloads&#34;&gt;VirtualBox&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;für weiteren Überblick: auf YouTube nach Distro-Vorstellungen suchen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Feedback I&lt;/h4&gt;
&lt;p&gt;Auf dem Kongress gab es eine Postkarte.&lt;/p&gt;
&lt;h4&gt;Feedback II zu STP066&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;für deutschsprachige Kaufberatung zu PC-Hardware wurde &lt;a href=&#34;https://forum.worldofplayers.de/forum/forums/504-Kaufberatung&#34;&gt;https://forum.worldofplayers.de/forum/forums/504-Kaufberatung&lt;/a&gt; empfohlen&lt;/li&gt;
&lt;li&gt;Xyrill hat &lt;a href=&#34;https://de.wikipedia.org/wiki/80_PLUS&#34;&gt;80 PLUS&lt;/a&gt; falsch erklärt: es geht dort um einen Wirkungsgrad über 80% bei Lasten von 20/50/100%&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Postkarte von Jörg"  />
          <chapter start="00:03:00" title="Feedback zu STP066"  />
          <chapter start="00:05:43" title="Intro, was bisher geschah und was kommen soll"  />
          <chapter start="00:12:42" title="Warum sollte man das wollen?"  />
          <chapter start="00:23:09" title="Paketmanager"  />
          <chapter start="00:29:37" title="Die Schwierigkeit mit Linux"  />
          <chapter start="00:31:36" title="Einsieg in Linux"  />
          <chapter start="00:38:39" title="Vielfalt als Chance"  />
          <chapter start="00:43:15" title="Die Installation"  />
          <chapter start="00:58:29" title="Outtakes"  />
      </chapters>
      <enclosure length="56911645" url="https://dl.xyrillian.de/noises/stp-067-linux-auf-dem-desktop.mp3" type="audio/mpeg"/>
      <enclosure length="36211721" url="https://dl.xyrillian.de/noises/stp-067-linux-auf-dem-desktop.ogg" type="audio/ogg"/>
      <enclosure length="21626832" url="https://dl.xyrillian.de/noises/stp-067-linux-auf-dem-desktop.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/067-linux-auf-dem-desktop/</guid>
    <pubDate>Thu, 23 Jan 2025 19:35:00 GMT</pubDate>
    <itunes:duration>58:56</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP066: Desktop-PC basteln, Teil 2</itunes:title>
    <itunes:episode>66</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP066: Desktop-PC basteln, Teil 2</title>
    <link>https://schluesseltechnologie-podcast.de/066-desktop-pc-basteln-teil-2</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem es sich als eine gute Entscheidung erwiesen hat, die ursprünglich geplante Episode zu teilen, geht es heute nun konkreter um die Auswahl der Komponenten und deren Montage in den Selbstbau-PC.</itunes:summary>
    <description>Nachdem es sich als eine gute Entscheidung erwiesen hat, die ursprünglich geplante Episode zu teilen, geht es heute nun konkreter um die Auswahl der Komponenten und deren Montage in den Selbstbau-PC.</description>
    <content:encoded>&lt;p&gt;Nachdem es sich als eine gute Entscheidung erwiesen hat, die ursprünglich geplante Episode zu teilen, geht es heute nun konkreter um die Auswahl der Komponenten und deren Montage in den Selbstbau-PC.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;fortgesetzt aus STP065: Wie wählt man Komponenten so, dass alles zusammenpasst?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU wählen (Intel oder AMD; übertaktbar oder nicht; Boxed-Lüfter oder Aftermarket-Kühlung, etc.)&lt;/li&gt;
&lt;li&gt;Mainboard wählen (passend zum CPU-Sockel und dem benötigten Chipsatz; im gewünschten Formfaktor, z.B. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=ATX-Format&amp;amp;oldid=247426326&#34;&gt;ATX&lt;/a&gt; vs. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mini-ITX&amp;amp;oldid=245442119&#34;&gt;Mini-ITX&lt;/a&gt;; mit gewünschten Funktionen, z.B. WLAN oder Toslink-Audio oder viele USB-Steckplätze)&lt;/li&gt;
&lt;li&gt;RAM wählen (passend zum RAM-Sockel auf dem Mainboard und den unterstützten RAM-Frequenzen)&lt;/li&gt;
&lt;li&gt;GPU wählen (relativ unabhängig von den vorherigen Schritten)&lt;/li&gt;
&lt;li&gt;SSD/HDD wählen (unabhängig von den vorherigen Schritten außer: Mainboard muss genügend Steckplätze für NVMe bzw. SATA haben)&lt;/li&gt;
&lt;li&gt;Gehäuse wählen (GPU und Mainboard muss passen, bei großen CPUs mit extravaganten Lüftern muss auch die Lüfterhöhe passen)&lt;/li&gt;
&lt;li&gt;Netzteil wählen (TDP von allen bisher genannten Sachen aufsummieren -&amp;gt; Netzteil so wählen, dass bei Volllast 80% verwendet werden)&lt;/li&gt;
&lt;li&gt;je nach Prioritätensetzung kann auch eine andere Planungsreihenfolge sinnvoll sein (z.B. wenn man ein ganz bestimmtes Gehäuse füllen will)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Webempfehlungen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.logicalincrements.com&#34;&gt;https://www.logicalincrements.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://reddit.com/r/BuildAPC&#34;&gt;https://reddit.com/r/BuildAPC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.geizhals.de&#34;&gt;https://www.geizhals.de&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Mitternachtstarif bei Mindfactory :)&lt;/li&gt;
&lt;li&gt;gerade neu: &lt;a href=&#34;https://arstechnica.com/gadgets/2024/09/ars-technica-system-guide-falling-prices-are-more-exciting-than-new-parts/&#34;&gt;Systembuilding-Guide von Ars Technica für 2024&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie baut man es zusammen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Werkzeug: PH1/PH2-Schraubendreher, evtl. Wärmeleitpaste (beim Boxed-Kühler schon voraufgetragen), evtl. Kabelbinder&lt;/li&gt;
&lt;li&gt;allgemeine Arbeitsplatzregeln: Zeit nehmen, genügend Platz, gute Beleuchtung&lt;/li&gt;
&lt;li&gt;für die Zusammenbaureihenfolge dem Handbuch zum Gehäuse folgen (allgemein: Gehäuse -&amp;gt; Netzteil -&amp;gt; Mainboard -&amp;gt; CPU -&amp;gt; RAM -&amp;gt; Lüfter -&amp;gt; SSD/HDD -&amp;gt; GPU)&lt;/li&gt;
&lt;li&gt;Platinen nur an den Kanten anfassen, nicht auf die Leiterbahnen patschen&lt;/li&gt;
&lt;li&gt;Steckverbindungen sollten immer ohne Gewalt funktionieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;weitere Empfehlungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spiralschlauch zum Organisieren der Kabel sowohl innerhalb als auch außerhalb des Gehäuses&lt;/li&gt;
&lt;li&gt;zum Reinigen: Staubsauger und Pinsel, Druckluftdose (bitte ohne Treibmittel)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:14" title="Prioritäten bei der Komponentenwahl"  />
          <chapter start="00:02:55" title="Wahl der CPU"  />
          <chapter start="00:12:53" title="Das Mainboard"  />
          <chapter start="00:23:26" title="Kleiner Ausflug zu Geizhals.de"  />
          <chapter start="00:26:54" title="Arbeitsspeicher"  />
          <chapter start="00:30:02" title="GPU"  />
          <chapter start="00:31:51" title="Dauerhafter Speicher"  />
          <chapter start="00:33:35" title="Netzteil"  />
          <chapter start="00:39:45" title="Gehäuse"  />
          <chapter start="00:46:13" title="Webempfehlungen"  />
          <chapter start="00:52:56" title="Montagehinweise"  />
      </chapters>
      <enclosure length="66676850" url="https://dl.xyrillian.de/noises/stp-066-desktop-pc-basteln-teil-2.mp3" type="audio/mpeg"/>
      <enclosure length="43132159" url="https://dl.xyrillian.de/noises/stp-066-desktop-pc-basteln-teil-2.ogg" type="audio/ogg"/>
      <enclosure length="25377791" url="https://dl.xyrillian.de/noises/stp-066-desktop-pc-basteln-teil-2.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/066-desktop-pc-basteln-teil-2/</guid>
    <pubDate>Thu, 02 Jan 2025 13:35:00 GMT</pubDate>
    <itunes:duration>69:06</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP065: Desktop-PC basteln</itunes:title>
    <itunes:episode>65</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP065: Desktop-PC basteln</title>
    <link>https://schluesseltechnologie-podcast.de/065-desktop-pc-basteln</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Da wir hier ja alle stilechte Nerds sind, gehört auch der Bau des eigenen PC zu den Standardaufgaben. Wie wir das anfangen, darum soll es diesmal gehen.</itunes:summary>
    <description>Da wir hier ja alle stilechte Nerds sind, gehört auch der Bau des eigenen PC zu den Standardaufgaben. Wie wir das anfangen, darum soll es diesmal gehen.</description>
    <content:encoded>&lt;p&gt;Da wir hier ja alle stilechte Nerds sind, gehört auch der Bau des eigenen PC zu den Standardaufgaben. Wie wir das anfangen, darum soll es diesmal gehen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Warum sollte man das tun wollen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gründe für den PC im Allgemeinen
&lt;ul&gt;
&lt;li&gt;mehr Leistung als ein Notebook&lt;/li&gt;
&lt;li&gt;vielseitiger als eine Spielekonsole&lt;/li&gt;
&lt;li&gt;ortsfester als ein Smartphone (kann man z.B. im Arbeitszimmer zurücklassen, um von der Arbeit Abstand zu gewinnen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gründe für den Selbstbau-PC im Speziellen
&lt;ul&gt;
&lt;li&gt;spezifische Anforderungen (z.B. besonders leistungsstark, besonders leise, besonders kompakt)&lt;/li&gt;
&lt;li&gt;Nachhaltigkeit (Austauschen einzelner Komponenten möglich -&amp;gt; Schiff des Theseus)&lt;/li&gt;
&lt;li&gt;konsistente Qualität (bei Fertig-PCs oft ein, zwei tolle Komponenten und der Rest Billigschrott)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie stellt man die Einkaufsliste zusammen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schritt 1: Welche Komponenten brauche ich grundsätzlich?
&lt;ul&gt;
&lt;li&gt;auf jeden Fall: CPU, Mainboard, RAM, SSD, Gehäuse, Netzteil&lt;/li&gt;
&lt;li&gt;nach Bedarf: dedizierte GPU (sonst CPU mit integrierter GPU), HDD, zusätzliche Lüfter und/oder Wasserkühlung (&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Computer_cooling&amp;amp;oldid=1243635435&#34;&gt;Bilder&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;wenn noch nicht vorhanden: Tastatur, Maus, Monitor(e), Lautsprecher bzw. Kopfhörer, Webcam&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 2: Passt alles zusammen?
&lt;ul&gt;
&lt;li&gt;das und noch mehr beim nächsten Mal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Schrittzähler und Charakterbögen"  />
          <chapter start="00:02:09" title="Zum Thema"  />
          <chapter start="00:06:34" title="Warum sollte man das tun wollen?"  />
          <chapter start="00:11:01" title="Einwurf: Anmerkungen zu Ethernet"  />
          <chapter start="00:12:34" title="Weiter mit dem Warum"  />
          <chapter start="00:20:43" title="Einkaufsliste zusammenstellen"  />
          <chapter start="00:49:32" title="Eine überraschende Wendung"  />
      </chapters>
      <enclosure length="49540600" url="https://dl.xyrillian.de/noises/stp-065-desktop-pc-basteln.mp3" type="audio/mpeg"/>
      <enclosure length="31152046" url="https://dl.xyrillian.de/noises/stp-065-desktop-pc-basteln.ogg" type="audio/ogg"/>
      <enclosure length="18753443" url="https://dl.xyrillian.de/noises/stp-065-desktop-pc-basteln.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/065-desktop-pc-basteln/</guid>
    <pubDate>Wed, 11 Dec 2024 23:00:00 GMT</pubDate>
    <itunes:duration>51:15</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP064: Cursed Computer Iceberg Meme, Runde 2</itunes:title>
    <itunes:episode>64</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP064: Cursed Computer Iceberg Meme, Runde 2</title>
    <link>https://schluesseltechnologie-podcast.de/064-cursed-computer-iceberg-meme-part-2</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute geht es ein weiteres Mal um Eisberge und Memes. Entweder ttimeless ist gut aufgelegt oder diese Dinge sind nur mit Humor zu ertragen…  oder beides.</itunes:summary>
    <description>Heute geht es ein weiteres Mal um Eisberge und Memes. Entweder ttimeless ist gut aufgelegt oder diese Dinge sind nur mit Humor zu ertragen…  oder beides.</description>
    <content:encoded>&lt;p&gt;Heute geht es ein weiteres Mal um Eisberge und Memes. Entweder ttimeless ist gut aufgelegt oder diese Dinge sind nur mit Humor zu ertragen…  oder beides.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir setzen unsere Betrachtung des &lt;a href=&#34;https://suricrasia.online/iceberg/&#34;&gt;Cursed Computer Iceberg Meme&lt;/a&gt; aus STP042 fort. Das letzte Mal waren wir bis &amp;quot;Below the Water&amp;quot; gekommen. Xyrill hat aber noch ein paar Sachen in den oberen Ebenen gesehen, die besprechenswert sind.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Above the Iceberg&amp;quot; - Oberhalb des Eisberges&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://xkcd.com/327/&#34;&gt;Little Bobby Tables&lt;/a&gt;: das Mem-Beispiel einer SQL-Injektion; dieses wiederum eine klassische Art von Sicherheitslücken (siehe STP049)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;On the Iceberg&amp;quot; - Auf dem Eisberg&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Quine_(Computerprogramm)&amp;amp;oldid=240777383&#34;&gt;Quine&lt;/a&gt;: ein Programm, dass seinen eigenen Programmcode ausdruckt (Beispiele siehe Link)
&lt;ul&gt;
&lt;li&gt;siehe auch: &lt;a href=&#34;https://github.com/mame/quine-relay&#34;&gt;quine-relay&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Intel_Management_Engine&amp;amp;oldid=1235943064&#34;&gt;Intel Management Engine&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Below the Water&amp;quot; - Unterhalb der Wasserlinie&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/ValveSoftware/steam-for-linux/issues/3671&#34;&gt;&lt;code&gt;rm -rf &amp;quot;$STEAM_ROOT&amp;quot;/*&lt;/code&gt;&lt;/a&gt;: wie eine einzige uninitialisierte Variable unzählige Computer außer Gefecht setzt (heutzutage würde man sagen, diese Computer &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20240827.html&#34;&gt;wurden ge-crowdstriket&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Lp0_on_fire&amp;amp;oldid=1236781886&#34;&gt;&amp;quot;lp0 on fire&amp;quot;&lt;/a&gt;: heute eher ein Mem als alles andere, aber wie im Artikel beschrieben gab es früher Drucker mit Heizelementen, die bei Papierstau in Flammen aufgingen (und trotzdem weiter Papier nachschoben); Xyrill fühlt sich an die Szene aus &amp;quot;Fantasia&amp;quot; mit den belebten Besen erinnert&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Illegale_Zahl&amp;amp;oldid=245251846&#34;&gt;Illegale Zahlen&lt;/a&gt;: eine konkrete Art, wie Redefreiheit in der Praxis durch Urheberrecht etc. eingeschränkt werden kann
&lt;ul&gt;
&lt;li&gt;siehe auch &lt;a href=&#34;https://ansuz.sooke.bc.ca/entry/23&#34;&gt;&amp;quot;Welche Farbe haben deine Bits?&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://freakonomics.com/podcast/happy-birthday-to-you/&#34;&gt;Economics of everyday things - Happy birthday to you&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kaltstartattacke&amp;amp;oldid=240863372&#34;&gt;Kaltstartattacke&lt;/a&gt;: ein sehr handfester Seitenkanalangriff
&lt;ul&gt;
&lt;li&gt;Es gibt auch die Möglichkeit, RAM einzufrieren, damit darin enthaltene Schlüssel forensisch ausgelesen werden können.&lt;/li&gt;
&lt;li&gt;Manchmal sieht man auch Hausdurchsuchungen, bei denen die Polizei eine USV und Werkzeug zum Kabelspleißen mitbringt.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Middle of the Iceberg&amp;quot; - Mitte des Eisbergs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Archivbombe&amp;amp;oldid=246391169&#34;&gt;42.zip&lt;/a&gt;: gepackt nur 42 KiB; &amp;quot;beim Entpacken wächst das Datenvolumen allerdings um das Hundertmilliardenfache auf [4 PiB]&amp;quot;
&lt;ul&gt;
&lt;li&gt;Rückbezug zu Quines: &lt;a href=&#34;https://research.swtch.com/zip&#34;&gt;Zip Files All The Way Down&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://bugs.launchpad.net/ubuntu/&#43;source/cupsys/&#43;bug/255161/comments/28&#34;&gt;&amp;quot;OpenOffice kann dienstags nicht drucken&amp;quot;&lt;/a&gt;: ein legendärer Fehlerbericht, fast so gut wie die 500-Meilen-Mail aus STP042&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Bottom of the Iceberg&amp;quot; - Unterseite des Eisbergs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://gist.github.com/rjhansen/67ab921ffb4084c865b3618d6955275f&#34;&gt;&amp;quot;You fool. You absolute, unmitigated, unadulterated, complete and utter, fool.&amp;quot;&lt;/a&gt;: Manöverkritik zum Keypair-Spam-Angriff auf das GPG-Keyserver-Netzwerk (GPG hatten wir bereits am Rande in STP048 erwähnt)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es gibt noch jede Menge im tiefen Wasser. Wir sehen uns wieder in STP084.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro-Intro"  />
          <chapter start="00:00:25" title="Das Intro, das achte Bit und die Zaunpfähle"  />
          <chapter start="00:02:39" title="Der Eisberg im Raum"  />
          <chapter start="00:04:38" title="Oberhalb des Eisberges: Little Bobby Tables"  />
          <chapter start="00:13:54" title="Auf dem Eisberg: Quine"  />
          <chapter start="00:21:14" title="Intel Management Engine"  />
          <chapter start="00:28:17" title="Unterhalb der Wasserlinie: rm -rf &#34;$STEAM_ROOT&#34;/*"  />
          <chapter start="00:33:05" title="&#34;lp0 on fire&#34;"  />
          <chapter start="00:36:44" title="Illegale Zahlen"  />
          <chapter start="00:44:20" title="Kaltstartattacke"  />
          <chapter start="00:49:30" title="Mitte des Eisbergs: 42.zip"  />
          <chapter start="00:57:47" title="OpenOffice kann dienstags nicht drucken"  />
          <chapter start="01:02:17" title="Unterseite des Eisbergs"  />
          <chapter start="01:06:39" title="Outtakes"  />
      </chapters>
      <enclosure length="65182978" url="https://dl.xyrillian.de/noises/stp-064-cursed-computer-iceberg-meme-part-2.mp3" type="audio/mpeg"/>
      <enclosure length="41970362" url="https://dl.xyrillian.de/noises/stp-064-cursed-computer-iceberg-meme-part-2.ogg" type="audio/ogg"/>
      <enclosure length="25015656" url="https://dl.xyrillian.de/noises/stp-064-cursed-computer-iceberg-meme-part-2.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/064-cursed-computer-iceberg-meme-part-2/</guid>
    <pubDate>Thu, 21 Nov 2024 21:15:00 GMT</pubDate>
    <itunes:duration>67:33</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP063: Fleißige Biber</itunes:title>
    <itunes:episode>63</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP063: Fleißige Biber</title>
    <link>https://schluesseltechnologie-podcast.de/063-fleissige-biber</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wie auch schon in der Vergangenheit nehmen wir es mit der Aktualität unserer &amp;quot;Berichterstattung&amp;quot; nicht ganz so genau. Und so liegt das entsprechende Ereignis etwa 2¹/₂ Monate in der Vergangenheit. Der fünfte fleißige Biber wurde gefunden.</itunes:summary>
    <description>Wie auch schon in der Vergangenheit nehmen wir es mit der Aktualität unserer &amp;quot;Berichterstattung&amp;quot; nicht ganz so genau. Und so liegt das entsprechende Ereignis etwa 2¹/₂ Monate in der Vergangenheit. Der fünfte fleißige Biber wurde gefunden.</description>
    <content:encoded>&lt;p&gt;Wie auch schon in der Vergangenheit nehmen wir es mit der Aktualität unserer &amp;quot;Berichterstattung&amp;quot; nicht ganz so genau. Und so liegt das entsprechende Ereignis etwa 2¹/₂ Monate in der Vergangenheit. Der fünfte fleißige Biber wurde gefunden.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir haben Feedback bekommen, siehe unten. Zuerst die Shownotes zum eigentlichen Thema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;aktueller Anlass: &lt;a href=&#34;https://www.quantamagazine.org/amateur-mathematicians-find-fifth-busy-beaver-turing-machine-20240702/&#34;&gt;Der fünfte fleißige Biber wurde gefunden&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rückbezug zu STP000: theoretische Informatik ist ein Teilgebiet der Mathematik, dass Xyrill lieber &amp;quot;Berechnungstheorie&amp;quot; nennen würde&lt;/li&gt;
&lt;li&gt;hierin insbesondere &amp;quot;Berechenbarkeitstheorie&amp;quot;: Welche Probleme lassen sich mit Rechenmaschinen lösen?&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Church-Turing-These&amp;amp;oldid=244116059&#34;&gt;Church-Turing-These&lt;/a&gt;: Berechenbarkeit ist eine intrinsische Eigenschaft eines Problems und nicht abhängig davon, welchen Computer ich zur Lösung einsetze
&lt;ul&gt;
&lt;li&gt;&amp;quot;Die Klasse der Turing-berechenbaren Funktionen stimmt mit der Klasse der intuitiv berechenbaren Funktionen überein.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Analyse der Berechenbarkeit eines Problems anhand von einfachen Modellmaschinen, z.B. der Turing-Maschine (daher &amp;quot;Turing-berechenbar&amp;quot;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Turing-Vollst%C3%A4ndigkeit&amp;amp;oldid=242871861&#34;&gt;Turing-Vollständigkeit&lt;/a&gt;: die Eigenschaft einer Rechenmaschine, alle Probleme lösen zu können, die auch eine Turing-Maschine lösen kann (mal abgesehen von weltlichen Einschränkungen wie Speicherplatz und Rechenzeit)&lt;/li&gt;
&lt;li&gt;Rückbezug zu STP021 (Reguläre Ausdrücke): dort hatten wir stärker limitierte Maschinenmodelle erwähnt (endliche Zustandsautomaten, Kellerautomaten)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aufbau einer &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Turingmaschine&amp;amp;oldid=244930504&#34;&gt;Turing-Maschine&lt;/a&gt; (&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Model_of_a_Turing_machine.jpg&#34;&gt;Beispielbild aus Wikipedia&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unendlich langes Speicherband mit Feldern, auf denen entweder 0 oder 1 stehen kann&lt;/li&gt;
&lt;li&gt;Lese-/Schreibkopf, der das aktuelle Feld lesen und schreiben kann sowie sich in Einzelschritten entlang des Bandes bewegen kann&lt;/li&gt;
&lt;li&gt;Programm: endliche Menge von Zuständen, und eine Zustandsübergangsfunktion, die auf Basis der gelesenen Zeichen entscheidet und Zeichen überschreibt sowie den Lesekopf bewegt&lt;/li&gt;
&lt;li&gt;Xyrill hat ein Beispiel mitgebracht: ein Programm, dass zwei positive Ganzzahlen subtrahiert; die Zahlen sind als Folgen von 1 gegeben, getrennt von einer 0; zum Beispiel &amp;quot;3-2&amp;quot; wird eingegeben als &amp;quot;111011&amp;quot; und der Lesekopf startet am Anfang der ersten Zahl&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Warnung:&lt;/strong&gt; Wir haben während der Aufzeichnung bemerkt, dass diese Maschine inkorrekt ist. Damit keine Verwirrung entsteht, haben wir die Notizen nicht angepasst.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zustandsvorrat (durchbuchstabiert in der Reihenfolge der Benutzung, Startzustand ist A):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A: suche nach rechts in der ersten Zahl&lt;/li&gt;
&lt;li&gt;B: suche nach rechts in der zweiten Zahl&lt;/li&gt;
&lt;li&gt;C: auf dem Ende der zweiten Zahl&lt;/li&gt;
&lt;li&gt;D: suche nach links in der zweiten Zahl&lt;/li&gt;
&lt;li&gt;E: suche nach links nach der ersten Zahl&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Übergangstabelle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zustand A, lese 0 -&amp;gt; schreibe 0, gehe nach rechts, neuer Zustand B&lt;/li&gt;
&lt;li&gt;Zustand A, lese 1 -&amp;gt; schreibe 1, gehe nach rechts, neuer Zustand A&lt;/li&gt;
&lt;li&gt;Zustand B, lese 0 -&amp;gt; schreibe 0, gehe nach links, neuer Zustand C&lt;/li&gt;
&lt;li&gt;Zustand B, lese 1 -&amp;gt; schreibe 1, gehe nach rechts, neuer Zustand B&lt;/li&gt;
&lt;li&gt;Zustand C, lese 0 -&amp;gt; schreibe 0, gehe nach links, neuer Zustand HALT&lt;/li&gt;
&lt;li&gt;Zustand C, lese 1 -&amp;gt; schreibe 0, gehe nach links, neuer Zustand D&lt;/li&gt;
&lt;li&gt;Zustand D, lese 0 -&amp;gt; schreibe 0, gehe nach links, neuer Zustand E&lt;/li&gt;
&lt;li&gt;Zustand D, lese 1 -&amp;gt; schreibe 1, gehe nach links, neuer Zustand D&lt;/li&gt;
&lt;li&gt;Zustand E, lese 0 -&amp;gt; schreibe 0, gehe nach links, neuer Zustand E&lt;/li&gt;
&lt;li&gt;Zustand E, lese 1 -&amp;gt; schreibe 0, gehe nach rechts, neuer Zustand A&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispielausführung für die Aufgabe &amp;quot;3-2&amp;quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;... 0 [1] 1  1  0  1  1  0 ... Zustand A
... 0  1 [1] 1  0  1  1  0 ... Zustand A
... 0  1  1 [1] 0  1  1  0 ... Zustand A
... 0  1  1  1 [0] 1  1  0 ... Zustand A
... 0  1  1  1  0 [1] 1  0 ... Zustand B
... 0  1  1  1  0  1 [1] 0 ... Zustand B
... 0  1  1  1  0  1  1 [0]... Zustand B
... 0  1  1  1  0  1 [1] 0 ... Zustand C
... 0  1  1  1  0 [1] 0  0 ... Zustand D
... 0  1  1  1 [0] 1  0  0 ... Zustand D
... 0  1  1 [1] 0  1  0  0 ... Zustand E
... 0  1  1  0 [0] 1  0  0 ... Zustand A
... 0  1  1  0  0 [1] 0  0 ... Zustand B
... 0  1  1  0  0  1 [0] 0 ... Zustand B
... 0  1  1  0  0 [1] 0  0 ... Zustand C
... 0  1  1  0 [0] 0  0  0 ... Zustand D
... 0  1  1 [0] 0  0  0  0 ... Zustand E
... 0  1 [1] 0  0  0  0  0 ... Zustand E
... 0  1  0 [0] 0  0  0  0 ... Zustand A
... 0  1  0  0 [0] 0  0  0 ... Zustand B
... 0  1  0 [0] 0  0  0  0 ... Zustand C
... 0  1 [0] 0  0  0  0  0 ... Zustand HALT
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anmerkungen hierzu&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;man kann Turing-Maschinen auch auf viele andere Weisen modellieren, etwa mit größeren Zeichensatz (z.B. alle Dezimalziffern sowie mathematische Symbole, um eine Eingabe wie &lt;code&gt;127*(3&#43;6/2)&lt;/code&gt; zu ermöglichen) oder mehreren Bändern; an der Berechenbarkeit ändert das nichts&lt;/li&gt;
&lt;li&gt;Xyrill belässt es bei obigem Beispiel, dass noch einigermaßen kompakt ist&lt;/li&gt;
&lt;li&gt;Übungsaufgabe: Füge weitere Zustände ein, mit denen der Lesekopf am Ende in die Startposition zurückbewegt wird.&lt;/li&gt;
&lt;li&gt;Aber was ist jetzt mit den Bibern?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Flei%C3%9Figer_Biber&amp;amp;oldid=246581342&#34;&gt;N-ter fleißiger Biber&lt;/a&gt;: diejenige Turingmaschine mit N Zuständen, die auf ein initial leeres Band (alles voller Nullen) die meistmöglichen Einsen schreiben kann, bevor sie anhält&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die Haltebedingung ist wichtig! Sonst können wir mit nur einem Zustand unendlich viele Einsen schreiben (&amp;quot;Zustand A, lese irgendwas -&amp;gt; schreibe 1, gehe nach rechts, neuer Zustand A&amp;quot;)&lt;/li&gt;
&lt;li&gt;Problem: Man kann einer Turingmaschine nicht ohne weiteres ansehen, ob sie terminiert oder nicht. -&amp;gt; Das &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Halteproblem&amp;amp;oldid=239308188&#34;&gt;Halteproblem&lt;/a&gt; ist eines der klassischen unberechenbaren Probleme.&lt;/li&gt;
&lt;li&gt;Jetzt gefunden wurde &lt;code&gt;BB(5,2) = 47176870&lt;/code&gt;; sprich: Der längstmögliche endliche Lauf einer Turingmaschine mit 5 Zuständen und 2 Zeichen auf initial leerem Band ist 47176870 Schritte. (Das ist die gleiche Maschinengröße wie unser Beispiel oben.)&lt;/li&gt;
&lt;li&gt;Bei der Gelegenheit erwähnen wir auch mal die &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=On-Line_Encyclopedia_of_Integer_Sequences&amp;amp;oldid=232132016&#34;&gt;OEIS&lt;/a&gt;. Die fleißigen Biber sind zum Beispiel &lt;a href=&#34;https://oeis.org/A060843&#34;&gt;A060843&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Feedback zu STP038&lt;/h4&gt;
&lt;p&gt;laalsaas schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In Minute 32 spricht xyrill von 1,6 Terabit und sagt, dass wären 1,6 Millionen Bit. Ich nehme an, dass es sich hierbei um einen Versprecher im Eifer des Gefechts handelt, sind doch 1 Terabit eine Billion Bit.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anmerkung: Im Englischen sogar &amp;quot;a trillion bit&amp;quot;. :)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Etwas früher ging es um USB und darum, dass man den Stecker nie beim ersten Versuch richtig herum reinbekommt. Dazu möchte ich hier einen „Lifehack“ teilen. Ich hoffe, es gelingt mir, ihn in Textform verständlich zu beschreiben. Ein USB-Stecker ist meist folgendermaßen aufgebaut: Wenn man von vorne daraufguckt, ist der äußere Rand ein rechteckig gebogenes Metallblech. Innen ist eine Hälfte des Rechtecks eine Plastik-„Zunge“, auf der die Kontakte sitzen, in der anderen Hälfte ist Luft. Eine USB-Buchse wiederum besteht aus einem Rechteck, in dem die Hälfte ebenfalls aus einer „Zunge” besteht, die andere aus Luft. Damit nun ein Stecker in die Buchse passt, müssen sich die „Zungen“ gegenüberliegen, damit sie die Luft in der jeweils anderen Komponente ausfüllen. Nun ist es so, dass bei über 90% der horizontal fest verbauten USB-buchsen in Laptops, PCs, usw die „Zunge“ oben ist. Das heißt, man muss einfach die „Zunge“ des USB-steckers nach unten orientieren. Wer immer noch zu faul ist, jedes mal frontal auf seinen USB-Stecker draufzugucken, der sei darauf hingewiesen, dass man auch einfach herausfinden kann, auf welcher Seite die Zunge ist, indem man durch die seitlichen Löcher im Blech des USB-Steckers schaut und darauf achtet, ob da direkt Plastik ist (Zungenseite, die muss nach unten) oder erst etwas Luft und dann Kontakte, wenn man das sieht, hält man den Stecker richtig herum. Seitdem ich diesen Trick kenne, habe ich wesentlich weniger Probleme damit, USB-Stecker richtigherum reinzustecken. Das funktioniert natürlich nicht bei freifliegenden Hubs und auch bei seitlich oder „nach unten“ montierten Buchsen habe ich noch keine Konvention erkennen können, das kann aber auch daran liegen, dass ich zu selten mit denen zu tun habe. Ich hoffe trotzdem, dass ich manchem mit diesem Trick das Leben einfacher machen konnte :)&lt;/p&gt;
&lt;p&gt;Zu guter Letzt möchte ich noch anmerken, dass die in Minute 39 von timeless gewählte Formulierung „Der LaTeX-Bruder“ eine (vermutlich ungewollte) Doppelbödigkeit hat. Erfahrene STP-Hörer wissen natürlich, dass es sich hier um Xyrills Bruder handelt, der seine Abschlussarbeit in LaTeX geschrieben hat, aber ich finde, es klingt auch so, wie ein Mitglied des LaTeX-Klosters oder der LaTeX-Sekte, was mich sehr zum Schmunzeln gebracht hat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Noch mehr Feedback&lt;/h4&gt;
&lt;p&gt;Weiterhin schreibt Matthias:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Statt Postkarte: Liebe Hörergrüße aus dem Urlaub in Allgäu sendet Matthias.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anbei ein Bild eines Gedenksteins für Konrad Zuse.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback"  />
          <chapter start="00:08:39" title="Intro und Prolog"  />
          <chapter start="00:11:09" title="Zum Thema: Der Biber"  />
          <chapter start="00:11:48" title="Rückbezug STP-000"  />
          <chapter start="00:14:17" title="Von Berechnung und Berechenbarkeit"  />
          <chapter start="00:23:09" title="Aufbau einer Turing-Maschine"  />
          <chapter start="00:33:06" title="Xyrills Turing-Maschine"  />
          <chapter start="00:48:47" title="Die fleißigen Biber"  />
          <chapter start="00:57:48" title="Kurz zu Turing-Vollständigkeit"  />
      </chapters>
      <enclosure length="58735966" url="https://dl.xyrillian.de/noises/stp-063-fleissige-biber.mp3" type="audio/mpeg"/>
      <enclosure length="36992045" url="https://dl.xyrillian.de/noises/stp-063-fleissige-biber.ogg" type="audio/ogg"/>
      <enclosure length="22174004" url="https://dl.xyrillian.de/noises/stp-063-fleissige-biber.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/063-fleissige-biber/</guid>
    <pubDate>Thu, 31 Oct 2024 11:55:00 GMT</pubDate>
    <itunes:duration>60:50</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP062: Selfhosting</itunes:title>
    <itunes:episode>62</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP062: Selfhosting</title>
    <link>https://schluesseltechnologie-podcast.de/062-selfhosting</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem unser aller Heimnetzwerk voll funktionsfähig ist, wollen wir nun von daheim aus die ganze Welt mit unseren Online-Diensten beglücken... oder zumindest bestimmte Dinge selbst an den Start rollen.</itunes:summary>
    <description>Nachdem unser aller Heimnetzwerk voll funktionsfähig ist, wollen wir nun von daheim aus die ganze Welt mit unseren Online-Diensten beglücken... oder zumindest bestimmte Dinge selbst an den Start rollen.</description>
    <content:encoded>&lt;p&gt;Nachdem unser aller Heimnetzwerk voll funktionsfähig ist, wollen wir nun von daheim aus die ganze Welt mit unseren Online-Diensten beglücken... oder zumindest bestimmte Dinge selbst an den Start rollen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug STP061: wir haben unser Heimnetzwerk von Schicht 1 bis 3 aufgebaut&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schicht 3 hatte uns einen Zustellweg durchs Internet gegeben&lt;/li&gt;
&lt;li&gt;Schicht 4 ergänzt Sitzungsverwaltung (z.B. Flusskontrolle und Fehlerkorrektur; hierfür siehe STP005) und Ports&lt;/li&gt;
&lt;li&gt;Warum braucht man Ports? Gedankenexperiment:
&lt;ul&gt;
&lt;li&gt;Annahme: Datenpakete werden nur anhand von Quelladresse und Zieladresse zugestellt&lt;/li&gt;
&lt;li&gt;Situation: zwei Prozesse auf demselben PC wollen mit &lt;code&gt;wikipedia.de&lt;/code&gt; reden&lt;/li&gt;
&lt;li&gt;Abschicken der Anfragen klappt eventuell noch, da gleiches Ziel&lt;/li&gt;
&lt;li&gt;Problem: Antwortpaket kommt -&amp;gt; Welcher Prozess kriegt das Paket?&lt;/li&gt;
&lt;li&gt;Technisch formuliert: Wie kann man über diese Netzwerkleitung mehrere unabhängige Verbindungen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Multiplexverfahren&amp;amp;oldid=243098154&#34;&gt;multiplexen&lt;/a&gt;?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ports: Identifikationsnummer für offene Netzwerkverbindungen; 16 Bit groß (0-65535)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vgl. Briefkästen/Wohnungsnummern in Mehrparteienhäusern&lt;/li&gt;
&lt;li&gt;Datenpakete auf Schicht 4 werden anhand der Gesamtheit aus Quelladresse, Quellport, Zieladresse, Zielport einer Verbindung zugeordnet&lt;/li&gt;
&lt;li&gt;damit eindeutige Endzustellung an einen Prozess möglich&lt;/li&gt;
&lt;li&gt;auf Server-Seite im Allgemeinen &amp;quot;wohlbekannte&amp;quot; Ports (z.B. 25 für SMTP, 80 für HTTP, 443 für HTTPS), damit Clients ein definiertes Ziel für neue Verbindungen haben&lt;/li&gt;
&lt;li&gt;auf Client-Seite für gewöhnlich automatisch vergebene Ports (meist zwischen 32768-65535)&lt;/li&gt;
&lt;li&gt;Praxisbeispiel: im Browser eine Webseite aufmachen, dann in der Konsole aktive Verbindungen auflisten mit &lt;code&gt;ss -utpn -o state connected&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie kann ich zuhause einen Server-Prozess betreiben?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Außenwelt muss meine IP-Adresse finden können und den entsprechenden Port erreichen können&lt;/li&gt;
&lt;li&gt;Problem 1: IP-Adresse wird durch den Internetanbieter bestimmt und ändert sich -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dynamisches_DNS&amp;amp;oldid=237965669&#34;&gt;Dynamisches DNS&lt;/a&gt; (nicht zu verwechseln mit der Firma &amp;quot;DynDNS&amp;quot;, die nur ein möglicher Anbieter ist)&lt;/li&gt;
&lt;li&gt;Problem 2: Router hat für gewöhnlich einen Paketfilter (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Firewall&amp;amp;oldid=244493713&#34;&gt;Firewall&lt;/a&gt;), der nur ausgehende sowie bekannte Verbindungen durchlässt -&amp;gt; Ausnahmeregel (&amp;quot;Port Opening&amp;quot;) muss konfiguriert werden; je nach Betriebssystem auch dasselbe auf dem Server selbst erforderlich&lt;/li&gt;
&lt;li&gt;Problem 3: IPv4 mit NAT, lokaler Rechner mit Server-Prozess hat nur eine lokale IP-Adresse -&amp;gt; Portweiterleitung muss konfiguriert werden (damit dann meist auch eine Ausnahmeregel in der Firewall verbunden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was kann ich zuhause betreiben?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;E-Mail definitiv nicht, MTAs aus Endkunden-IP-Bereichen werden von den großen Betreibern als Spam-Schleudern interpretiert und blockiert&lt;/li&gt;
&lt;li&gt;Videotelefonie auch eher nicht, weil da NAT-Durchdringung noch problematischer ist&lt;/li&gt;
&lt;li&gt;Faustregel: fast alles mit HTTP sollte gehen, sofern man nicht durch den oft dünnen Upstream von Endkunden-Internetanschlüssen begrenzt ist&lt;/li&gt;
&lt;li&gt;Xyrill betreibt (teils zuhause, teils auf gemieteten Servern im Rechenzentrum): &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Gitea&amp;amp;oldid=241399660&#34;&gt;Gitea&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Jitsi&amp;amp;oldid=245822087&#34;&gt;Jitsi Meet&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Matrix_(Kommunikationsprotokoll)&amp;amp;oldid=243306410&#34;&gt;Matrix&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Nextcloud&amp;amp;oldid=246251388&#34;&gt;NextCloud&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Nginx&amp;amp;oldid=246103192&#34;&gt;nginx&lt;/a&gt; (siehe STP022), &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Prometheus_(Software)&amp;amp;oldid=236686905&#34;&gt;Prometheus&lt;/a&gt; (siehe STP032)&lt;/li&gt;
&lt;li&gt;andere Vorschläge: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Bitwarden&amp;amp;oldid=1230273157&#34;&gt;Bitwarden&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kodi_(Software)&amp;amp;oldid=243970444&#34;&gt;Kodi&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mastodon_(Soziales_Netzwerk)&amp;amp;oldid=245943178&#34;&gt;Mastodon&lt;/a&gt; oder andere ActivityPub-Server (siehe STP057), &lt;a href=&#34;https://docs.paperless-ngx.com/&#34;&gt;Paperless-NGX&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Pi-hole&amp;amp;oldid=243236097&#34;&gt;Pi-Hole&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pentaradio zu Quellcode-Verwaltung mit Git: &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20210727.html&#34;&gt;https://c3d2.de/news/pentaradio24-20210727.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Audio-Streaming-Software: &lt;a href=&#34;https://www.navidrome.org/&#34;&gt;https://www.navidrome.org/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:04:07" title="Xyrills Netztests"  />
          <chapter start="00:05:38" title="Rückbezug STP061"  />
          <chapter start="00:06:42" title="Ports"  />
          <chapter start="00:23:37" title="Server-Prozess betreiben"  />
          <chapter start="00:39:10" title="Was betreiben?"  />
      </chapters>
      <enclosure length="60869590" url="https://dl.xyrillian.de/noises/stp-062-selfhosting.mp3" type="audio/mpeg"/>
      <enclosure length="37567349" url="https://dl.xyrillian.de/noises/stp-062-selfhosting.ogg" type="audio/ogg"/>
      <enclosure length="22893039" url="https://dl.xyrillian.de/noises/stp-062-selfhosting.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/062-selfhosting/</guid>
    <pubDate>Thu, 10 Oct 2024 17:35:00 GMT</pubDate>
    <itunes:duration>63:03</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP061: Heimnetzwerk</itunes:title>
    <itunes:episode>61</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP061: Heimnetzwerk</title>
    <link>https://schluesseltechnologie-podcast.de/061-heimnetzwerk</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode soll es etwas detaillierter um die unteren Schichten im Netzwerkstapel gehen. Außerdem: ttimeless fordert biologische Lösungen für Verknöcherungsprobleme und Xyrill räumt mit falschen Werbeversprechen auf.</itunes:summary>
    <description>In dieser Episode soll es etwas detaillierter um die unteren Schichten im Netzwerkstapel gehen. Außerdem: ttimeless fordert biologische Lösungen für Verknöcherungsprobleme und Xyrill räumt mit falschen Werbeversprechen auf.</description>
    <content:encoded>&lt;p&gt;In dieser Episode soll es etwas detaillierter um die unteren Schichten im Netzwerkstapel gehen. Außerdem: ttimeless fordert biologische Lösungen für Verknöcherungsprobleme und Xyrill räumt mit falschen Werbeversprechen auf.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug: STP005 (Netzwerk-Schichtenmodell)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seither haben wir über die unteren Schichten des Netzwerks nicht allzu viel gesprochen, sondern eher über Anwendungen darauf (siehe STP018 zu DNS, STP022 zu dem Web, STP052/STP054 zu TLS, STP057 zu ActivityPub/Mastodon)&lt;/li&gt;
&lt;li&gt;heute mal wieder mehr die Infrastruktursicht (Layer 1 bis 4), vor allem aus praktischer Endanwendersicht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 1/2 kabelgebunden: über achtadrige &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Twisted-Pair-Kabel&amp;amp;oldid=243787992&#34;&gt;Twisted-Pair-Kabel&lt;/a&gt; mit üblicherweise vorkonfektionierten &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=RJ-Steckverbindung&amp;amp;oldid=245704057&#34;&gt;RJ45-Steckern (8P8C)&lt;/a&gt; nach &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ethernet&amp;amp;oldid=244710581&#34;&gt;IEEE 802.3 &amp;quot;Ethernet&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Twisted Pair: Kabel mit verdrillten Doppeladern und einer (je nach Kategorie) zunehmenden Menge an Abschirmungen, damit das Kabel nicht z.B. unbeabsichtigt zur Antenne wird :) – Wikipedia hat eine &lt;a href=&#34;https://commons.wikimedia.org/w/index.php?title=File:Twisted_pair_based_ethernet.svg&amp;amp;oldid=507351021&#34;&gt;schöne Visualisierung&lt;/a&gt;, wie besser geschirmte Kabel für mehr Bandbreite sorgen&lt;/li&gt;
&lt;li&gt;vorkonfektionierte Stecker: man kann auch selber konfektionieren (sprich: Kabel auf die richtige Länge zuschneiden und Modularstecker anbringen)&lt;/li&gt;
&lt;li&gt;im Rechenzentrum findet man auch Ethernet, aber oberhalb der 10 Gbit/s dann nur noch auf Basis von Glasfasern und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Small_Form-factor_Pluggable&amp;amp;oldid=244881738&#34;&gt;SFP-Modulen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kabel alleine reichen nicht, man braucht mindestens noch einen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Switch_(Netzwerktechnik)&amp;amp;oldid=238943317&#34;&gt;Switch&lt;/a&gt;, um tatsächlich ein Kabelnetzwerk zu erhalten&lt;/li&gt;
&lt;li&gt;der Switch ist oft auch ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Router&amp;amp;oldid=242713208&#34;&gt;Router&lt;/a&gt;, der das lokale Kabelnetzwerk mit dem Internet verbindet&lt;/li&gt;
&lt;li&gt;Wir empfehlen: Beim Hausbau oder -umbau am besten gleich Cat7 verlegen (oder zumindest Leerrohre), damit man sich nicht mit WLAN-Signalstärken rumärgern muss.
&lt;ul&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Keystone-Modul&amp;amp;oldid=234182002&#34;&gt;Keystone-Modul&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 1/2 kabellos: über Radiowellen im 2,4-GHz-Band oder im 5-GHz-Band nach &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=IEEE_802.11&amp;amp;oldid=245761310&#34;&gt;IEEE 802.11 &amp;quot;WLAN bzw. Wi-Fi&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;was bei Ethernet der Switch, ist bei WLAN der &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Wireless_Access_Point&amp;amp;oldid=237904996&#34;&gt;Access Point (AP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;übliches Setup zuhause: der zentrale Router macht sowohl LAN (Ethernet) als auch WLAN&lt;/li&gt;
&lt;li&gt;Xyrills Setup: ein Server agiert als Router, aber macht nur LAN; am LAN hängt ein WLAN-AP (&lt;strong&gt;kein&lt;/strong&gt; WLAN-Router, somit nur ein lokales Netz für alle Endgeräte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 3 mit &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=IPv4&amp;amp;oldid=243903744&#34;&gt;IPv4&lt;/a&gt; (1981)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;auf dem Router läuft mindestens ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dynamic_Host_Configuration_Protocol&amp;amp;oldid=244947062&#34;&gt;DHCP-Server&lt;/a&gt;, um die lokalen Adressen zu vergeben; oft auch ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Domain_Name_System&amp;amp;oldid=245211339&#34;&gt;DNS-Resolver&lt;/a&gt; (siehe STP018)&lt;/li&gt;
&lt;li&gt;an und für sich sind Netzwerke ineinander verschachtelt, z.B. kann ein Netzwerk &lt;code&gt;10.11.0.0/16&lt;/code&gt; ein Teilnetzwerk &lt;code&gt;10.11.12.0/24&lt;/code&gt; enthalten (Analogie: Telefonanlage in einem Firmengebäude mit Verbindung ins weite Telefonnetz); damit fast beliebig feine Unterteilungen des Netzwerks möglich&lt;/li&gt;
&lt;li&gt;Problem: insgesamt etwa 4,3 Mrd. unterschiedliche IP-Adressen, aber davon nur &lt;a href=&#34;https://stackoverflow.com/a/2437185&#34;&gt;etwa 3,7 Mrd. &amp;quot;weltweit gültige&amp;quot; Adressen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in der Praxis sehr viel &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Netzwerkadress%C3%BCbersetzung&amp;amp;oldid=237026399&#34;&gt;NAT&lt;/a&gt;: ein Heimnetzwerk kriegt nur eine IP-Adresse für den Router; innerhalb des lokalen Netzwerkes private Adressen (z.B. &lt;code&gt;192.168.x.y&lt;/code&gt;), die nicht direkt aus dem Internet erreichbar sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 3 mit &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=IPv6&amp;amp;oldid=245056053&#34;&gt;IPv6&lt;/a&gt; (1998)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IPv6-Adressen haben sehr viel mehr Ziffern und sind damit extrem viel zahlreicher, aber auch unhandlicher&lt;/li&gt;
&lt;li&gt;noch sehr viele andere Unterschiede zu IPv4, die mit dazu führten, dass sich IPv6 nur sehr langsam verbreitet hat bzw. immer noch verbreitet&lt;/li&gt;
&lt;li&gt;Endanwender kriegen bei IPv6 nicht nur einzelne Adressen, sondern wie ursprünglich vorgesehen ganze Netze, die ihr Router frei verwalten kann&lt;/li&gt;
&lt;li&gt;statt DHCP meist nur SLAAC (Stateless Address Auto-Configuration; zustandslose Adressen-Autokonfiguration): Router teilt den Netzwerkbereich mit und Endgeräte würfeln selbsttätig gültige Adressen&lt;/li&gt;
&lt;li&gt;Umfangreichere Infos im &lt;a href=&#34;https://requestforcomments.de/archives/412&#34;&gt;RFC-Podcast zu IPv6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Problem: Wenn jedes Gerät vom Computer bis zur smarten Glühbirne eine global eindeutige IPv6-Adresse hat, ist das nicht ein Traum für jeden Überwachungskapitalisten?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 3 mit &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Virtual_Private_Network&amp;amp;oldid=245792132&#34;&gt;VPN (Virtual Private Network)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: Netzwerkverkehr ist zumindest auf Layer 2 und darüber auch nur Bits und Bytes; die kann man als Nutzdaten behandeln und in eine andere Netzwerkverbindung zu einem VPN-Server einpacken (meist auch mit Verschlüsselung drumherum, z.B. TLS)&lt;/li&gt;
&lt;li&gt;Xyrills Setup: ein Server im Rechenzentrum fungiert als VPN-Server, mit dem Xyrills Endgeräte alle verbunden sind; aus Sicht der Endgeräte sind alle im selben lokalen Netzwerk; damit auch z.B. vom Notebook von unterwegs &amp;quot;direkter&amp;quot; Zugriff auf den Heimserver möglich (trotz NAT im Plaste-Router)&lt;/li&gt;
&lt;li&gt;das häufigere Setup beim Endanwender: aller Datenverkehr nach außen geht durch einen VPN-Tunnel und erst ab dem Server des VPN-Anbieters weiter ins weite Internet&lt;/li&gt;
&lt;li&gt;tatsächlicher Nutzen: es sieht so aus, als ob man in einer anderen geografischen Region sitzt, was z.B. für Streaming-Dienste relevant sein kann (aber Vorsicht: das verstößt oft gegen die Geschäftsbedingungen des Streamers; das hier ist keine Rechtsberatung)&lt;/li&gt;
&lt;li&gt;fragwürdiger Nutzen: man muss nicht mehr dem Internetanbieter vertrauen, dass der nicht den eigenen Datenverkehr mitliest (Problem 1: in Zeiten von allgegenwärtigem TLS sieht der ISP sowieso nur die Domain-Namen und IP-Adressen, nicht die Inhalte; Problem 2: man verschiebt die Vertrauensfrage nur vom Internetanbieter zum VPN-Anbieter)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Layer 4 bis 7 dann beim nächsten Mal&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:22" title="Rückbezüge"  />
          <chapter start="00:03:12" title="Layer 1/2"  />
          <chapter start="00:04:00" title="Abschweif zu Mikrowellen"  />
          <chapter start="00:06:08" title="Ethernet"  />
          <chapter start="00:07:18" title="Twisted-Pair-Kabel"  />
          <chapter start="00:15:59" title="Glasfaser"  />
          <chapter start="00:18:33" title="Hausinstallation und Konfektionierung"  />
          <chapter start="00:23:04" title="Switches und Router"  />
          <chapter start="00:26:20" title="Drahtlose Geräte anstecken"  />
          <chapter start="00:28:24" title="Kabellos"  />
          <chapter start="00:39:59" title="Wiederholung: Layer 1/2"  />
          <chapter start="00:44:54" title="Layer 3"  />
          <chapter start="00:47:22" title="DHCP"  />
          <chapter start="00:50:28" title="IPv4 und NAT"  />
          <chapter start="00:58:19" title="IPv6"  />
          <chapter start="01:08:24" title="VPN"  />
      </chapters>
      <enclosure length="75083272" url="https://dl.xyrillian.de/noises/stp-061-heimnetzwerk.mp3" type="audio/mpeg"/>
      <enclosure length="48188387" url="https://dl.xyrillian.de/noises/stp-061-heimnetzwerk.ogg" type="audio/ogg"/>
      <enclosure length="28585375" url="https://dl.xyrillian.de/noises/stp-061-heimnetzwerk.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/061-heimnetzwerk/</guid>
    <pubDate>Thu, 19 Sep 2024 19:10:00 GMT</pubDate>
    <itunes:duration>77:51</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP060: Praxisbeispiel: Datenauswertung auf der Kommandozeile</itunes:title>
    <itunes:episode>60</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP060: Praxisbeispiel: Datenauswertung auf der Kommandozeile</title>
    <link>https://schluesseltechnologie-podcast.de/060-praxisbeispiel-datenauswertung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem die beiden sich gegenseitig ihr Leid geklagt haben, geht es dann doch noch um Technik. Oder eher um deren Anwendung. Diesmal wieder mit einer Hands-on-Folge, denn es ist wichtig, vor Kunden und bei Präsentationen einen professionellen Eindruck zu machen.</itunes:summary>
    <description>Nachdem die beiden sich gegenseitig ihr Leid geklagt haben, geht es dann doch noch um Technik. Oder eher um deren Anwendung. Diesmal wieder mit einer Hands-on-Folge, denn es ist wichtig, vor Kunden und bei Präsentationen einen professionellen Eindruck zu machen.</description>
    <content:encoded>&lt;p&gt;Nachdem die beiden sich gegenseitig ihr Leid geklagt haben, geht es dann doch noch um Technik. Oder eher um deren Anwendung. Diesmal wieder mit einer Hands-on-Folge, denn es ist wichtig, vor Kunden und bei Präsentationen einen professionellen Eindruck zu machen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückblick: STP006 &amp;quot;Kommandozeilen und Unixphilosophie&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ttimeless hat gerade eine Gelegenheit, Daten zu analysieren, an der man das praktische Vorgehen mit Kommandozeilen-Werkzeugen gut demonstrieren kann&lt;/li&gt;
&lt;li&gt;Ausgangssituation: &lt;a href=&#34;https://www.conrad.de/de/p/voltcraft-dl-210th-dl-210th-temperatur-datenlogger-luftfeuchte-datenlogger-messgroesse-temperatur-luftfeuchtigkeit-30-1435091.html&#34;&gt;Klimasensor-Datenlogger&lt;/a&gt; in verschiedenen Räumen messen einmal pro Minute Temperatur und Luftfeuchtigkeit&lt;/li&gt;
&lt;li&gt;mitgelieferte Software bietet eine rudimentäre Visualisierung sowie einen Datenexport als &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=CSV_(Dateiformat)&amp;amp;oldid=244981555&#34;&gt;CSV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;die &lt;a href=&#34;http://dl.xyrillian.de/noises/stp-060-shownotes/&#34;&gt;hier besprochenen CSV-Dateien&lt;/a&gt; können zum Nachvollziehen heruntergeladen werden&lt;/li&gt;
&lt;li&gt;Ziel: eigene Datenvisualisierung mit &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Gnuplot&amp;amp;oldid=226771326&#34;&gt;gnuplot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;erste Sichtprüfung: &lt;code&gt;&amp;lt;Balkon.csv head&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;acht Kopfzeilen mit Metadaten und Auswertungen (Berichtszeitraum, Maximum/Minimum/Durchschnitt)&lt;/li&gt;
&lt;li&gt;diesen Header brauchen wir nicht, wir wollen die Rohdaten&lt;/li&gt;
&lt;li&gt;Option 1: sofern immer acht Zeilen, z.B. &lt;code&gt;tail -n &#43;9&lt;/code&gt; oder &lt;code&gt;sed 1,8d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Option 2: Suchmuster auf den Zeileninhalt der letzten Kopfzeile, z.B. &lt;code&gt;sed 1,/^Aufnahmezeit/d&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Option 3: nur Zeilen auswählen, die nach Daten aussehen, z.B. &lt;code&gt;grep &#39;^&amp;quot;[0-9]&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kopfzeilen entfernt: &lt;code&gt;&amp;lt;Balkon.csv sed 1,8d&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nächstes Problem: die Anführungszeichen um die einzelnen Werte werden gnuplot verwirren -&amp;gt; würden wir mit &lt;code&gt;tr -d \&amp;quot;&lt;/code&gt; wegbekommen&lt;/li&gt;
&lt;li&gt;Problem: dann wären die Dezimalkommas nicht von den wertetrennenden Kommas zu unterscheiden&lt;/li&gt;
&lt;li&gt;unsere Lösung: während wir Anführungszeichen entfernen, werden dazwischenliegende Kommas gleichzeitig durch ein anderes Trennzeichen (hier einen Tabulator) ersetzt -&amp;gt; &lt;code&gt;sed &#39;s/^&amp;quot;//; s/&amp;quot;,&amp;quot;/\t/g; s/&amp;quot;\s*$//&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;hierin ist Trickserei erforderlich, weil die erzeugten Dateien Windows-Zeilenenden haben (CR&#43;LF), nicht Unix-Zeilenenden (nur LF) -&amp;gt; könnte man auch vorher mit &lt;code&gt;dos2unix&lt;/code&gt; beheben, dann ist statt &lt;code&gt;s/&amp;quot;\s*$//&lt;/code&gt; nur &lt;code&gt;s/&amp;quot;$//&lt;/code&gt; erforderlich&lt;/li&gt;
&lt;li&gt;Alternative (erfordert &lt;a href=&#34;https://csvkit.readthedocs.org&#34;&gt;csvkit&lt;/a&gt;): &lt;code&gt;csvformat -d , -q \&amp;quot; -U 3 -D $&#39;\t&#39;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anführungszeichen entfernt: &lt;code&gt;&amp;lt;Balkon.csv sed 1,8d | sed &#39;s/^&amp;quot;//; s/&amp;quot;,&amp;quot;/\t/g; s/&amp;quot;\s*$//&#39; &amp;gt;Balkon.dat&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zu Xyrills Überraschung ist das schon ausreichend, den Rest können wir in gnuplot machen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anzeige in gnuplot: das untenstehende Programm als &lt;code&gt;Balkon.gp&lt;/code&gt; abspeichern, &lt;code&gt;gnuplot&lt;/code&gt; aufrufen und &lt;code&gt;load &#39;Balkon.gp&#39;&lt;/code&gt; eingeben)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set xdata time
set timefmt &#39;%d-%m-%Y %H:%M:%S&#39;
set format x &#39;%d.%m.%Y %H:%M:%S&#39;
set decimalsign &#39;,&#39;
set datafile separator &amp;quot;\t&amp;quot;
set ylabel &amp;quot;Temperatur °C&amp;quot;
set y2label &amp;quot;Luftfeuchte %&amp;quot;
set y2tics
plot &#39;Balkon.dat&#39; using 1:2 title &#39;Temperatur&#39; with lines axes x1y1, &#39;Balkon.dat&#39; using 1:3 title &#39;Luftfeuchtigkeit&#39; with lines axes x1y2
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Für die Ausgabe in eine Datei können noch diese beiden Zeilen vorangestellt werden:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;set terminal svg background &amp;quot;white&amp;quot; dashed size 1920,1080
set output &amp;quot;Balkon.svg&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was, wenn gnuplot nicht so clever wäre?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dezimaltrennzeichen von Komma in Punkt ändern: &lt;code&gt;&amp;lt;Balkon.dat tr , .&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Datumsformat in ISO ändern: &lt;code&gt;&amp;lt;Balkon.dat awk -F&#39;\t&#39; &#39;{ split($1, DATE, /[^0-9]*/); $1 = DATE[3] &amp;quot;-&amp;quot; DATE[2] &amp;quot;-&amp;quot; DATE[1] &amp;quot;T&amp;quot; DATE[4] &amp;quot;:&amp;quot; DATE[5] &amp;quot;:&amp;quot; DATE[6] &amp;quot;Z&amp;quot;; print }&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Xyrill hatte auch geschaut, wie man die Zeitangaben in &lt;code&gt;date -d&lt;/code&gt; bekommen könnte, um sie damit umzuwandeln, und wurde von &lt;a href=&#34;https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html&#34;&gt;einem wunderschönen Zitat&lt;/a&gt; begrüßt (nachfolgende deutsche Übersetzung mittels &lt;a href=&#34;https://www.deepl.com/translator&#34;&gt;DeepL&lt;/a&gt;):
&lt;blockquote&gt;
&lt;p&gt;Unsere zeitlichen Maßeinheiten, von Sekunden bis hin zu Monaten, sind so kompliziert, asymmetrisch und disjunkt, dass ein kohärentes mentales Rechnen in der Zeit nahezu unmöglich ist. In der Tat, hätte sich ein tyrannischer Gott ausgedacht, unseren Geist an die Zeit zu versklaven, um es uns nahezu unmöglich zu machen, der Unterwerfung unter durchweichte Routinen und unangenehme Überraschungen zu entkommen, hätte er kaum etwas Besseres tun können, als uns unser gegenwärtiges System zu überliefern. Es ist wie ein Satz trapezförmiger Bauklötze, ohne vertikale oder horizontale Flächen, wie eine Sprache, in der der einfachste Gedanke verschnörkelte Konstruktionen, nutzlose Partikel und langatmige Umschreibungen erfordert. Im Gegensatz zu den erfolgreicheren Mustern der Sprache und der Wissenschaft, die es uns ermöglichen, Eindrücken kühn oder zumindest nüchtern zu begegnen, fördert unser System der zeitlichen Berechnung stillschweigend und beharrlich unseren Terror vor der Zeit.&lt;/p&gt;
&lt;p&gt;... Es ist, als ob Architekten die Länge in Fuß, die Breite in Metern und die Höhe in Ellen messen müssten; als ob grundlegende Bedienungsanleitungen die Kenntnis von fünf verschiedenen Sprachen erfordern würden. Kein Wunder also, dass wir in unsere eigene unmittelbare Vergangenheit oder Zukunft, auf den letzten Dienstag oder den Sonntag in einer Woche, oft mit einem Gefühl hilfloser Verwirrung blicken.  ...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt: &lt;a href=&#34;https://requestforcomments.de/archives/400&#34;&gt;ASCII-Folge von Request for Comments&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und geklagtes Leid"  />
          <chapter start="00:03:59" title="Einfürung und Szenario"  />
          <chapter start="00:07:37" title="Sichtung der Messdaten"  />
          <chapter start="00:07:59" title="Zeilenenden"  />
          <chapter start="00:11:09" title="Whitespaces"  />
          <chapter start="00:13:09" title="Header"  />
          <chapter start="00:14:43" title="CSV-Dateien"  />
          <chapter start="00:20:01" title="Sanity-Check"  />
          <chapter start="00:21:40" title="Abschweif: Ideolekt"  />
          <chapter start="00:22:42" title="Sichtung mit &#34;head&#34;"  />
          <chapter start="00:24:32" title="Aufbereitung der Daten"  />
          <chapter start="00:25:23" title="mit &#34;tail&#34;"  />
          <chapter start="00:26:27" title="mit &#34;sed&#34;"  />
          <chapter start="00:30:23" title="Anmerkung zur Automatisierung"  />
          <chapter start="00:41:52" title="Gnuplot"  />
          <chapter start="00:44:17" title="Textmanipulation"  />
          <chapter start="00:46:23" title="mit &#34;tr&#34;"  />
          <chapter start="00:48:31" title="nochmal mit &#34;sed&#34;"  />
          <chapter start="00:51:34" title="Gnuplot-script"  />
          <chapter start="01:00:14" title="Orientierung im Befehlsdschungel"  />
          <chapter start="01:02:18" title="Datumsformatierung ändern"  />
          <chapter start="01:04:23" title="Verzweiflung aus der &#34;date&#34;-Dokumentation"  />
      </chapters>
      <enclosure length="63418164" url="https://dl.xyrillian.de/noises/stp-060-praxisbeispiel-datenauswertung.mp3" type="audio/mpeg"/>
      <enclosure length="39773224" url="https://dl.xyrillian.de/noises/stp-060-praxisbeispiel-datenauswertung.ogg" type="audio/ogg"/>
      <enclosure length="24034233" url="https://dl.xyrillian.de/noises/stp-060-praxisbeispiel-datenauswertung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/060-praxisbeispiel-datenauswertung/</guid>
    <pubDate>Thu, 29 Aug 2024 17:34:06 GMT</pubDate>
    <itunes:duration>65:42</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP059: Nebenläufigkeit</itunes:title>
    <itunes:episode>59</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP059: Nebenläufigkeit</title>
    <link>https://schluesseltechnologie-podcast.de/059-nebenlaeufigkeit</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem es in STP015 (Multitasking) bereits um die nacheinanderfolgende Verteilung von Resourcen an verschiedene Prozesse ging, kommt heute echtes &amp;quot;gleichzeitig Arbeiten&amp;quot; dran.</itunes:summary>
    <description>Nachdem es in STP015 (Multitasking) bereits um die nacheinanderfolgende Verteilung von Resourcen an verschiedene Prozesse ging, kommt heute echtes &amp;quot;gleichzeitig Arbeiten&amp;quot; dran.</description>
    <content:encoded>&lt;p&gt;Nachdem es in STP015 (Multitasking) bereits um die nacheinanderfolgende Verteilung von Resourcen an verschiedene Prozesse ging, kommt heute echtes &amp;quot;gleichzeitig Arbeiten&amp;quot; dran.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug und Abgrenzung zu STP015 (Multitasking in Betriebssystemen)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Definition von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Nebenl%C3%A4ufigkeit&amp;amp;oldid=242751497&#34;&gt;Nebenläufigkeit&lt;/a&gt;: &amp;quot;in der Informatik die Eigenschaft eines Systems, mehrere Aufgaben, Berechnungen, Anweisungen oder Befehle gleichzeitig ausführen zu können&amp;quot;&lt;/li&gt;
&lt;li&gt;Definition von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Multitasking&amp;amp;oldid=241562607&#34;&gt;Multitasking&lt;/a&gt;: &amp;quot;die Fähigkeit eines Betriebssystems, mehrere Aufgaben [...] (quasi-)nebenläufig auszuführen&amp;quot;&lt;/li&gt;
&lt;li&gt;eins definiert das andere \o/ -&amp;gt; wir schauen auf den Begriffsgebrauch in der Praxis&lt;/li&gt;
&lt;li&gt;Multitasking: die funktionale Umsetzung einer Multiprozess-Architektur in Hardware und Software (auf Betriebssystem-Ebene)&lt;/li&gt;
&lt;li&gt;Nebenläufigkeit: die Ertüchtigung von Userspace-Programmen zur Ausnutzung dieser Möglichkeiten unter Wahrung des korrekten Verhaltens&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundproblem: Wie vermeidet man Konflikte und Verwirrung beim Umgang mit geteilten Ressourcen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Ressource&amp;quot; bedeutet vor allem: Speicherstellen, Dateisystem-Einträge (Dateien und Verzeichnisse), Geräte, (Aufmerksamkeit der Benutzerin)&lt;/li&gt;
&lt;li&gt;explizit nicht Zeit; darum kümmert sich bereits die Multitasking-Unterstützung des Betriebssystems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Race&lt;/strong&gt;: eine Situation, bei der das Ergebnis (und insbesondere die Korrektheit) mehrerer nebenläufiger Prozesse davon abhängt, in welcher Reihenfolge die einzelnen Rechenschritte verschiedener Prozesse zufälligerweise ausgeführt werden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;allgemein bekannt als &lt;strong&gt;Race Condition&lt;/strong&gt; (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Wettlaufsituation&amp;amp;oldid=203715002&#34;&gt;Wettlaufsituation&lt;/a&gt;) oder beim Speicherzugriff insbesondere &lt;strong&gt;Data Race&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Beispielsituation: im Arbeitsspeicher liegt ein Zähler mit aktuellem Wert 40; zwei Prozesse A und B wollen diesen Zähler gleichzeitig um 1 erhöhen -&amp;gt; erwarteter Endwert 42&lt;/li&gt;
&lt;li&gt;Problem: &amp;quot;Zahl im Arbeitsspeicher verändern&amp;quot; ist nicht, wie Speicherzugriff in CPUs funktioniert (siehe STP007); tatsächlich sind jeweils drei Schritte erforderlich (Einlesen in CPU-Register, Erhöhen um 1, Zurückschreiben in den RAM)&lt;/li&gt;
&lt;li&gt;möglicher Ausgang: beide Prozesse laufen auf verschiedenen CPUs, lesen gleichzeitig den Wert 40 in ihre CPU-Register, erhöhen gleichzeitig auf 41, schreiben dies zurück -&amp;gt; Ergebnis 41 statt 42&lt;/li&gt;
&lt;li&gt;&amp;quot;auf verschiedenen CPUs&amp;quot; ist hier nicht erforderlich: z.B. A liest ein und erhöht, wird unterbrochen, B liest ein und erhöht, B schreibt zurück, wird unterbrochen, A schreibt zurück&lt;/li&gt;
&lt;li&gt;&amp;quot;zwei Prozesse&amp;quot; ist auch nicht erforderlich: Prozesse können auch in &lt;strong&gt;Threads&lt;/strong&gt; (parallele Ausführungsstränge) unterteilt sein, die nebenläufig Code ausführen, aber ansonsten fast alle Ressourcen (Speicherseiten, offene Dateien, etc.) teilen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;wir brauchen ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mutex&amp;amp;oldid=217939607&#34;&gt;Mutex&lt;/a&gt;: einen Mechanismus zum wechselseitigen Ausschluss (&amp;quot;&lt;strong&gt;Mut&lt;/strong&gt;ual &lt;strong&gt;Ex&lt;/strong&gt;clusion&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: Wie implementiert man sowas?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Idee: bevor wir den Zähler anfassen, fragen wir bei einem zentralen Prozess nach einer Sperre für diesen Zähler an; dieser Prozess vermerkt Sperr- und Entsperrvorgänge in seinem internen Speicher&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dieser Kontrollprozess könnte auch einfach ein Teil des Betriebssystems sein und der Sperr-/Entsperrvorgang ein Syscall (siehe STP019)&lt;/li&gt;
&lt;li&gt;Vorteil: innerhalb dieses Kontrollprozesses keine Nebenläufigkeit und damit keine Gefahr eines Data Race&lt;/li&gt;
&lt;li&gt;Nachteil: Interprozess-Kommunikation ist vergleichsweise grauenhaft langsam (Millisekunden vs. Mikrosekunden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Idee: in der &lt;strong&gt;kritischen Region&lt;/strong&gt; (von Auslesen des Zählers bis Zurückschreiben) verbieten wir dem Betriebssystem, unseren Prozess zu unterbrechen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem 1: hilft nur bei nebenläufigen Prozessen auf demselben CPU-Kern&lt;/li&gt;
&lt;li&gt;Problem 2: immer noch ein teurer Syscall&lt;/li&gt;
&lt;li&gt;Problem 3: böswillige Prozesse könnten einfach ihre gesamte Laufzeit als kritische Region markieren und die Rechenzeit blockieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;praktische Umsetzung von Mutexen mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Atomare_Operation&amp;amp;oldid=232565909&#34;&gt;Atomics&lt;/a&gt;: spezielle CPU-Instruktionen, die nicht unterbrochen werden können&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel für Mutex: &amp;quot;Fetch and Add&amp;quot; liest einen Wert aus dem Speicher aus, erhöht ihn um das Argument, und schreibt den erhöhten Wert zurück&lt;/li&gt;
&lt;li&gt;schneller als ein Kontextwechsel zu einem Kontrollprozess oder ein Syscall&lt;/li&gt;
&lt;li&gt;langsamer als ein normaler Speicherzugriff, da eventuell Caches ignoriert oder aktiv geleert werden müssen&lt;/li&gt;
&lt;li&gt;in der Praxis evtl. Kombination mit Syscalls, um bei blockiertem Mutex den Prozess zu unterbrechen (z.B. unter Linux das &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Futex&amp;amp;oldid=242228263&#34;&gt;&amp;quot;Fast Userspace Mutex&amp;quot; bzw. Futex&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;andere Perspektive, hier zitiert aus der Programmiersprache Go: &lt;a href=&#34;https://go.dev/doc/effective_go&#34;&gt;&amp;quot;Do not communicate by sharing memory; instead, share memory by communicating.&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;statt Zugriffssicherungen für geteilten Speicher dort eher Nutzung von &amp;quot;Kanälen&amp;quot; (&lt;strong&gt;Channels&lt;/strong&gt;) zur Nachrichtenübermittlung zwischen Threads&lt;/li&gt;
&lt;li&gt;Beispiel &amp;quot;Worker Pool&amp;quot;: mehrere gleichartige und voneinander unabhängige Teilaufgaben sind abzuarbeiten (z.B. 100 Bilder in ein anderes Dateiformat umwandeln)&lt;/li&gt;
&lt;li&gt;Idee: ein Worker (Arbeits-Prozess oder Arbeits-Thread) pro CPU-Kern; außerdem ein zentraler Prozess, der die Aufgaben verteilt; Zentrale stellt alle Dateinamen in einen Kanal, Arbeiter greifen nacheinander aus dem Kanal die Dateinamen heraus&lt;/li&gt;
&lt;li&gt;unter der Haube nutzt der Kanal Atomics, um sich vor Data Races zu schützen&lt;/li&gt;
&lt;li&gt;Rückbezug zu STP027: sobald man mehrere Threads untereinander koordinieren muss, hat man das ganze Problemfeld &amp;quot;Verteilte Systeme&amp;quot;, was nach Xyrills Erfahrung nochmal wesentlich nerviger ist als Data Races&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abendgedanken: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Amdahlsches_Gesetz&amp;amp;oldid=233711717&#34;&gt;Amdahl&#39;sches Gesetz&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mehr CPU-Kerne machen nur Dinge schneller, die wahrhaft nebenläufig sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:31" title="Rückbezug zu STP015"  />
          <chapter start="00:04:28" title="Grundproblem"  />
          <chapter start="00:07:51" title="Race"  />
          <chapter start="00:15:01" title="Wir brauchen ein Mutex"  />
          <chapter start="00:38:15" title="Speicher teilen mit Kanälen"  />
          <chapter start="00:44:17" title="Amdahl&#39;sches Gesetz"  />
      </chapters>
      <enclosure length="48821671" url="https://dl.xyrillian.de/noises/stp-059-nebenlaeufigkeit.mp3" type="audio/mpeg"/>
      <enclosure length="30379736" url="https://dl.xyrillian.de/noises/stp-059-nebenlaeufigkeit.ogg" type="audio/ogg"/>
      <enclosure length="18444076" url="https://dl.xyrillian.de/noises/stp-059-nebenlaeufigkeit.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/059-nebenlaeufigkeit/</guid>
    <pubDate>Thu, 08 Aug 2024 20:30:00 GMT</pubDate>
    <itunes:duration>50:30</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP058: Identifier</itunes:title>
    <itunes:episode>58</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP058: Identifier</title>
    <link>https://schluesseltechnologie-podcast.de/058-identifier</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Da die Zeiten von Karteikarten in Büros und auf Ämtern &lt;del&gt;zum Glück&lt;/del&gt; &lt;em&gt;leider&lt;/em&gt; vorbei sind, braucht es nun andere Wege, um Personen zu identifizieren. Doch nicht nur störende Kundschaft will wiedererkannt werden...</itunes:summary>
    <description>Da die Zeiten von Karteikarten in Büros und auf Ämtern &lt;del&gt;zum Glück&lt;/del&gt; &lt;em&gt;leider&lt;/em&gt; vorbei sind, braucht es nun andere Wege, um Personen zu identifizieren. Doch nicht nur störende Kundschaft will wiedererkannt werden...</description>
    <content:encoded>&lt;p&gt;Da die Zeiten von Karteikarten in Büros und auf Ämtern &lt;del&gt;zum Glück&lt;/del&gt; &lt;em&gt;leider&lt;/em&gt; vorbei sind, braucht es nun andere Wege, um Personen zu identifizieren. Doch nicht nur störende Kundschaft will wiedererkannt werden...&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir haben einiges an Feedback bekommen, siehe Ende der Shownotes. Zuerst zum eigentlichen Thema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifier&lt;/strong&gt; (ID): eindeutiges Kennzeichen zur Unterscheidung gleichartiger Objekte oder Individuen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;während des Softwaredesign (z.B. beim Entwurf des Datenbankschemas): Entscheidung darüber, welche Identifier für welche Kategorien von Objekten verwendet werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Identifier für Menschen: &lt;a href=&#34;https://web.archive.org/web/20240325164409/shinesolutions.com/2018/01/08/falsehoods-programmers-believe-about-names-with-examples/&#34;&gt;Falsehoods Programmers Believe About Names&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bei deutschen Behörden üblich: das Tupel aus Name und Geburtsdatum und evtl. Geburtsort -&amp;gt; &lt;a href=&#34;https://web.archive.org/web/20240404170829/https://www.tagesspiegel.de/berlin/stadtleben/die-doppelte-katja-4792738.html&#34;&gt;immer noch nicht ganz eindeutig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bei Benutzerkonten im wesentlichen drei Optionen:
&lt;ul&gt;
&lt;li&gt;fortlaufende Nummern (Vorteile: im Speicher kompakt darstellbar, robustes Pseudonym; Nachteile: leakt das Alter des Kontos, rare kurze Nummern vermitteln Status), siehe z.B. ICQ-Kontonummern (frühe 2000er)&lt;/li&gt;
&lt;li&gt;frei wählbare Benutzernamen (Vorteile: eingängig, Pseudonymität möglich; Nachteile: belohnt frühe Registrierung, fördert Name-Squatting)&lt;/li&gt;
&lt;li&gt;E-Mail-Adressen (Vorteile: enthält implizit eine Kontaktmöglichkeit, wird seltener vergessen als eine Nummer oder ein frei wählbarer Name; Nachteile: muss vertraulich behandelt werden, beim Wechsel der Mail-Adresse evtl. Neuanmeldung erforderlich)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;auch bei Objekten oder Datenstrukturen eine gute Option: &lt;strong&gt;fortlaufende Nummern&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;im deutschen Handelsrecht bei Rechnungen sogar in gewissem Rahmen rechtlich vorgeschrieben&lt;/li&gt;
&lt;li&gt;Vorteil: Hochzählen ist trivial umzusetzen&lt;/li&gt;
&lt;li&gt;Vorteil: kompakte Darstellung im Speicher (z.B. nur 4 Byte bei einer Gesamtzahl unter 4 Mrd. Objekte) -&amp;gt; insb. wichtig bei Kreuzreferenzen&lt;/li&gt;
&lt;li&gt;Nachteil: ab und zu hat man doch mehr Objekte als erwartet und muss mühselig auf größere Zahlen umstellen (z.B. bei über 4 Mrd. Objekten von 32-Bit-Zahlen auf 64-Bit-Zahlen) -&amp;gt; &lt;a href=&#34;https://news.ycombinator.com/item?id=14539770&#34;&gt;Beispiel bei der Schachwebseite chess.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nachteil: in verteilten Systemen (siehe STP027) braucht man eine zentrale ID-Vergabestelle oder einen aufwändigen Konsensalgorithmus -&amp;gt; Geht das besser?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Universally_Unique_Identifier&amp;amp;oldid=243706271&#34;&gt;Universally Unique Identifier (UUID)&lt;/a&gt; gemäß &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc4122&#34;&gt;RFC 4122&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: mit dem Schritt von 64 Bit auf 128 Bit so viele mögliche Werte, dass man z.B. bei zufälliger Wahl eine absurd geringe Kollisionswahrscheinlichkeit hat&lt;/li&gt;
&lt;li&gt;Darstellung in Text meistens als Hexadezimalzahl in Gruppen von 8, 4, 4, 4 und 12 Stellen; Beispiel: &lt;code&gt;8b4b72a2-55dd-4ab7-b239-bb9caad9107a&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;mehrere verschiedene Formate: heutzutage am häufigsten UUIDv4 (mit rein zufälligen Zahlen, außer dass die 13. Hexadezimalstelle die Formatzahl &amp;quot;4&amp;quot; enthält)&lt;/li&gt;
&lt;li&gt;Vorteil: in verteilten Systemen keine Koordination bei der Vergabe erforderlich&lt;/li&gt;
&lt;li&gt;Nachteil: etwas weniger kompakt, insb. wenn die UUID wie oft üblich als Text abgespeichert wird&lt;/li&gt;
&lt;li&gt;Nachteil insb. bei UUIDv4: keine sinnvolle Sortierung -&amp;gt; Alternativvorschläge wie &lt;a href=&#34;https://www.ietf.org/archive/id/draft-ietf-uuidrev-rfc4122bis-07.html#name-uuid-version-7&#34;&gt;UUIDv7&lt;/a&gt; oder &lt;a href=&#34;https://github.com/ulid/spec&#34;&gt;ULID&lt;/a&gt; stellen eine sortierbar kodierte Form des Erstellungszeitstempels voran&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Content-Addressed_Storage&#34;&gt;Content-Addressed Storage (CAS)&lt;/a&gt;: Bezeichnung eines Datenstroms durch seine kryptografische Prüfsumme (siehe STP004)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Identifikation &lt;a href=&#34;https://dl.xyrillian.de/noises/stp-038-intro.png&#34;&gt;dieses Bildes&lt;/a&gt; nicht durch einen Dateinamen/Pfad/URL wie &lt;code&gt;https://dl.xyrillian.de/noises/stp-038-intro.png&lt;/code&gt;, sondern durch die Prüfsumme &lt;code&gt;sha256:e68ae45acddfab6198c01ba552ca9f1b76e78bc12c4a4ca0476da27d688d8238&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Bildung von Datenstrukturen (z.B. Ordner oder Lesezeichenlisten) durch Benutzung dieser Prüfsummen-IDs analog zu Inode-Nummern (siehe STP031)&lt;/li&gt;
&lt;li&gt;möglicherweise noch menschenlesbare Identifier, die auf CAS-Identifier abbilden (z.B. in &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20210727.html&#34;&gt;Git&lt;/a&gt;: Tags als menschenlesbare Namen für Commits)&lt;/li&gt;
&lt;li&gt;Vorteil: bei sorgfältigem Design selbsttätige Deduplikation und Integritätsprüfung möglich&lt;/li&gt;
&lt;li&gt;Nachteil: Prüfsummen sind nochmal deutlich sperriger als UUIDs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zur Bezeichnung von Software-Versionen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Versionsnummer&amp;amp;oldid=239964497&#34;&gt;Versionsnummern&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;konventionelles Format: Zahlen mit Punkten getrennt (z.B. &lt;code&gt;1.7.10&lt;/code&gt;), sortiert leider nicht lexikografisch (z.B. &lt;code&gt;&amp;quot;1.7.10&amp;quot; &amp;gt; &amp;quot;1.10.7&amp;quot;&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;kein fester Formatstandard, aber es gibt Ansätze: z.B. &lt;a href=&#34;https://semver.org/lang/de/&#34;&gt;Semantic Versioning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Alternativschema: jahreszahlbasiert (z.B. Ubuntu 24.06 ist die im Juni 2024 veröffentlichte Version) -&amp;gt; Bemerkung von ttimeless: kann man auch mit Dateien machen (z.B. &lt;code&gt;2024-03-01-ticket-bahn.pdf&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Alternativschema: das Marketing bestimmt (z.B. XBox -&amp;gt; XBox 360 -&amp;gt; XBox One -&amp;gt; XBox Series X/S)&lt;/li&gt;
&lt;li&gt;Alternativschema: Konvergenz (die Versionsnummer von TeX nähert sich der Zahl π an) -&amp;gt; bräuchten wir vielleicht mehr davon :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Feedback zu STP049&lt;/h4&gt;
&lt;p&gt;Till schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Xyrill,&lt;/p&gt;
&lt;p&gt;dies bezieht sich auf Schlüsseltechnologie #49 bzw auf die darin erwähnten Farb-Begriffe.&lt;/p&gt;
&lt;p&gt;Rot vs blau kommt ursprünglich vom Militär, ich selbst kenn es von den Pfadfindern, damals bei Sommerlagern und/oder Geländespielen. Um ein bisschen Spannung in das Lagerleben zu kriegen (wovon es unter 200 pubertierenden Jünglingen offenbar nicht genug gab), wurden wir in zwei Unterlager aufgeteilt, die in Wettbewerb gingen. Am letzten Abend wurden die Sieger nach Punkten verkündet, hurra. Bei Geländespielen wurde oft eine Burg definiert, gehalten von Blau und attackiert von Rot. Hier die Ursprünge: $LINK&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Xyrill ersetzt hiermit den bereitgestellten Link auf einen Personalagentur-Blog durch &lt;a href=&#34;https://en.wikipedia.org/wiki/Red_team&#34;&gt;den ausführlicheren Wikipedia-Artikel&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Die schwarzen und weißen Hüte kommen aus der Urform des Westernfilms, in der die guten Jungs immer weiße Hüte trugen und die Schurken schwarze. Zuletzt sehr pointiert in der ersten Staffel von &amp;quot;Westworld&amp;quot;, die ich außerordentlich stark empfehlen möchte. (Steht bei euch popkulturell ignoranten Cyberspezls immer im Schatten von &amp;quot;Black Mirror&amp;quot;.) &lt;a href=&#34;https://en.wikipedia.org/wiki/Black_and_white_hat_symbolism_in_film&#34;&gt;https://en.wikipedia.org/wiki/Black_and_white_hat_symbolism_in_film&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;re: Wurm - &lt;a href=&#34;https://en.wikipedia.org/wiki/Computer_worm#History&#34;&gt;Wiki sagt&lt;/a&gt;, die Bezeichnung gehe zurück auf einen SF-Roman&lt;/p&gt;
&lt;p&gt;Schlapphüte (Farbe des Huts zweitrangig) sind geheimdienstlich aktive Personen. Vorkommen: ausschließlich in journalistisch schlampigen Kontexten. Das ist eine dieser Dummphrasen für alle Schreiber, die in Deutsch gelernt haben, dass man sich schöne Synonyme ausdenken soll, damit der Text eleganter wird. Wird er nicht, im Gegenteil fettet er zu, aber das ist wie nem Ochs ins Horn gepetzt. &lt;a href=&#34;https://de.wikipedia.org/wiki/Schlapphut#Sonstiges&#34;&gt;https://de.wikipedia.org/wiki/Schlapphut#Sonstiges&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wo wir grade dabei sind, off-topic mein Lieblings-Hassobjekt: &amp;quot;soziale Medien&amp;quot;. Nichts an diesen Plattformen ist sozial, Medien sind sie auch nicht, sondern deren Inhalt. Wie meistens bei Übersetzungen im Cyberbereich war die erstübersetzende Person des Englischen nicht mächtig und hat uns für immer mit einem False Friend gestraft. Das originale &amp;quot;social media&amp;quot; hat zwar ein ebenfalls dubioses Medium, aber der Begriff &amp;quot;social&amp;quot; bedeutet in diesem Fall &amp;quot;gesellig&amp;quot;: Let&#39;s go socialising! (dt. &amp;quot;Gehn wir einen saufen&amp;quot;).  Entsprechend sind die sozialen Medien in Wirklichkeit Geselligkeitsplattformen. Nörgel nörgel.&lt;/p&gt;
&lt;p&gt;Warum die doofen Trojaner sich ein Hottepferdchen voll waffenstarrender Griechen in die Stadt holten, schildert Stephen Fry in seiner sehr lesenswerten Ilias-Nacherzählung &amp;quot;Troy&amp;quot;: Erstens war das Pferd ein exquisites Stück Handwerkskunst, zweitens war es überzogen mit Gold und Silber und Edelsteinen, drittens stand es unter dem Schutz einer mächtigen Göttin, Stichwort Laokoon, vor allem aber ergänzten diese verschlagenen Griechen das Pferd mit einem False-Flag-Helfershelfer, der alle Zweifel (und Cassandras Verzweiflungsschreie) beiseite wischte. Die Operation wäre einer Leningrader Trollfabrik würdig.&lt;/p&gt;
&lt;p&gt;Stuxnet: &lt;a href=&#34;https://darknetdiaries.com/episode/29/&#34;&gt;https://darknetdiaries.com/episode/29/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Wenn wir schon Podcasts zu Stuxnet verlinken, erhöht Xyrill um &lt;a href=&#34;http://alternativlos.org/5/&#34;&gt;ein Alternativlos&lt;/a&gt; und möchte sehen.&lt;/p&gt;
&lt;h4&gt;Feedback zu STP057&lt;/h4&gt;
&lt;p&gt;Klaus schlägt per Mail einen anderen Namen für Matrix/Mastodon-Server vor:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Xyrill!&lt;/p&gt;
&lt;p&gt;Wie wär&#39;s mit &#39;Meldestelle&#39; oder &#39;Anmeldedienst&#39; oder etwas in der Art.&lt;/p&gt;
&lt;p&gt;Wenn man irgendwo neu hinzieht, muss man sich doch auch registrieren.&lt;/p&gt;
&lt;p&gt;Das ist hier nicht anders, schließlich ist man neu auf den entsprechenden Diensten.&lt;/p&gt;
&lt;p&gt;Gibt ja jede Menge Meldestellen in Deutschland, so auch im Fediverse, nur dass im Fediverse nicht vorgeschrieben wird, welche man zu nehmen hat.&lt;/p&gt;
&lt;p&gt;In der Regel interagiert man ja auch nicht notwendigerweise mit den Leuten, die sich bei der gleichen Meldestelle angemeldet habe.&lt;/p&gt;
&lt;p&gt;Grüße aus Belgien!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Mehr Feedback zu STP057&lt;/h4&gt;
&lt;p&gt;Jan schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Xyrill und ttimeless,&lt;/p&gt;
&lt;p&gt;da ihr in der letzten Folge zu ActivityPub wiederholt nach Feedback gefragt habt, gebe ich doch auch gerne meinen Senf dazu!&lt;/p&gt;
&lt;p&gt;Ich denke das Wort, das Xyrill bei 00:14:53 sucht ist Galionsfigur. Wikipedia nennt im Deutschen Artikel von Figurehead auch &amp;quot;Frühstücksdirektor&amp;quot;.&lt;/p&gt;
&lt;p&gt;Das war eigentlich schon alles was ich schreiben wollte. Ich danke euch vielmals für diesen tollen Podcast und freue mich alle
drei Wochen(!) über eine neue Folge.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Xyrill merkt hierzu an, dass er nicht mehr wirklich GPG verwendet und das Entschlüsseln dieser Mail ein Abenteuer war.&lt;/p&gt;
&lt;h4&gt;Cold Call&lt;/h4&gt;
&lt;p&gt;Xyrill hat eine Mail bekommen:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo Herr Majewsky,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Das sieht schon nicht gut aus.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ich möchte Ihnen gerne einen spannenden Gast für Ihren Podcast vorschlagen&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Haben wir ja grundsätzlich nichts dagegen. Ladet Euch bitte ein, wenn Ihr ein Thema mitbringen möchtet, zu dem Ihr was sagen könnt.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Mit freundlichen Grüßen,
$NAME&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Communications Executive
$PR_AGENTUR&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aber wenn Ihr Eure PR-Agentur vorschickt, dann gehe ich davon aus, dass es sich hier um Native Advertising handelt. Nicht nur mag ich das nicht, sondern vielleicht denkt dann das Finanzamt noch, dass hier Gewinnabsicht bestünde.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback"  />
          <chapter start="00:00:29" title="Feedback von Till"  />
          <chapter start="00:08:34" title="Feedback von Klaus"  />
          <chapter start="00:09:51" title="Feedback von Jan"  />
          <chapter start="00:11:16" title="Cold Call"  />
          <chapter start="00:12:42" title="Bitte noch mehr Feedback"  />
          <chapter start="00:13:56" title="Intro-Intro"  />
          <chapter start="00:15:12" title="Intro"  />
          <chapter start="00:17:59" title="Identifier für Menschen"  />
          <chapter start="00:44:50" title="Fortlaufende Nummern"  />
          <chapter start="00:48:15" title="Universally Unique Identifier"  />
          <chapter start="01:00:36" title="Content-Addressed Storage"  />
          <chapter start="01:08:13" title="Versionsnummern"  />
      </chapters>
      <enclosure length="84259126" url="https://dl.xyrillian.de/noises/stp-058-identifier.mp3" type="audio/mpeg"/>
      <enclosure length="53221158" url="https://dl.xyrillian.de/noises/stp-058-identifier.ogg" type="audio/ogg"/>
      <enclosure length="31714654" url="https://dl.xyrillian.de/noises/stp-058-identifier.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/058-identifier/</guid>
    <pubDate>Thu, 18 Jul 2024 21:40:00 GMT</pubDate>
    <itunes:duration>87:25</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP057: ActivityPub</itunes:title>
    <itunes:episode>57</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP057: ActivityPub</title>
    <link>https://schluesseltechnologie-podcast.de/057-activity-pub</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wieder einmal ein von langer Hand vorbereitetes Thema. Hier kulminiert der Inhalt der beiden vorangegangenen Folgen zu einem Blick in den Maschinenraum von z.B. Mastodon. Außerdem sprechen wir ein weiteres Mal über unseren persönlichen Blick und Umgang mit diesem Thema.</itunes:summary>
    <description>Wieder einmal ein von langer Hand vorbereitetes Thema. Hier kulminiert der Inhalt der beiden vorangegangenen Folgen zu einem Blick in den Maschinenraum von z.B. Mastodon. Außerdem sprechen wir ein weiteres Mal über unseren persönlichen Blick und Umgang mit diesem Thema.</description>
    <content:encoded>&lt;p&gt;Wieder einmal ein von langer Hand vorbereitetes Thema. Hier kulminiert der Inhalt der beiden vorangegangenen Folgen zu einem Blick in den Maschinenraum von z.B. Mastodon. Außerdem sprechen wir ein weiteres Mal über unseren persönlichen Blick und Umgang mit diesem Thema.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Klaus schreibt per Mail:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hallo timeless und Xyrill,&lt;/p&gt;
&lt;p&gt;bin Anfang des Jahres irgendwo auf euren Podcast gestoßen und dort eingestiegen, wo ihr damals gerade wart, Folge 49 Schadcode und dann die weiteren.&lt;/p&gt;
&lt;p&gt;Diese haben mir so gut gefallen, dass ich alle Folgen mit Antennapod abgeholt habe und dabei bin euren Podcast von hinten aufzurollen.&lt;/p&gt;
&lt;p&gt;Großes Kompliment an Euch! Phantastische Serie! Freue mich auf jede neue und für mich neue-alte Folge.&lt;/p&gt;
&lt;p&gt;Bin zwar vom Fach, aber lerne immer was Neues oder andere Blickwinkel kennen. HERRLICH!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Eine kleine Bemerkung von mir zu den Folgen 13 und 14, Textkodierung und Textdarstellung.&lt;/p&gt;
&lt;p&gt;Ich bevorzuge so wie Xyrill auch die Verwendung von kombinierenden diakritischen Zeichen.&lt;/p&gt;
&lt;p&gt;Die meisten der für mich nützlichen davon (u.a. für DE, FR, NL, CN-Pinyin) &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Combining_character&amp;amp;oldid=1226621587&#34;&gt;beginnen an der Hex-Adresse U&#43;0300 ff.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leicht zu merken und praktisch, wenn man ständig mit anderen Tastaturbelegungen zu tun hat.&lt;/p&gt;
&lt;p&gt;Worauf ich aber hinaus möchte, ist folgendes:&lt;/p&gt;
&lt;p&gt;Diese diakritischen Zeichen werden sowohl am Schirm als auch im Druck gleich dargestellt, obwohl ihnen andere Byte-Folgen zugrunde liegen. Hat Xyrill alles beschrieben. Hab ja zugehört. Für Textprogramme, etc. ist das kein Problem, in Datenbanken aber schon.&lt;/p&gt;
&lt;p&gt;Es macht dann leider doch einen gravierenden Unterschied, ob diakritische Zeichen wie en &amp;quot;ä&amp;quot; aus U&#43;00E4 oder aus der Kombination von U&#43;0061 &#43; U&#43;0308 entstehen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tastaturen, die diese Zeichen direkt kodieren, verwenden nur die Version mit 1 Codepunkt.&lt;/li&gt;
&lt;li&gt;Bei Längenbestimmungen von Zeichenketten ergeben sich Unterschiede. Die Zeichenketten sehen gleich aus, sind aber nicht gleich lang, obwohl sie auch gleich lang aussehen!&lt;/li&gt;
&lt;li&gt;Eingabeformulare fangen das nicht immer gut ab. Gleich aussehender Begriff, aber doch nicht derselbe.&lt;/li&gt;
&lt;li&gt;Idem bei Suchanfragen.&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ich empfehle daher immer in Datenbanken Strings so zu standardisieren, dass nur die Version mit 1 Codepunkt verwendet wird, so wie eben Muttersprachler diesen Text auf ihrer sprachspezifischen Tastatur eingeben würden.&lt;/p&gt;
&lt;p&gt;Viele Grüße aus Belgien!&lt;/p&gt;
&lt;p&gt;Klaus&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nun zum eigentlichen Thema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ausgangssituation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Soziale_Medien&amp;amp;oldid=242703413&#34;&gt;Soziale Medien&lt;/a&gt;: &amp;quot;digitale Medien bzw. Plattformen, die es Nutzern ermöglichen, sich im Internet zu vernetzen, [...] untereinander auszutauschen und mediale Inhalte einzeln, in einer definierten Gemeinschaft oder offen in der Gesellschaft zu erstellen, zu diskutieren und weiterzugeben&amp;quot;&lt;/li&gt;
&lt;li&gt;aber: alles zentralisiert (siehe STP056) und nicht interoperabel (siehe STP055)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=ActivityPub&amp;amp;oldid=240310299&#34;&gt;ActivityPub&lt;/a&gt;: der zurzeit wahrscheinlich aussichtsreichste Versuch, soziale Medien dezentral zu modellieren&lt;/li&gt;
&lt;li&gt;erste Anfänge in den frühen 2010ern mit &lt;a href=&#34;https://activitystrea.ms/specs/atom/1.0/&#34;&gt;Activity Streams 1.0&lt;/a&gt;, dann in 2016-2018 Entwicklung von &lt;a href=&#34;https://www.w3.org/TR/activitystreams-core/&#34;&gt;Activity Streams 2.0&lt;/a&gt; und darauf aufbauend &lt;a href=&#34;https://www.w3.org/TR/activitypub/&#34;&gt;ActivityPub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Xyrill sieht zwei wesentliche Design-Einflüsse im ActivityPub-Protokoll&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einfluss: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Representational_State_Transfer&amp;amp;oldid=241086067&#34;&gt;REST (Representational State Transfer)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP kennt man allgemein als Protokoll zum Abruf von Webseiten (siehe STP002)&lt;/li&gt;
&lt;li&gt;neben &lt;code&gt;GET&lt;/code&gt; gibt es in HTTP-Anfragen aber noch viele andere Verben&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST&lt;/code&gt;: Ursprung in HTML für Abschicken ausgefüllter Formulare&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;PATCH&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt; etc.: für Hochladen und Verwalten von Dateien&lt;/li&gt;
&lt;li&gt;REST: Modellierung von APIs unter Einsatz dieser HTTP-Verben und unter Modellierung der Datensätze entlang von URLs (z.B. in einem Webshop &lt;code&gt;PATCH /products/23&lt;/code&gt;, um Produkt Nr. 23 zu bearbeiten; oder in einem Blog &lt;code&gt;GET /articles/hello-world/comments&lt;/code&gt;, um die Kommentare zu dem Post namens &amp;quot;Hello World&amp;quot; aufzurufen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einfluss: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=E-Mail&amp;amp;oldid=243190279&#34;&gt;E-Mail&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;entworfen in einer Zeit, als die meisten Verknüpfungen im Internet nicht durchgehend verfügbar waren&lt;/li&gt;
&lt;li&gt;Mails werden nicht sofort an den Empfänger zugestellt, sondern landen erstmal auf dem Mail-Server des Absenders in einer Outbox (analog dem Postbriefkasten)&lt;/li&gt;
&lt;li&gt;Zustellung an den jeweils nächsten Server in der Kette bei Verfügbarkeit der Leitung (heutzutage unverzüglich und immer direkt an den Zielserver), dann Ablage in der Inbox des Empfängers (analog dem Hausbriefkasten)&lt;/li&gt;
&lt;li&gt;Problem bei ActivityPub: E-Mail ist Unicast (Nachrichten gehen immer an eine bestimmte Adresse bzw. eine bestimmte Liste von Adressen), aber soziale Medien können auch Broadcast sein (z.B. Tweets oder Blogposts sind global sichtbar)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ActivityPub: Inbox und Outbox wie bei E-Mail, aber bidirektional&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Direktnachricht von Alice an Bob: Alice postet in ihre eigene Outbox, Server leitet weiter in Bobs Inbox, Bob ruft aus seiner Inbox ab&lt;/li&gt;
&lt;li&gt;öffentliche Nachricht von Alice: Alice postet in ihre eigene Outbox, Bob ruft aus Alices Outbox ab; bei Followern sendet Alices Server in deren Inbox&lt;/li&gt;
&lt;li&gt;Nachrichten verbleiben bis zu ihrer eventuellen Löschung in der Outbox und bilden einen Feed aller Nachrichten dieser Person&lt;/li&gt;
&lt;li&gt;REST-Einfluss: Inbox erlaubt &lt;code&gt;GET&lt;/code&gt; durch den Inhaber und &lt;code&gt;POST&lt;/code&gt; durch andere Server, Outbox erlaubt &lt;code&gt;POST&lt;/code&gt; durch den Inhaber und &lt;code&gt;GET&lt;/code&gt; durch alle&lt;/li&gt;
&lt;li&gt;vgl. Bilder in &lt;a href=&#34;https://www.w3.org/TR/activitypub/&#34;&gt;Kapitel 1 der ActivityPub-Spezifikation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;wesentliche Implementationen von ActivityPub: Kurznachrichtendienst &lt;a href=&#34;https://joinmastodon.org/&#34;&gt;Mastodon&lt;/a&gt;, Linkaggregator &lt;a href=&#34;https://join-lemmy.org/&#34;&gt;Lemmy&lt;/a&gt;, Bildplattform &lt;a href=&#34;https://pixelfed.org/&#34;&gt;Pixelfed&lt;/a&gt;, Videoplattform &lt;a href=&#34;https://joinpeertube.org/&#34;&gt;PeerTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Anekdote: Xyrill hatte überlegt, die Podcast-Seite mit ActivityPub auszustatten, und ist davon wieder abgekommen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beobachtung bzw. Rückbezug zu STP056: föderierte Netzwerke haben einen starken Drang zur (Re-)Zentralisierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anschauungsbeispiel: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=ActivityPub&amp;amp;oldid=1212815451#Software_using_ActivityPub&#34;&gt;Verteilung der Nutzerzahlen zwischen verschiedenen ActivityPub-Implementationen&lt;/a&gt; -&amp;gt; Mastodon macht 99% der Nutzerbasis aus&lt;/li&gt;
&lt;li&gt;innerhalb von Mastodon initial starke Konzentration bei &lt;code&gt;mastodon.social&lt;/code&gt;; seit einiger Zeit ist beim Anlegen eines Nutzerkontos kein Server mehr voreingestellt&lt;/li&gt;
&lt;li&gt;vgl. auch Matrix: schätzungsweise etwa 50% der Nutzer bei &lt;code&gt;matrix.org&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;absolut subjektiver Eindruck: Mastodon-Entwickler dominieren die Weiterentwicklung von ActivityPub als ganzes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vergleich mit dem AT-Protokoll von BlueSky&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://web.archive.org/web/20200111021337/twitter.com/jack/status/1204766078468911106&#34;&gt;Motivation&lt;/a&gt;: Trennung des Zustellpfades von &amp;quot;dem Algorithmus&amp;quot; (Inhaltsvorschläge und Moderation), um letztere austauschbar zu gestalten&lt;/li&gt;
&lt;li&gt;modulare/dezentrale Moderation (mit den daraus folgenden Konsequenzen, z.B. öffentlich einsehbare Blocklisten, also kein Shadowbanning möglich)
&lt;ul&gt;
&lt;li&gt;vgl. ActivityPub: Faustregel: 1 Moderator:in pro 1000 User&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Konten bei AT sind nicht an bestimmte Server gebunden, sondern können unter Erhalt der gesamten Kommunikationshistorie umgezogen werden (ActivityPub-Adressen sind mehr wie Kontonummern oder E-Mail-Adressen; AT-Identifier sind mehr wie portierbare Telefonnummern)
&lt;ul&gt;
&lt;li&gt;vgl. Debatte über die Begrifflichkeit &amp;quot;Server&amp;quot; vs. &amp;quot;Instanz&amp;quot; vs. &amp;quot;Community&amp;quot; bei Mastodon&lt;/li&gt;
&lt;li&gt;Update: &lt;a href=&#34;https://wedistribute.org/2024/03/activitypub-nomadic-identity/&#34;&gt;ActivityPub arbeitet an &amp;quot;nomadischer Identität&amp;quot;&lt;/a&gt; analog zu den Decentralized Identifiers in AT&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt: &lt;a href=&#34;https://www.bmi.bund.de/SharedDocs/downloads/DE/veroeffentlichungen/2024/ggo-fussabdruck-synopsenpflicht.pdf?__blob=publicationFile&amp;amp;v=1&#34;&gt;Entwurf einer Änderung der Gemeinsamen Geschäftsordnung der Bundesministerien (GGO) zur Umsetzung der Vorhaben &amp;quot;Exekutiver Fußabdruck&amp;quot; und &amp;quot;Synopse&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback von Klaus"  />
          <chapter start="00:04:42" title="Intro und Prolog"  />
          <chapter start="00:06:32" title="Ausgangssituation"  />
          <chapter start="00:23:06" title="Representational State Transfer"  />
          <chapter start="00:34:03" title="E-Mail"  />
          <chapter start="00:40:21" title="ActivityPub"  />
          <chapter start="00:57:18" title="Drang zur (Re-)Zentralisierung"  />
          <chapter start="01:05:27" title="AT-Protokoll von BlueSky"  />
          <chapter start="01:21:29" title="Abendgedanken: Unser Blick auf soziale Medien"  />
      </chapters>
      <enclosure length="89462107" url="https://dl.xyrillian.de/noises/stp-057-activity-pub.mp3" type="audio/mpeg"/>
      <enclosure length="56517462" url="https://dl.xyrillian.de/noises/stp-057-activity-pub.ogg" type="audio/ogg"/>
      <enclosure length="33711272" url="https://dl.xyrillian.de/noises/stp-057-activity-pub.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/057-activity-pub/</guid>
    <pubDate>Thu, 27 Jun 2024 17:25:00 GMT</pubDate>
    <itunes:duration>92:50</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP056: Zentralisierung</itunes:title>
    <itunes:episode>56</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP056: Zentralisierung</title>
    <link>https://schluesseltechnologie-podcast.de/056-zentralisierung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode werden die Kerntatsachen zum Sachverhalt der Zentralisierung in geradezu essayistischer Form herausgearbeitet und dargestellt, um der Hörerin eine Urteilsbildung zu ermöglichen. Hierbei wird ein eigener Standpunkt zur Fragestellung gefunden und argumentativ abgeleitet.</itunes:summary>
    <description>In dieser Episode werden die Kerntatsachen zum Sachverhalt der Zentralisierung in geradezu essayistischer Form herausgearbeitet und dargestellt, um der Hörerin eine Urteilsbildung zu ermöglichen. Hierbei wird ein eigener Standpunkt zur Fragestellung gefunden und argumentativ abgeleitet.</description>
    <content:encoded>&lt;p&gt;In dieser Episode werden die Kerntatsachen zum Sachverhalt der Zentralisierung in geradezu essayistischer Form herausgearbeitet und dargestellt, um der Hörerin eine Urteilsbildung zu ermöglichen. Hierbei wird ein eigener Standpunkt zur Fragestellung gefunden und argumentativ abgeleitet.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Request_for_Comments&amp;amp;oldid=237305423&#34;&gt;RFC (Request for Comments)&lt;/a&gt;: eine Publikationsreihe für zumeist technische Spezifikationen, aber auch Essays betreffend die Fortentwicklung der Internet-Infrastruktur&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bereits besprochen in STP035 anhand der Tradition der Aprilscherz-RFCs&lt;/li&gt;
&lt;li&gt;im Übrigen auch eines der anschaulichsten Beispiele für die ursprüngliche Intention von Hypertext: RFCs sind blanke Textdateien, die für die Darstellung als Webdokument automatisiert aufbereitet werden&lt;/li&gt;
&lt;li&gt;heute etwas ernster, aber hoffentlich ähnlich zugänglich anhand &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9518&#34;&gt;RFC 9518: &amp;quot;Centralization, Decentralization, and Internet Standards&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;wir folgen in unserer Besprechung des Themas der Struktur der Textgrundlage; deutschsprachige Zitate sind jeweils aus dem Englischen übersetzt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kernbegriff: &amp;quot;Zentralisierung [im Sinne dieses Dokumentes] ist eine Sachlage, bei der eine einzelne Entität oder eine kleine Gruppe eine Funktion des Internets überwachen, abfangen, kontrollieren oder aus ihrem Betrieb oder ihrer Benutzung Pacht ziehen kann.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Die ersten drei Varianten (Überwachung, Abfangen, Kontrolle) sind die intuitiv klaren Formen von Zentralisierung (z.B. das Telefon-Festnetz ist zentralisiert, da es von einem einzigen Anbieter, der Telekom, betrieben und kontrolliert wird).&lt;/li&gt;
&lt;li&gt;Der Teil mit &amp;quot;Pacht&amp;quot; ist im Original &amp;quot;rent extraction&amp;quot;, was im Englischen ein durchaus geläufiger Begriff ist, während im Deutschen &lt;a href=&#34;https://de.wiktionary.org/w/index.php?title=Rentier&amp;amp;oldid=9846923#Substantiv,_m&#34;&gt;der &amp;quot;Rentier&amp;quot;&lt;/a&gt; wahrscheinlich eher für einen Rentner gehalten wird.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wiktionary.org/w/index.php?title=rent&amp;amp;oldid=77955238&#34;&gt;en.wiktionary.org zu &amp;quot;rent&amp;quot; im Sinne &amp;quot;rent extraction&amp;quot;&lt;/a&gt;: &amp;quot;A profit from possession of a valuable right, as a restricted license to engage in a trade or business.&amp;quot; – &amp;quot;Profit aus dem Besitz eines wertvollen Rechtes, als limitierte Lizenz zum Betrieb eines Handwerks oder Geschäftes&amp;quot;&lt;/li&gt;
&lt;li&gt;klassische Beispiele außerhalb der IT: Taximedaillon, Notarstellen, natürliche Monopole wie Netzbetreiber von Strom-/Wasser-/Gasleitungen&lt;/li&gt;
&lt;li&gt;Beispiel im Internet: App-Store-Betreiber (wer Software für iPhones vertreiben will, muss 30% Pacht an Apple abführen), &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Internet_Assigned_Numbers_Authority&amp;amp;oldid=235416916&#34;&gt;IANA (Internet Assigned Numbers Authority)&lt;/a&gt; als Betreiber der DNS-Rootserver (zu DNS siehe STP018)&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://news.ycombinator.com/item?id=33314970&#34;&gt;5 Gründe, warum der Markt in der Praxis nicht so funktioniert wie in der Theorie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mögliche negative Konsequenzen von Zentralisierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Machtkonzentration (der RFC zitiert hier die Federalist Papers von 1788: &amp;quot;So wie [John Madison in denselben] Good Governance [(verantwortungsbewusste Regierungsführung)] der US-Staaten beschreibt, so erfordert Good Governance des Internets, dass Kontrolle über seine einzelnen Funktionen nicht ohne angemessene Gewaltenteilung an einer zentralen Stelle konsolidiert wird.&amp;quot;)&lt;/li&gt;
&lt;li&gt;Begrenzung von Innovation: neue Entwicklungen brauchen Freiraum
&lt;ul&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://freakshow.fm/fs274-was-hat-apple-jemals-nicht-fuer-uns-getan&#34;&gt;Freak Show #274 zum App-Store-Monopol von Apple&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Begrenzung von Wettbewerb: Wettbewerb mehrerer kompatibler Anbieter oder mehrerer Protokolle schafft die vorgenannte Gewaltenteilung&lt;/li&gt;
&lt;li&gt;Verringerte Verfügbarkeit: Wenn alles durch einen zentralen Anbieter geht, führt ein Ausfall dort zu Folgeausfällen woanders.
&lt;ul&gt;
&lt;li&gt;Greifbares Beispiel: Was passiert, wenn ein Stadtviertel über eine zentrale Glasfaserleitung angebunden ist und diese Glasfaser versehentlich aufgebaggert wird?&lt;/li&gt;
&lt;li&gt;Der RFC zitiert einige Beispiele.&lt;/li&gt;
&lt;li&gt;Xyrill hat eine Anekdote zu AWS und Minecraft.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Monokultur&lt;/li&gt;
&lt;li&gt;Selbstverstärkung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mögliche &lt;em&gt;positive&lt;/em&gt; Konsequenzen von Zentralisierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verständlichkeit, Zweckdienlichkeit
&lt;ul&gt;
&lt;li&gt;zentrale Steuerung von DNS verleiht Domain-Namen eine hilfreiche Universalität&lt;/li&gt;
&lt;li&gt;z.B. bei IP-Adressen oder Telefonnummern ist derartig kontrollierte Universalität technisch notwendig&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Effizienz durch Skaleneffekte: siehe Besprechung von CDNs in STP024 (Cloud-Computing)&lt;/li&gt;
&lt;li&gt;Konzentration von Kontrolle kann Governance einfacher machen (was positiv sein kann, sofern man Governance an sich als grundsätzlich wünschenswert ansieht)
&lt;ul&gt;
&lt;li&gt;Beispiel: Bankenregulierung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Xyrill fügt noch hinzu: Zentralisierung kann die Weiterentwicklung von Protokollen vereinfachen, sofern Ossifikation entgegengewirkt werden muss
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ossifikation&amp;amp;oldid=239981566&#34;&gt;Ossifikation&lt;/a&gt;: im Wortsinne &amp;quot;Verknöcherung&amp;quot;, im übertragenen Sinne die faktische Unänderbarkeit von Protokollen, wenn eine Vielzahl von verschiedenen unabhängigen Akteuren die Änderung gleichzeitig vollziehen muss&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ansätze zur aktiven Dezentralisierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Föderation: verschiedene Anbieter betreiben voneinander unabhängige Instanzen, die miteinander in Kontakt treten, um einen insgesamten Dienst zu bilden (klassisches Beispiel: E-Mail)
&lt;ul&gt;
&lt;li&gt;alleine unzureichend, da nicht-technische Faktoren Zentralisierungsdruck erzeugen&lt;/li&gt;
&lt;li&gt;Beispiel E-Mail: wer einen E-Mail-Server betreiben will, muss faktisch nach der Pfeife von Microsoft/Google/United Internet/etc. tanzen, da Outlook und G-Mail den Markt dominieren&lt;/li&gt;
&lt;li&gt;Beispiel XMPP: nachdem einige wenige Betreiber in der Föderation groß geworden sind, haben sie sich vom föderierten Netz getrennt und ihre Nutzer effektiv eingesperrt (z.B. WhatsApp war früher XMPP-kompatibel)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;verteilter Konsens: Zusammenschluss aus vielen Teilnehmenden, bei denen die Ausübung von Macht innerhalb des Netzes zufällig und temporär zugewiesen wird (siehe Besprechung von Blockchain in STP048)
&lt;ul&gt;
&lt;li&gt;&amp;quot;Während diese Maßnahmen darin wirkungsvoll sein können, den Betrieb eines Dienstes zu dezentralisieren, können andere Aspekte seiner Vorhaltung weiterhin zentralisiert sein: zum Beispiel die Kontrolle über das Design, die gemeinsam genutzte Implementation, sowie die Dokumentation von Netzwerkprotokollen.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;aktives Regierungshandeln (&amp;quot;Operational Governance&amp;quot;): Ausübung der operativen Kontrolle durch eine neutrale Treuhänderstelle, die die Interessen der verschiedenen Diensteanbietern und Nutzenden gegeneinander abwägt
&lt;ul&gt;
&lt;li&gt;Einrichtung mitunter auch im Nachhinein möglich, sofern das technische, ökonomische oder politische Umfeld die Diensteanbieter zur Kooperation zwingt&lt;/li&gt;
&lt;li&gt;klassische Beispiele: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Internet_Corporation_for_Assigned_Names_and_Numbers&amp;amp;oldid=238717925&#34;&gt;ICANN&lt;/a&gt; für IP-Adressen, IANA für DNS, CA/Browser-Forum für Wurzel-Zertifikatsautoritäten (siehe STP048)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was können Autorinnen von Internet-Standards tun, um Zentralisierung vorzubeugen und Dezentralisierung zu fördern?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Legitimität erzeugen
&lt;ul&gt;
&lt;li&gt;durch Öffentlichkeitsarbeit gegenüber der Bevölkerung oder gesellschaftlichen und staatlichen Institutionen Vertrauen schaffen, um dann die öffentliche Diskussion in die gewünschte Richtung zu beeinflussen&lt;/li&gt;
&lt;li&gt;Problem: mehr Geld kauft mehr PR&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Diskussion fokussieren
&lt;ul&gt;
&lt;li&gt;nicht Zentralisierung als solches verteufeln (hat wie gesehen ja auch Vorteile), sondern explizit auf die Nachteile konzentrieren&lt;/li&gt;
&lt;li&gt;konkreter Vorschlag: RFCs sollten neben den Standardabschnitten &amp;quot;Sicherheitsrelevante Überlegungen&amp;quot; und &amp;quot;IANA-relevante Überlegungen&amp;quot; immer auch &amp;quot;Zentralisierungsrelevante Überlegungen&amp;quot; explizieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Abzielen auf proprietäre Dienste
&lt;ul&gt;
&lt;li&gt;zentralisierte Angebote und Protokolle sollten aktiv mit offenen Standards konfrontiert werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wechselkosten verringern
&lt;ul&gt;
&lt;li&gt;z.B. neue offene Standards so gestalten, dass sie mit bestehenden proprietären Diensten interoperabel sein können&lt;/li&gt;
&lt;li&gt;selbst Open Source ist nicht immer die Lösung, wenn die Weiterentwicklung der Open-Source-Software die Expertise eines bestimmten Anbieters erfordert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Delegation von Kontrolle bändigen
&lt;ul&gt;
&lt;li&gt;Wenn ein Protokoll der Nutzerin ermöglicht, Aufgaben an einen Dritten zu delegieren, kann das eine Sollbruchstelle zur Machtkonzentration sein.&lt;/li&gt;
&lt;li&gt;Beispiel (im RFC erwähnt): HTTP-Proxies (ähnliches war auch bei HTTP auf der Internetanbieter-Ebene zu beobachten)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;starke Isolation durchsetzen
&lt;ul&gt;
&lt;li&gt;Beispiel: viele Protokolle hängen von der Verfügbarkeit und Zuverlässigkeit eines darunterliegenden Netzwerkes ab -&amp;gt; Verschlüsselung schützt gegen Machtkonzentration beim Betreiber dieser Basisschicht (schützt in diesem Beispiel nur vor Zentralisierung im Sinne von Überwachung, weniger im Sinne von Kontrolle)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;sorgfältige Abwägung von Erweiterbarkeit
&lt;ul&gt;
&lt;li&gt;hilfreich, um Wettbewerb und Innovation zwischen verschiedenen Anbietern zu fördern&lt;/li&gt;
&lt;li&gt;aber auch Risiko des &amp;quot;Vendor Lock-In&amp;quot; (Erweiterung durch anbieterspezifische Funktionen, die Nutzerinnen an den Anbieter binden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;wiederverwenden, was funktioniert
&lt;ul&gt;
&lt;li&gt;z.B. hat DNS trotz aller Probleme alles in allem ein relativ dezentrales Design und eine relativ gute Governance – tendenziell lieber darauf aufbauen, als eine eigene dezentrale Datenbank zu frickeln (oder &lt;code&gt;s/DNS/Ethereum/&lt;/code&gt;, wenn man lieber Blockchain nehmen möchte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Xyrills Abendgedanken: (De-)Zentralisierung ist, so wie fast alle Fragen aus dem Feld der Netzpolitik, nicht eine rein technische Frage und erfordert neben technischen auch soziale und gesetzliche Lösungen&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:20" title="Der Diskursgegenstand und die Erörterung"  />
          <chapter start="00:05:52" title="Nochmal zu RFCs"  />
          <chapter start="00:07:23" title="Kernbegriff: Zentralisierung"  />
          <chapter start="00:10:32" title="Exkurs zu Marktliberalisierung"  />
          <chapter start="00:13:14" title="Zurück zum Thema"  />
          <chapter start="00:23:47" title="Negative Konsequenzen"  />
          <chapter start="00:37:31" title="Positive Konsequenzen"  />
          <chapter start="00:54:17" title="Ansätze zur aktiven Dezentralisierung"  />
          <chapter start="01:04:24" title="Was RFC-Autoren tun können"  />
      </chapters>
      <enclosure length="83812795" url="https://dl.xyrillian.de/noises/stp-056-zentralisierung.mp3" type="audio/mpeg"/>
      <enclosure length="53440735" url="https://dl.xyrillian.de/noises/stp-056-zentralisierung.ogg" type="audio/ogg"/>
      <enclosure length="31948344" url="https://dl.xyrillian.de/noises/stp-056-zentralisierung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/056-zentralisierung/</guid>
    <pubDate>Thu, 06 Jun 2024 19:20:00 GMT</pubDate>
    <itunes:duration>86:57</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP055: Interoperabilität</itunes:title>
    <itunes:episode>55</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP055: Interoperabilität</title>
    <link>https://schluesseltechnologie-podcast.de/055-interoperabilitaet</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>&amp;quot;Together we stand, divided we fall.&amp;quot; Deshalb geht es heute darum, wie Prozesse zur Zusmmenarbeit gebracht werden, oder auch, wie das gelegentlich schief geht. Zum Schluss haben wir wieder eine leicht schwermütige Unterhaltung darüber, warum die Dinge sind, wie sie sind. In diesem Sinne: &amp;quot;Let&#39;s work together...&amp;quot;</itunes:summary>
    <description>&amp;quot;Together we stand, divided we fall.&amp;quot; Deshalb geht es heute darum, wie Prozesse zur Zusmmenarbeit gebracht werden, oder auch, wie das gelegentlich schief geht. Zum Schluss haben wir wieder eine leicht schwermütige Unterhaltung darüber, warum die Dinge sind, wie sie sind. In diesem Sinne: &amp;quot;Let&#39;s work together...&amp;quot;</description>
    <content:encoded>&lt;p&gt;&amp;quot;Together we stand, divided we fall.&amp;quot; Deshalb geht es heute darum, wie Prozesse zur Zusmmenarbeit gebracht werden, oder auch, wie das gelegentlich schief geht. Zum Schluss haben wir wieder eine leicht schwermütige Unterhaltung darüber, warum die Dinge sind, wie sie sind. In diesem Sinne: &amp;quot;Let&#39;s work together...&amp;quot;&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;historischer Einstieg: initial nur einzelne monolithische Programme&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computer startet, sobald das Programm eingegeben ist, zusammen mit dem Programm&lt;/li&gt;
&lt;li&gt;mehrere Programme möglich, aber diese alle komplett voneinander unabhängig; bzw. jeweils nur abhängig von der Maschine selbst&lt;/li&gt;
&lt;li&gt;dann wurden Programme so komplex, dass sie nicht mehr von einer Person verfasst werden konnten&lt;/li&gt;
&lt;li&gt;1975: akademische Unterscheidung zwischen &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Programming_in_the_large_and_programming_in_the_small&amp;amp;oldid=1184277192&#34;&gt;&amp;quot;Programming in the large&amp;quot; und &amp;quot;Programming in the small&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Unterteilung der Software eines Computers in kleinere Einheiten erfordert definierte &lt;strong&gt;Schnittstellen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Analogie: Unternehmen mit mehreren Mitarbeiterinnen erfordern meist definierte Abläufe&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schnittstellen auf der großen Ebene (zwischen Prozessen): &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kommunikationsprotokoll&amp;amp;oldid=225866784&#34;&gt;Kommunikationsprotokolle&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dateiformat&amp;amp;oldid=240585393&#34;&gt;Datenformate&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kommunikationsprotokolle: regeln Sende-/Empfangsreihenfolge, Inhalte der einzelnen Datenpakete und das durch sie ausgelöste Verhalten, Fehlerbehandlung etc.&lt;/li&gt;
&lt;li&gt;Datenformate: definieren die Struktur eines Datenpaketes; kann in einer Datei gespeichert sein; kann Teil eines Kommunikationsprotokolls sein; kann Baustein in einem größeren Datenformat sein (z.B. Videodatei besteht aus einem Audiodatenformat, einem Bildstromdatenformat und einem umschließenden Containerformat)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schnittstellen auf der kleinen Ebene (innerhalb eines Prozesses): &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=API&amp;amp;oldid=1196841027&#34;&gt;API (Application Programming Interface)&lt;/a&gt; und &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Application_binary_interface&amp;amp;oldid=1192371815&#34;&gt;ABI (Application Binary Interface)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. eine Komponente, die einen Sortieralgorithmus bereitstellt, hat eine Schnittstelle, die eine Liste von Zahlen entgegennimmt und eine sortierte Liste von Zahlen zurückgibt&lt;/li&gt;
&lt;li&gt;dies ungefähr die geringste Ebene von Komplexität, Skala nach oben offen&lt;/li&gt;
&lt;li&gt;API: auf der Ebene von Programmcode&lt;/li&gt;
&lt;li&gt;ABI: auf der Ebene von Maschinencode&lt;/li&gt;
&lt;li&gt;Beispiel API: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=OpenGL&amp;amp;oldid=1198092106&#34;&gt;OpenGL&lt;/a&gt; vs. &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=DirectX&amp;amp;oldid=1197353025&#34;&gt;DirectX&lt;/a&gt; vs. &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Vulkan&amp;amp;oldid=1199515232&#34;&gt;Vulkan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xkcd.com/927/&#34;&gt;XKCD 927&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interoperabilität mit der Brechstange: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Reverse_Engineering&amp;amp;oldid=241382265&#34;&gt;Reverse Engineering&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe auch STP040 (§69e UrhG: Dekompilierung und Reverse Engineering sind unter bestimmten Umständen auch ohne Zustimmung des Urheberrechteinhabers erlaubt)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Interoperabilität mit etwas sanfterem Hebel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Emulator&amp;amp;oldid=240982806&#34;&gt;Emulation&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe auch STP023&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;siehe auch: Berufsbezeichnung &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Systemintegrator&amp;amp;oldid=240254359&#34;&gt;Systemintegrator&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unterdisziplin des Ausbildungsberufes &amp;quot;Fachinformatiker&amp;quot;, in Abgrenzung zum Anwendungsentwickler&lt;/li&gt;
&lt;li&gt;Tätigkeitsschwerpunkt: Anpassung bestehender Systeme zum Zwecke der Interoperabilität&lt;/li&gt;
&lt;li&gt;vor allem im Umfeld von Firmensoftware verbreitet (Warenwirtschaftssystem des Herstellers A muss mit dem Buchhaltungssystem des Herstellers B verbunden werden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:27" title="Historischer Einstieg"  />
          <chapter start="00:04:59" title="Exkurs: Länge einer Codezeile"  />
          <chapter start="00:17:33" title="Schnittstellen im Großen"  />
          <chapter start="00:23:47" title="Schnittstellen im Kleinen"  />
          <chapter start="00:33:50" title="APIs am Beispiel von Grafikschnittstellen"  />
          <chapter start="00:46:32" title="Die Brechstange: Reverse Engineering"  />
          <chapter start="00:53:33" title="Der sanftere Hebel: Emulation"  />
          <chapter start="00:55:37" title="Systemintegration"  />
      </chapters>
      <enclosure length="64285184" url="https://dl.xyrillian.de/noises/stp-055-interoperabilitaet.mp3" type="audio/mpeg"/>
      <enclosure length="40696542" url="https://dl.xyrillian.de/noises/stp-055-interoperabilitaet.ogg" type="audio/ogg"/>
      <enclosure length="24420306" url="https://dl.xyrillian.de/noises/stp-055-interoperabilitaet.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/055-interoperabilitaet/</guid>
    <pubDate>Thu, 16 May 2024 15:00:00 GMT</pubDate>
    <itunes:duration>66:37</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP054: TLS als Ganzes</itunes:title>
    <itunes:episode>54</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP054: TLS als Ganzes</title>
    <link>https://schluesseltechnologie-podcast.de/054-tls-als-ganzes</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach unserem kleinen Ausflug in fremdes Fach kehren wir heute zurück zu TLS. Dabei soll es diesmal mehr um einen Blick aufs Ganze gehen – und um die Identität der Entität.</itunes:summary>
    <description>Nach unserem kleinen Ausflug in fremdes Fach kehren wir heute zurück zu TLS. Dabei soll es diesmal mehr um einen Blick aufs Ganze gehen – und um die Identität der Entität.</description>
    <content:encoded>&lt;p&gt;Nach unserem kleinen Ausflug in fremdes Fach kehren wir heute zurück zu TLS. Dabei soll es diesmal mehr um einen Blick aufs Ganze gehen – und um die Identität der Entität.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Feedback per Mail:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bei ca. 8 Minuten sagst du, das ein 64-Bit-Prozessor eine Adressbreite von 64 Bit hat, 32 Bit etc. analog. Das stimmt so nicht. Die Zahl gibt die Datenbreite an, nicht die Adressbreite (und damit auch die Registerbreite). Ein aktueller 64 Bit amd64 Prozessor kann max. 48 Bit adressieren (siehe /proc/cpuinfo, bzw. die Länge deiner Adressen in der maps Ausgabe). Der 286er konnte 20 bit Adressbreite, obwohl es ein 16-Bit-Prozessor war – Ich weiss nicht, ob du die Rumfummelei mit den Segmentregistern noch machen musstest. ;) Bei den 32-Bit-Prozessoren hat es übereingestimmt.&lt;/p&gt;
&lt;p&gt;Ca 14 Minuten: Das Programm muss nicht komplett im Speicher liegen, sondern nur Teil, der abgearbeitet wird. Heute eventuell unüblich, aber früher war es durchaus so, das Programmteile während der Ausführung nachgeladen wurden und dann andere, gerade nicht benutzte Programmteile ersetzt haben.&lt;/p&gt;
&lt;p&gt;Bei den 8-Bit-Spielekonsolen teilweise mit per Software umschaltbaren Speicherseiten des Game-ROMs, als z.B. das von einem 64k-ROM immer nur 16k-Blöcke für den Prozessor sichtbar waren (und die gleichen Adressen benutzt haben) und per IO-Befehl die Speicherseiten vom Programm gewechselt werden konnten, da ansonsten der Adressraum nicht ausgereicht hätte.&lt;/p&gt;
&lt;p&gt;Stack: Soweit ich weiss, ist der Stack nicht wirklich hart beschränkt, sondern nur über das eingestellte ulimit. Bis zu diesem (änderbarem) Limit wird der dynamisch zur Laufzeit verwaltet und ggf. vergrößert.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Xyrill nimmt die Ausführungen wohlwollend zur Kenntnis, sieht sich jedoch nicht gezwungen, seine Position zu revidieren. Nun zum eigentlichen Thema:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Wo kriegt man Zertifikate her?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rückblick auf STP048: Zertifikate sind signiert von übergeordneten Zertifikaten (&lt;strong&gt;Zertifikatsautoritäten&lt;/strong&gt;, CA), wodurch sich eine Kette bis hoch zu einem &lt;strong&gt;Wurzelzertifikat&lt;/strong&gt; (Root-CA) aufbaut&lt;/li&gt;
&lt;li&gt;Clientzertifikate werden durch eine Stelle ausgegeben, der der Server vertraut (z.B. in Unternehmensnetzwerken eine CA unter der Obhut der Unternehmens-IT)&lt;/li&gt;
&lt;li&gt;für Serverzertifikate enthält der Browser bzw. das Betriebssystem eine Liste von vertrauenswürdigen Root-CAs -&amp;gt; Wie kann man eine Root-CA werden?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=CA/Browser_Forum&amp;amp;oldid=235926243&#34;&gt;CA/Browser Forum&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verein von Browser-Herstellern und Root-CA-Betreibern zur Selbstregulierung der Anforderungen an Browser und Root-CAs&lt;/li&gt;
&lt;li&gt;Root-CAs, die gegen die entsprechenden Sicherheits- und Transparenzregeln verstoßen, wird von den Browsern das Vertrauen entzogen, was deren Geschäftsgrundlage entzieht (siehe z.B. &lt;a href=&#34;https://wiki.mozilla.org/CA/Symantec_Issues&#34;&gt;diese tolle lange Liste von Vorfällen mit Symantec-CAs, die Mozilla dokumentiert hat&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;eine sehr bekannte Root-CA: &lt;a href=&#34;https://www.abetterinternet.org/&#34;&gt;ISRG (Internet Security Research Group)&lt;/a&gt; unter dem Markennamen &lt;a href=&#34;https://letsencrypt.org/&#34;&gt;Let&#39;s Encrypt&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Situation vor 2013: TLS-Zertifikate kosten Geld und werden im Prinzip nur von Firmenwebseiten gekauft (Teufelskreis: teuer -&amp;gt; kleine Kundschaft -&amp;gt; keine Skaleneffekte -&amp;gt; teuer)&lt;/li&gt;
&lt;li&gt;2013: Snowden-Enthüllungen (&lt;a href=&#34;https://c3d2.de/news/pentaradio24-20230725.html&#34;&gt;Pentaradio berichtete neulich über das 10-jährige Jubiläum&lt;/a&gt;) -&amp;gt; Erkenntnis: wir brauchen mehr Verschlüsselung im Internet&lt;/li&gt;
&lt;li&gt;2015: ISRG bietet mit Let&#39;s Encrypt automatisierbare und kostenlose TLS-Zertifikate für Jedermann&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was tun nach einem IT-Angriff, wenn ein Server-Zertifikat kompromittiert wurde?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zertifikate können der CA als gestohlen gemeldet werden&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Online_Certificate_Status_Protocol&amp;amp;oldid=235873169&#34;&gt;Online Certificate Status Protocol (OCSP)&lt;/a&gt;: Protokoll für die Abfrage von Rückzugsanzeigen (dem digitalen Äquivalent von Diebstahlsmeldungen)&lt;/li&gt;
&lt;li&gt;Probleme: wenn das die Clients machen, überlastet es die kleinen CAs und die großen CAs könnten damit wunderbar #Datenspuren sammeln&lt;/li&gt;
&lt;li&gt;OCSP-Stapling (&amp;quot;OCSP-Tackern&amp;quot;): der Server lässt sich alle paar Minuten per OCSP bescheinigen, dass das eigene Zertifikat noch nicht zurückgezogen wurde, und tackert das an alle TLS-Handshakes ran&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Angriffe auf TLS&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grundsätzlich alle Angriffe auf einzelne Primitiven sowie die Interaktion bestimmter Primitiven miteinander im Rahmen von TLS -&amp;gt; das geht uns zu sehr ins Detail, ist aber einer der Hauptgründe für die fortwährende Weiterentwicklung des Protokolls&lt;/li&gt;
&lt;li&gt;Implementierungsfehler (z.B. Heartbleed, siehe STP037)&lt;/li&gt;
&lt;li&gt;Downgrade-Angriffe: Kryptoagilität ausnutzen, um die anderen Teilnehmer zu einer weniger starken Verschlüsselung zu überreden; z.B. auch durch Machine-in-the-Middle (MITM), weswegen die Verschlüsselung schon der allerersten Handshake-Schritte so wichtig ist&lt;/li&gt;
&lt;li&gt;Export-Downgrade: Spezialform des Downgrade-Angriffs, der die anderen Teilnehmer auf eine extrem schwache Exportverschlüsselung herunterzieht (bewusst schwache Verschlüsselungen aus der Zeit vor dem &lt;a href=&#34;https://de.wikipedia.org/wiki/Wassenaar-Abkommen&#34;&gt;Wassenaar-Abkommen&lt;/a&gt;, als starke Verschlüsselung noch als exportlimitierte Militärtechnik eingestuft war)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback zu STP045"  />
          <chapter start="00:05:16" title="Intro und Einstieg"  />
          <chapter start="00:06:54" title="Rückblick"  />
          <chapter start="00:19:04" title="CA/Browser Forum"  />
          <chapter start="00:32:47" title="Kompromittierte Zertifikate"  />
          <chapter start="00:37:30" title="ISRG (Internet Security Research Group)"  />
          <chapter start="00:44:17" title="Angriffe auf TLS"  />
      </chapters>
      <enclosure length="52864912" url="https://dl.xyrillian.de/noises/stp-054-tls-als-ganzes.mp3" type="audio/mpeg"/>
      <enclosure length="33109650" url="https://dl.xyrillian.de/noises/stp-054-tls-als-ganzes.ogg" type="audio/ogg"/>
      <enclosure length="20106742" url="https://dl.xyrillian.de/noises/stp-054-tls-als-ganzes.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/054-tls-als-ganzes/</guid>
    <pubDate>Thu, 25 Apr 2024 19:00:00 GMT</pubDate>
    <itunes:duration>54:43</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP053: Lieber was mit Holz</itunes:title>
    <itunes:episode>53</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP053: Lieber was mit Holz</title>
    <link>https://schluesseltechnologie-podcast.de/053-lieber-was-mit-holz</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Diesmal hat Xyrill kein Bock mehr auf den Computermist und ttimeless erzählt stattdessen etwas über die ehrliche Arbeit des Handwerkers. Oder zumindest einiger Handwerker.</itunes:summary>
    <description>Diesmal hat Xyrill kein Bock mehr auf den Computermist und ttimeless erzählt stattdessen etwas über die ehrliche Arbeit des Handwerkers. Oder zumindest einiger Handwerker.</description>
    <content:encoded>&lt;p&gt;Diesmal hat Xyrill kein Bock mehr auf den Computermist und ttimeless erzählt stattdessen etwas über die ehrliche Arbeit des Handwerkers. Oder zumindest einiger Handwerker.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Gewerksabgrenzung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Drechsler&amp;amp;oldid=239535524&#34;&gt;Drechsler&lt;/a&gt;: Holzgewerk, Kunsthandwerk: Stellt Drehteile aus Holz, Kunststoffen, Bein, Elfenbein, Horn, … her&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bildschnitzer&amp;amp;oldid=240062684&#34;&gt;Holzbildhauer&lt;/a&gt;: stellt Skulpturen aus Holz sowie Verzierungen an hölzernen Bauelementen oder Einrichtungsgegenständen her&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Zimmerer&amp;amp;oldid=239694556&#34;&gt;Zimmerer&lt;/a&gt;: Holzgewerk, Bauberuf (Bauhauptgewerbe); stellt Bauwerksteile her, z.B. Dachkonstruktionen, Rohbauten (Fachwerk, Holzrahmenbau, Blockbauweise, …), Balkone, Innenausbau (Böden, Treppen, Holzdecken, Wandverkleidungen), …&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Stellmacherei&amp;amp;oldid=238703281&#34;&gt;Stellmacher/Wagner&lt;/a&gt;: Holzgewerk; stellt Räder, Wagen, landwirtschaftliche Geräte, … her&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Tischler&amp;amp;oldid=237362464&#34;&gt;Tischler/Schreiner&lt;/a&gt;: &amp;quot;… Handwerk, welches sich auf die schneidende, fügende oder veredelnde Verarbeitung von Holz und Holzwerkstoffen spezialisiert hat.&amp;quot; Stellt Bauelemente (Fenster, Türen, …), Möbel, Innenausbauten (Böden, Treppen, Holzdecken, Wandverkleidungen wie &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Lambris&amp;amp;oldid=230573352&#34;&gt;Lambris&lt;/a&gt;, …), … her.&lt;/li&gt;
&lt;li&gt;Die Abspaltung der Tischler vom Zimmererberuf wurde ab dem 14. Jahrhundert durch Bildung von Zünften vorangetrieben.&lt;/li&gt;
&lt;li&gt;Siehe hierzu auch &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Liste_von_Handwerksberufen&amp;amp;oldid=239736921#Holzhandwerk&#34;&gt;Liste der Handwerksberufe: Holzhandwerke&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Materialien&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verschiedene einheimische und importierte Hölzer als:
&lt;ul&gt;
&lt;li&gt;Massivholz (hauptsächlich in Form von Brettern oder Bohlen)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Furnier&amp;amp;oldid=239291097&#34;&gt;Furnier&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Holzwerkstoffe (haupsächlich Plattenwerkstoffe) z.B.
&lt;ul&gt;
&lt;li&gt;Platten auf Massivholzbasis
&lt;ul&gt;
&lt;li&gt;Brettsperrholz (z.B. Dreischichtplatte)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Brettschichtholz&#34;&gt;Brettschichtholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Stabsperrholz&#34;&gt;Stabsperrholz (Tischlerplatte)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Furnierholzwerkstoffe
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Furniersperrholz&#34;&gt;Furniersperrholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Furnierstreifenholz&#34;&gt;Furnierstreifenholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Furnierschichtholz&#34;&gt;Furnierschichtholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Biegesperrholz&#34;&gt;Biegesperrholz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Spanplatte&#34;&gt;Spanplatten&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Flachpressplatten&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Strangpressplatte&#34;&gt;Strangpressplatten&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Grobspanplatte&#34;&gt;OSB (Oriented Strand Board)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Holzfaserplatten
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Mitteldichte_Holzfaserplatte&#34;&gt;MDF (Mitteldichte Faserplatte)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Harte_Faserplatte&#34;&gt;&amp;quot;Hartfaserplatte&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Holzfaserd%C3%A4mmplatte&#34;&gt;Holzfaserdämmplatte&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kunststoffe
&lt;ul&gt;
&lt;li&gt;Plexiglas (oder allgemeiner durchsichtige oder trübe Kunststoffplatten)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Corian_(DuPont)&#34;&gt;Corian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Epoxidharz&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Metall, z.B. in Form von Beschlägen&lt;/li&gt;
&lt;li&gt;Mineralische Werkstoffe&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fachrichtungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Möbeltischler: Herstellung und Montage von mobilen und Einbaumöbeln&lt;/li&gt;
&lt;li&gt;Bautischler: Herstellung und Montage von Bauelementen&lt;/li&gt;
&lt;li&gt;Treppenbau: Herstellung und Belag von Treppen sowie Geländern und Brüstungen&lt;/li&gt;
&lt;li&gt;Innenausbau: Erstellung von bewohnbaren Raumoberflächen auf Basis des Rohbaus&lt;/li&gt;
&lt;li&gt;Ladenbau: Erstellung und Einrichtung von Verkaufspräsentationsflächen inkl. z.B. Kassenbereich&lt;/li&gt;
&lt;li&gt;Montagebetriebe: Montage vorwiegend von Bauelementen auf Baustellen ohne umfangreiche Fertigungsstätten&lt;/li&gt;
&lt;li&gt;Bodenleger: Verlegen und Aufarbeiten von Parkett-, Dielen-, Laminat- und anderen Böden&lt;/li&gt;
&lt;li&gt;(Messebau)&lt;/li&gt;
&lt;li&gt;Billardbau&lt;/li&gt;
&lt;li&gt;Zaunbau&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rausschmeißer: In eigener Sache&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Postkarten eingetroffen aus Berlin, Rheinland-Pfalz, dem Kanton Zürich und vom Kongress – Bitte weiter so. :)&lt;/li&gt;
&lt;li&gt;Wir nehmen auch gute Bewertungen bei Apple Podcasts etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:11" title="Gewerksabgrenzung"  />
          <chapter start="00:02:39" title="Drechsler"  />
          <chapter start="00:04:55" title="Holzbildhauer"  />
          <chapter start="00:08:42" title="Zimmerer"  />
          <chapter start="00:12:58" title="Stellmacher"  />
          <chapter start="00:16:31" title="Tischler/Schreiner"  />
          <chapter start="00:29:56" title="Materialien"  />
          <chapter start="00:35:02" title="Platten auf Massivholzbasis"  />
          <chapter start="00:42:20" title="Furnierholzwerkstoffe"  />
          <chapter start="00:48:31" title="Spanplatten"  />
          <chapter start="00:58:22" title="Holzfaserplatten"  />
          <chapter start="01:03:59" title="Kuststoffe"  />
          <chapter start="01:07:55" title="Der Rest"  />
          <chapter start="01:09:46" title="Warum Holz?"  />
          <chapter start="01:17:41" title="Fachrichtungen"  />
          <chapter start="01:27:02" title="Postkarten"  />
      </chapters>
      <enclosure length="86213582" url="https://dl.xyrillian.de/noises/stp-053-lieber-was-mit-holz.mp3" type="audio/mpeg"/>
      <enclosure length="52303229" url="https://dl.xyrillian.de/noises/stp-053-lieber-was-mit-holz.ogg" type="audio/ogg"/>
      <enclosure length="31117370" url="https://dl.xyrillian.de/noises/stp-053-lieber-was-mit-holz.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/053-lieber-was-mit-holz/</guid>
    <pubDate>Thu, 04 Apr 2024 20:05:00 GMT</pubDate>
    <itunes:duration>89:27</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP052: TLS im Detail</itunes:title>
    <itunes:episode>52</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP052: TLS im Detail</title>
    <link>https://schluesseltechnologie-podcast.de/052-tls-im-detail</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wir steigern den Schwierigkeitsgrad. In dieser Episode wird der Stoff der vorherigen Folgen abgefragt. Dafür können wir dann aber auch die Folge in einer Stunde abfeiern – oder zumindest den ersten Teil.</itunes:summary>
    <description>Wir steigern den Schwierigkeitsgrad. In dieser Episode wird der Stoff der vorherigen Folgen abgefragt. Dafür können wir dann aber auch die Folge in einer Stunde abfeiern – oder zumindest den ersten Teil.</description>
    <content:encoded>&lt;p&gt;Wir steigern den Schwierigkeitsgrad. In dieser Episode wird der Stoff der vorherigen Folgen abgefragt. Dafür können wir dann aber auch die Folge in einer Stunde abfeiern – oder zumindest den ersten Teil.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP048: Transportverschlüsselung vs. Ende-zu-Ende-Verschlüsselung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ende-zu-Ende-Verschlüsselung: zwischen den Endpunkten einer Kommunikation (z.B. im Messenger zwischen Alice und Bob)&lt;/li&gt;
&lt;li&gt;Transport-Verschlüsselung: entlang eines einzelnen Schrittes des Kommunikationsweges (z.B. im Messenger einmal zwischen Alice und dem Server, und dann einmal zwischen dem Server und Bob)&lt;/li&gt;
&lt;li&gt;heute reden wir über Transport-Verschlüsselung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Transport_Layer_Security&amp;amp;oldid=237178060&#34;&gt;Transport Layer Security (Sicherheit auf der Transportschicht)&lt;/a&gt;: &amp;quot;ein Verschlüsselungsprotokoll zur sicheren Datenübertragung im Internet&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht selbst ein vollständiges Protokoll, sondern ein Fundament, dass andere Protokolle als Nutzlast trägt (vgl. STP005: Netzwerkschichten-Modell)&lt;/li&gt;
&lt;li&gt;Geschichte von TLS: 1994 erste stabile Version als Teil des Netscape-Browsers (unter dem Namen SSL); in den 90ern in schneller Abfolge neue Versionen, seitdem nach Bedarf in unregelmäßigen Abständen; aktuell TLS 1.3 (und 1.2 ist auch hinreichend okay)&lt;/li&gt;
&lt;li&gt;wir beschreiben jetzt die Struktur des TLS-Protokolls; hierfür sind als notwendiges Vorwissen STP043 (Kryptografische Primitiven) und STP048 (Vertrauen) erforderlich&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TLS Record: zweite und einfachere Phase der Verbindung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;einfach eine symmetrische Verschlüsselung, um die Nutzdaten einzupacken&lt;/li&gt;
&lt;li&gt;offensichtliches Problem: Wo kommt der symmetrische Schlüssel her?&lt;/li&gt;
&lt;li&gt;das klingt nach einem Job für asymmetrische Verschlüsselung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TLS Handshake: initiale Aushandlungsphase zu Beginn der Verbindung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;erste Aufgabe: Aushandlung eines symmetrischen Schlüssels -&amp;gt; Diffie-Hellman-Schlüsselaustausch (siehe &lt;a href=&#34;https://media.ccc.de/v/ds21-122-schlsseltechnologie-live-das-diffie-hellman-protokoll&#34;&gt;STP Live&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;zweite Aufgabe: Überprüfung der Identität der Gegenstelle -&amp;gt; digitale Zertifikate (siehe STP048)&lt;/li&gt;
&lt;li&gt;beide Aufgaben müssen miteinander verbunden werden -&amp;gt; drei (teils überlappende) Phasen&lt;/li&gt;
&lt;li&gt;Phase 1: Berechnung eines initialen symmetrischen Schlüssels mit Diffie-Hellman, damit Verschlüsselung von Phase 2 und 3&lt;/li&gt;
&lt;li&gt;Phase 2: Validierung des Server-Zertifikates durch den Client und ggf. des Client-Zertifikates durch den Server&lt;/li&gt;
&lt;li&gt;Phase 3: Client würfelt den finalen symmetrischen Schlüssel und überträgt diesen verschlüsselt mit dem öffentlichen Schlüssel des Server-Zertifikates&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum zwei Schlüssel?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;die Art und Weise der Übertragung des finalen Schlüssels stellt sicher, dass der Server den privaten Schlüssel kontrolliert&lt;/li&gt;
&lt;li&gt;der Handshake-Schlüssel aus Phase 1 stellt sicher, dass auch bei nachträglicher Kompromittierung des privaten Schlüssels des Servers eine mitgeschnittene Verbindung nicht geknackt werden kann (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Perfect_Forward_Secrecy&amp;amp;oldid=236329042&#34;&gt;Perfect Forward Secrecy/Perfekte Vorwärts-Geheimhaltung&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;eine wesentliche Eigenschaft von TLS: Kryptoagilität&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TLS ist erstmal nur eine Grundstruktur&lt;/li&gt;
&lt;li&gt;konkrete kryptografische Primitiven sind bis zu einem gewissen Grad gegeneinander austauschbar&lt;/li&gt;
&lt;li&gt;im Laufe der Zeit Hinzufügung neuentwickelter Primitiven und Abschaffung alter Primitiven&lt;/li&gt;
&lt;li&gt;Handshake enthält eine Verhandlung, in der Client und Server sich über die zu verwendenen Primitiven handelseinig werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Im Gespräch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ARP(Address Resolution Protocol) erklärt im &lt;a href=&#34;https://requestforcomments.de/archives/126?t=3%3A19%3A10&#34;&gt;RFC-Podcast&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro-Intro, Intro und Prolog"  />
          <chapter start="00:02:17" title="Recap STP048"  />
          <chapter start="00:08:09" title="TLS"  />
          <chapter start="00:22:29" title="Erforderliches Vorwissen"  />
          <chapter start="00:24:20" title="TLS Record"  />
          <chapter start="00:24:56" title="TLS Handshake"  />
          <chapter start="00:42:09" title="Warum zwei Schlüssel?"  />
          <chapter start="00:46:47" title="Kryptoagilität"  />
      </chapters>
      <enclosure length="54782639" url="https://dl.xyrillian.de/noises/stp-052-tls-im-detail.mp3" type="audio/mpeg"/>
      <enclosure length="34449162" url="https://dl.xyrillian.de/noises/stp-052-tls-im-detail.ogg" type="audio/ogg"/>
      <enclosure length="20916694" url="https://dl.xyrillian.de/noises/stp-052-tls-im-detail.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/052-tls-im-detail/</guid>
    <pubDate>Thu, 14 Mar 2024 20:15:00 GMT</pubDate>
    <itunes:duration>56:43</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP051: Ablauf eines IT-Angriffs</itunes:title>
    <itunes:episode>51</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP051: Ablauf eines IT-Angriffs</title>
    <link>https://schluesseltechnologie-podcast.de/051-ablauf-eines-it-angriffs</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Im zweiten Teil der ursprünglichen Episode #49 spricht Xyrill nun über den tatsächlichen Ablauf einer Attacke. Außerdem geht es um Motivationen und Gegenmaßnahmen.</itunes:summary>
    <description>Im zweiten Teil der ursprünglichen Episode #49 spricht Xyrill nun über den tatsächlichen Ablauf einer Attacke. Außerdem geht es um Motivationen und Gegenmaßnahmen.</description>
    <content:encoded>&lt;p&gt;Im zweiten Teil der ursprünglichen Episode #49 spricht Xyrill nun über den tatsächlichen Ablauf einer Attacke. Außerdem geht es um Motivationen und Gegenmaßnahmen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;[Unser Arbeitsfeld] heißt &amp;quot;Computer-Sicherheit&amp;quot;, nicht &amp;quot;Computer-Optimismus&amp;quot;. Wir machen uns der schlimmstmöglichen Resultate bewusst, denn auch wenn wir es nicht tun, unsere Gegner werden es auf jeden Fall tun.&lt;/p&gt;
&lt;p&gt;– &lt;a href=&#34;https://threadreaderapp.com/thread/1433451378391883782.html&#34;&gt;Matthew Green über IT-Sicherheit&lt;/a&gt; (übersetzt aus dem Englischen)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Topologie eines IT-Angriffs auf ein verteiltes System (z.B. das interne Netz eines Unternehmens oder einer Organisation)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Erstangriff entweder durch reinen Exploit eines von außen erreichbaren Systemes (z.B. der Firmenwebseite) oder durch Einschleusung eines Exploits mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Social_Engineering_(Sicherheit)&amp;amp;oldid=233291013&#34;&gt;Social Engineering&lt;/a&gt; (Manipulation von Menschen mit Zugriff auf das System mit dem Ziel, einen Exploit einzuschleusen oder Informationen wie Passwörter auszuschleusen; z.B. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Phishing&amp;amp;oldid=237076459&#34;&gt;Phishing&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;basierend auf erstem Zugriff in das System dann &lt;strong&gt;Privilege Escalation&lt;/strong&gt; (Verwendung weiterer Exploits, um schrittweise immer weitergehenden Zugriff zu erlangen) und &lt;strong&gt;Lateral Movement&lt;/strong&gt; (Ausnutzung des Zugriffs auf ein Teilsystem, um andere verwundbare Systeme im Netzwerk aufzuspüren und anzugreifen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Welche Ziele kann ein IT-Angriff letztendlich verfolgen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datendiebstahl: z.B. Spionage, Wirtschaftsspionage, Erpressung mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kompromat&amp;amp;oldid=237791818&#34;&gt;Kompromat&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Doxing&amp;amp;oldid=237524584&#34;&gt;Doxing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Propaganda: z.B. Verbreitung von Desinformation und Fake-News durch gekaperte Accounts von Personen des öffentlichen Lebens&lt;/li&gt;
&lt;li&gt;Datendiebstahl: z.B. Datenbanken von Nutzerdaten (Passwörter, Mail-Adressen, Kontodaten etc.) können für weitere Angriffe und Betrugsversuche vermarktet werden&lt;/li&gt;
&lt;li&gt;Finanzdiebstahl: z.B. Ausnutzung illegitimen Zugriffs auf Bankkonten, Kreditkarten oder auch Konten in virtuellen Währungen&lt;/li&gt;
&lt;li&gt;Sabotage: z.B. Ransomware (Infektion durch Virus oder Trojaner, dann evtl. Lateral Movement, dann Verschlüsselung aller erreichbaren Festplatten und Backups, dann Erpressung von Lösegeld)&lt;/li&gt;
&lt;li&gt;Sabotage: z.B. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Stuxnet&amp;amp;oldid=237385358&#34;&gt;Stuxnet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was kann man auf der Verteidigerseite machen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keine Sicherheitslücken haben :)&lt;/li&gt;
&lt;li&gt;Verwendung von sichereren Programmiermethodiken (z.B. moderne Programmiersprachen, die Speicherverwaltungsfehler systematisch verhindern)&lt;/li&gt;
&lt;li&gt;Einsatz von Sandboxing (siehe STP023) und anderen Techniken, um die Privilege Escalation zu erschweren (&amp;quot;Principle of Least Privilege&amp;quot;: jeder Prozess sollte mit den geringsten möglichen Rechten laufen, und jedes Benutzerkonto sollte nur genau die Berechtigungen haben, die für die Erfüllung der jeweiligen legitimen Aufgaben notwendig sind)&lt;/li&gt;
&lt;li&gt;aktive Verteidigungsmaßnahmen wie Virenscanner oder Intrusion-Detection-Software sind umstritten&lt;/li&gt;
&lt;li&gt;allgemeiner: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Threat_model&amp;amp;oldid=1177652493&#34;&gt;Threat Modeling&lt;/a&gt;; das systematische Auflisten von möglichen Angriffen und Schwachstellen, um dann entsprechende Gegenmaßnahmen zu koordinieren&lt;/li&gt;
&lt;li&gt;nach dem Angriff: Attribuierung (die Zuschreibung eines Angriffs zu einem Angreifer) ist zwar oft gewünscht (man hat halt gerne einen Schuldigen, gerade in der politischen Arena), ist aber meist extrem schwer (es ist deutlich einfacher, als Angreifer falsche Fährten zu legen, als sie als Forensiker als solche zu erkennen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;weiterführende Quellen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zu Social Engineering: &lt;a href=&#34;https://media.ccc.de/v/36c3-11175-hirne_hacken&#34;&gt;Hirne hacken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;zu digitalen Waffen und Hackback: &lt;a href=&#34;https://media.ccc.de/v/2019-218-wie-hackback-mit-der-gesellschaft-spielt&#34;&gt;Wie Hackback mit der Gesellschaft spielt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="ttimeless und sein Headset"  />
          <chapter start="00:00:44" title="Intro und Einleitung"  />
          <chapter start="00:04:44" title="Topologie eines IT-Angriffs"  />
          <chapter start="00:27:12" title="Privilege Escalation"  />
          <chapter start="00:30:22" title="Lateral Movement"  />
          <chapter start="00:34:56" title="Ziele von IT-Angriffen"  />
          <chapter start="00:56:36" title="Die Verteidigerseite"  />
      </chapters>
      <enclosure length="73810984" url="https://dl.xyrillian.de/noises/stp-051-ablauf-eines-it-angriffs.mp3" type="audio/mpeg"/>
      <enclosure length="46705461" url="https://dl.xyrillian.de/noises/stp-051-ablauf-eines-it-angriffs.ogg" type="audio/ogg"/>
      <enclosure length="28258162" url="https://dl.xyrillian.de/noises/stp-051-ablauf-eines-it-angriffs.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/051-ablauf-eines-it-angriffs/</guid>
    <pubDate>Thu, 22 Feb 2024 00:10:00 GMT</pubDate>
    <itunes:duration>76:32</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP050: Jargon File</itunes:title>
    <itunes:episode>50</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP050: Jargon File</title>
    <link>https://schluesseltechnologie-podcast.de/050-jargon-file</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Nichtjubiläumsfolge kümmern wir uns wieder einmal darum, unseren Hörer:innen Nerdkultur näher zu bringen. Dazu ist selbstverständlich nichts besser geeignet als der Ursprung vieler lieb gewonnener Worte und Redewendungen.</itunes:summary>
    <description>In dieser Nichtjubiläumsfolge kümmern wir uns wieder einmal darum, unseren Hörer:innen Nerdkultur näher zu bringen. Dazu ist selbstverständlich nichts besser geeignet als der Ursprung vieler lieb gewonnener Worte und Redewendungen.</description>
    <content:encoded>&lt;p&gt;In dieser Nichtjubiläumsfolge kümmern wir uns wieder einmal darum, unseren Hörer:innen Nerdkultur näher zu bringen. Dazu ist selbstverständlich nichts besser geeignet als der Ursprung vieler lieb gewonnener Worte und Redewendungen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;http://www.catb.org/~esr/jargon/html/index.html&#34;&gt;Jargon File&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;a comprehensive compendium of hacker slang illuminating many aspects of hackish tradition, folklore, and humor&amp;quot; (&amp;quot;ein umfassendes Kompendium des Hackerslangs, das viele Aspekte der Hackertradition, der Folklore und des Humors beleuchtet&amp;quot;)&lt;/li&gt;
&lt;li&gt;zuletzt aktualisiert 2003, repräsentiert sprachliche Eigenheiten der 70er bis 90er, als die Hacker noch relativ isoliert vom Mainstream-Zeitgeist waren&lt;/li&gt;
&lt;li&gt;wir haben durch das &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/go01.html&#34;&gt;Glossar&lt;/a&gt; geschaut und präsentieren unsere Picks von A bis M&lt;/li&gt;
&lt;li&gt;Vorsicht: das Jargon File ist absolut ein Produkt seiner Zeit und einer männlich-weiß dominierten Subkultur mit entsprechend teils unsensiblen Begriffsbildungen und Nutzungsbeispielen (&lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/beta.html&#34;&gt;zum Beispiel hier in Unterdefinition 2&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Namensgebend: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/H/hack.html&#34;&gt;hack&lt;/a&gt; und &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/H/hacker.html&#34;&gt;hacker&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design und Methodik: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/buzzword-compliant.html&#34;&gt;buzzword-compliant&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/cargo-cult-programming.html&#34;&gt;cargo cult programming&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/connector-conspiracy.html&#34;&gt;connector conspiracy&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/crufty.html&#34;&gt;crufty&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/cruftsmanship.html&#34;&gt;cruftsmanship&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/D/deep-magic.html&#34;&gt;deep magic&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/E/elegant.html&#34;&gt;elegant&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/K/KISS-Principle.html&#34;&gt;KISS principle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fehler: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/A/airplane-rule.html&#34;&gt;airplane rule&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/bug-for-bug-compatible.html&#34;&gt;bug-for-bug compatible&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/bug-of-the-month-club.html&#34;&gt;bug-of-the-month club&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/F/Finagles-Law.html&#34;&gt;Finagle&#39;s Law&lt;/a&gt; vs. &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/Murphys-Law.html&#34;&gt;Murphy&#39;s Law&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/G/glitch.html&#34;&gt;glitch&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/magic-smoke.html&#34;&gt;magic smoke&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/S/smoke-test.html&#34;&gt;smoke test&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vergänglichkeit: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/bit-rot.html&#34;&gt;bit rot&lt;/a&gt; und &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/L/link-rot.html&#34;&gt;link rot&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/cosmic-rays.html&#34;&gt;cosmic rays&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Netzwerk: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/C/Chernobyl-packet.html&#34;&gt;Chernobyl packet&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/H/honey-pot.html&#34;&gt;honey pot&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/L/LAN-party.html&#34;&gt;LAN party&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/massage.html&#34;&gt;massage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Hardware: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/B/bitty-box.html&#34;&gt;bitty box&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/G/gorilla-arm.html&#34;&gt;gorilla arm&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/Moores-Law.html&#34;&gt;Moore&#39;s law&lt;/a&gt; und passend dazu &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Andy_and_Bill%27s_law&amp;amp;oldid=1172771378&#34;&gt;Andy&#39;s and Bill&#39;s law&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Grafische Oberflächen: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/marching-ants.html&#34;&gt;marching ants&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/menuitis.html&#34;&gt;menuitis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kryptografie: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/A/Alice-and-Bob.html&#34;&gt;Alice and Bob&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dokumentation: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/G/Greens-Theorem.html&#34;&gt;Green&#39;s theorem&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/L/language-lawyer.html&#34;&gt;language lawyer&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/E/exercise--left-as-an.html&#34;&gt;left as an exercise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kommunikation: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/F/fnord.html&#34;&gt;fnord&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/H/Hanlons-Razor.html&#34;&gt;Hanlon&#39;s Razor&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/H/highly.html&#34;&gt;highly&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/J/Jeopardy-style-quoting.html&#34;&gt;Jeopardy-style quoting&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/meta.html&#34;&gt;meta&lt;/a&gt; und &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/metasyntactic-variable.html&#34;&gt;metasyntactic variable&lt;/a&gt;, &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/M/meatspace.html&#34;&gt;meatspace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;als Rausschmeißer ein &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/K/koan.html&#34;&gt;Koan&lt;/a&gt;: &lt;a href=&#34;http://www.catb.org/~esr/jargon/html/koans.html&#34;&gt;&amp;quot;Tom Knight and the Lisp Machine&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:53" title="Erklärung und Herkunft"  />
          <chapter start="00:04:18" title="Abschweif zu KI"  />
          <chapter start="00:13:41" title="Weiter mit Herkunft"  />
          <chapter start="00:19:05" title="&#34;hacker&#34; und &#34;hack&#34;"  />
          <chapter start="00:24:54" title="Herangehensweise und Kategorien"  />
          <chapter start="00:27:20" title="Kategorie &#34;Design und Methodik&#34;"  />
          <chapter start="00:27:31" title="&#34;buzzword-compliant&#34;"  />
          <chapter start="00:30:54" title="&#34;cargo cult programming&#34;"  />
          <chapter start="00:33:41" title="&#34;connector conspiracy&#34;"  />
          <chapter start="00:38:37" title="&#34;crufty&#34;"  />
          <chapter start="00:39:33" title="&#34;cruftsmanship&#34;"  />
          <chapter start="00:40:17" title="&#34;deep magic&#34;"  />
          <chapter start="00:41:32" title="&#34;elegant&#34;"  />
          <chapter start="00:43:27" title="&#34;KISS principle&#34;"  />
          <chapter start="00:44:53" title="Kategorie &#34;Fehler&#34;"  />
          <chapter start="00:44:58" title="&#34;airplane rule&#34;"  />
          <chapter start="00:46:21" title="&#34;bug-for-bug compatible&#34;"  />
          <chapter start="00:48:48" title="&#34;bug-of-the-month club&#34;"  />
          <chapter start="00:51:08" title="&#34;Finagle\&#39;s Law&#34;"  />
          <chapter start="00:51:48" title="&#34;Murphy\&#39;s Law&#34;"  />
          <chapter start="00:53:37" title="&#34;glitch&#34;"  />
          <chapter start="00:57:54" title="&#34;magic smoke&#34;"  />
          <chapter start="00:59:43" title="&#34;smoke test&#34;"  />
          <chapter start="01:00:42" title="Kategorie &#34;Vergänglichkeit&#34;"  />
          <chapter start="01:00:51" title="&#34;bit rot&#34;"  />
          <chapter start="01:03:15" title="&#34;link rot&#34;"  />
          <chapter start="01:04:10" title="&#34;cosmic rays&#34;"  />
          <chapter start="01:07:46" title="Kategorie &#34;Netzwerk&#34;"  />
          <chapter start="01:07:50" title="&#34;Chernobyl packet&#34;"  />
          <chapter start="01:09:00" title="&#34;honey pot&#34;"  />
          <chapter start="01:10:26" title="&#34;LAN party&#34;"  />
          <chapter start="01:17:38" title="&#34;massage&#34;"  />
          <chapter start="01:18:29" title="Kategorie &#34;Hardware&#34;"  />
          <chapter start="01:18:30" title="&#34;bitty box&#34;"  />
          <chapter start="01:21:19" title="&#34;gorilla arm&#34;"  />
          <chapter start="01:24:37" title="&#34;Moore\&#39;s law&#34;"  />
          <chapter start="01:25:58" title="&#34;Andy\&#39;s and Bill\&#39;s law&#34;"  />
          <chapter start="01:27:50" title="Kategorie &#34;Grafische Oberflächen&#34;"  />
          <chapter start="01:27:54" title="&#34;marching ants&#34;"  />
          <chapter start="01:28:45" title="&#34;menuitis&#34;"  />
          <chapter start="01:31:12" title="Kategorie &#34;Kryptografie&#34;"  />
          <chapter start="01:31:16" title="&#34;Alice and Bob&#34;"  />
          <chapter start="01:33:05" title="Kategorie &#34;Dokumentation&#34;"  />
          <chapter start="01:33:06" title="&#34;Green\&#39;s theorem&#34;"  />
          <chapter start="01:33:34" title="&#34;language lawyer&#34;"  />
          <chapter start="01:35:11" title="&#34;left as an exercise&#34;"  />
          <chapter start="01:37:11" title="Kategorie &#34;Kommunikation&#34;"  />
          <chapter start="01:37:28" title="&#34;fnord&#34;"  />
          <chapter start="01:40:56" title="&#34;Hanlon\&#39;s Razor&#34;"  />
          <chapter start="01:46:23" title="&#34;highly&#34;"  />
          <chapter start="01:48:02" title="&#34;Jeopardy-style quoting&#34;"  />
          <chapter start="01:49:24" title="&#34;meta&#34;"  />
          <chapter start="01:50:11" title="&#34;metasyntactic variable&#34;"  />
          <chapter start="01:52:38" title="&#34;meatspace&#34;"  />
          <chapter start="01:53:47" title="&#34;geek code&#34; kommt ein ander Mal drann"  />
          <chapter start="01:54:26" title="&#34;Koan&#34;"  />
          <chapter start="01:55:22" title="&#34;Tom Knight and the Lisp Machine&#34;"  />
      </chapters>
      <enclosure length="114826703" url="https://dl.xyrillian.de/noises/stp-050-jargon-file.mp3" type="audio/mpeg"/>
      <enclosure length="74458165" url="https://dl.xyrillian.de/noises/stp-050-jargon-file.ogg" type="audio/ogg"/>
      <enclosure length="43062172" url="https://dl.xyrillian.de/noises/stp-050-jargon-file.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/050-jargon-file/</guid>
    <pubDate>Thu, 01 Feb 2024 22:10:00 GMT</pubDate>
    <itunes:duration>119:15</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP049: Schadcode</itunes:title>
    <itunes:episode>49</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP049: Schadcode</title>
    <link>https://schluesseltechnologie-podcast.de/049-schadcode</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser ersten Folge zum Thema Cyber-Cyber halten wir uns so lange mit der Einführung von Grundbegriffen auf, dass am Ende die Entscheidung fällt, den Rest auf Episode 51 zu verschieben. Betrachtet euch hiermit als angeteasert!</itunes:summary>
    <description>In dieser ersten Folge zum Thema Cyber-Cyber halten wir uns so lange mit der Einführung von Grundbegriffen auf, dass am Ende die Entscheidung fällt, den Rest auf Episode 51 zu verschieben. Betrachtet euch hiermit als angeteasert!</description>
    <content:encoded>&lt;p&gt;In dieser ersten Folge zum Thema Cyber-Cyber halten wir uns so lange mit der Einführung von Grundbegriffen auf, dass am Ende die Entscheidung fällt, den Rest auf Episode 51 zu verschieben. Betrachtet euch hiermit als angeteasert!&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Die drei wichtigsten Dinge, die Experten über Software-Sicherheit wissen:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Software ist unglaublich unzuverlässig und unsicher.&lt;/li&gt;
&lt;li&gt;Nein, wirklich, ihr könnt es euch nicht vorstellen.&lt;/li&gt;
&lt;li&gt;Es ist sogar noch schlimmer als das.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Matt_Blaze&amp;amp;oldid=1177352443&#34;&gt;Matt Blaze&lt;/a&gt; &lt;a href=&#34;https://twitter.com/mattblaze/status/1192503673664016385&#34;&gt;auf Twitter&lt;/a&gt; (Achtung: zweiter Link geht zu einer Domain von Elon Musk)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vorbemerkung: für offensive und defensive Computernutzung wird regelmäßig der Wortteil &amp;quot;Cyber-&amp;quot; verwendet (z.B. &amp;quot;Cyberangriff&amp;quot;, &amp;quot;Cybersicherheit&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in IT-Kreisen, insb. im CCC-Umfeld, gilt &amp;quot;Cyber-&amp;quot; als &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Schibboleth&amp;amp;oldid=237089412&#34;&gt;Schibboleth&lt;/a&gt; für Leute, die von IT keine tiefgehende Ahnung haben (siehe z.B. &lt;a href=&#34;https://www.youtube.com/watch?v=WY6KkRsS26M&#34;&gt;&amp;quot;Unsere Cyber-Cyber-Regierung&amp;quot;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;wir bleiben deswegen sicherheitshalber bei &amp;quot;IT-Angriff&amp;quot; :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundlage: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Sicherheitsl%C3%BCcke&amp;amp;oldid=229656948&#34;&gt;Sicherheitslücken&lt;/a&gt; (&amp;quot;Fehler in einer Software oder einer Hardware, durch [die] ein Programm mit Schadwirkung oder ein Angreifer in ein Computersystem eindringen kann&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe STP037: heutige berühmte Softwarefehler sind meist Sicherheitslücken (z.B. Heartbleed, wie in STP037 besprochen)&lt;/li&gt;
&lt;li&gt;siehe STP039: handwerkliche Fehler in der Authentifizierung oder Autorisierung ergeben meist besonders gut ausnutzbare Sicherheitslücken (siehe gerade neulich &lt;a href=&#34;https://msrc.microsoft.com/blog/2023/09/results-of-major-technical-investigations-for-storm-0558-key-acquisition/&#34;&gt;Azure AD&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;siehe STP045/STP047: Grundlage vieler Sicherheitslücken sind Speicherverwaltungsfehler (z.B. Pufferüberlauf, wie in STP047 besprochen)&lt;/li&gt;
&lt;li&gt;Sicherheitslücken werden aktiv gesucht, entweder von &amp;quot;Whitehats&amp;quot; (Sicherheitsforschern oder den Red-Teams der Softwarehersteller selbst) oder von &amp;quot;Blackhats&amp;quot; (die die Lücken für tatsächliche Angriffe ausnutzen wollen oder an Angreifer verkaufen wollen)&lt;/li&gt;
&lt;li&gt;bekannte Sicherheitslücken werden in der &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Common_Vulnerabilities_and_Exposures&amp;amp;oldid=227659039&#34;&gt;CVE-Datenbank&lt;/a&gt; (&amp;quot;Common Vulnerabilities and Exposures&amp;quot;, dt. &amp;quot;Bekannte Schwachstellen und Anfälligkeiten&amp;quot;) geführt (z.B. Heartbleed ist CVE-2014-0160)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zweiter Schritt: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Exploit&amp;amp;oldid=229895345&#34;&gt;Exploit&lt;/a&gt; (eine systematische Methode, um eine Sicherheitslücke auszunutzen)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;auch für Whitehats sind Exploits wichtig, um die Kritikalität einer Sicherheitslücke zu demonstrieren&lt;/li&gt;
&lt;li&gt;für Blackhats sind Exploits die handelbare Form von Sicherheitslücken&lt;/li&gt;
&lt;li&gt;Preise für Exploits orientieren sich an Angebot und Nachfrage, z.B. für RCE-Exploits in iOS oder Android &lt;a href=&#34;https://techcrunch.com/2023/10/05/zero-days-for-hacking-whatsapp-are-now-worth-millions-of-dollars/?guccounter=1&#34;&gt;bis zu 20 Mio. $&lt;/a&gt; (RCE = Remote Code Execution)&lt;/li&gt;
&lt;li&gt;Angriffe auf der Grundlage von Exploits haben meist eines von zwei Zielen: Ausführung von Schadcode oder Ausschleusung von Informationen (z.B. Passwörter)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schadcode: der große Nachteil von Computern ist auch ihr Vorteil; sie tun genau all das, was man ihnen sagt :)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Computervirus&amp;amp;oldid=237356220&#34;&gt;Computervirus&lt;/a&gt;: ein sich selbst verbreitendes Programm, dass sich in einen Computer einnistet (biologisches Analog: &lt;a href=&#34;https://www.youtube.com/watch?v=NdaYRSW76Mg&#34;&gt;Pilze, die die Gehirne von Insekten infizieren&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Computerwurm&amp;amp;oldid=236407314&#34;&gt;Computerwurm&lt;/a&gt;: wie ein Virus, aber nistet sich nicht ein, sondern verbreitet sich nur weiter (z.B. über E-Mails oder USB-Sticks)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Trojanisches_Pferd_(Computerprogramm)&amp;amp;oldid=233931219&#34;&gt;Trojaner&lt;/a&gt;: ein Virus, der sich nicht mittels Exploit einer Sicherheitslücke verbreitet, sondern sich als nützliches Programm tarnt
&lt;ul&gt;
&lt;li&gt;in der netzpolitischen Debatte vor allem relevant in Form von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Staatstrojaner&amp;amp;oldid=236566592&#34;&gt;Staatstrojanern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vorschau: zweiter Teil in STP051 (Ablauf eines IT-Angriffs)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt: &lt;a href=&#34;https://media.ccc.de/v/2019-218-wie-hackback-mit-der-gesellschaft-spielt&#34;&gt;Vortrag von HonkHase zu Hackback und Digitalen Waffen&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Cybereinführung"  />
          <chapter start="00:04:20" title="Sicherheitslücken"  />
          <chapter start="00:12:34" title="Abschweif: Speziell präparierte Geräte"  />
          <chapter start="00:14:39" title="Weiße Hüte"  />
          <chapter start="00:21:26" title="Einfluss der Sprachwahl"  />
          <chapter start="00:26:54" title="Schwarze Hüte und Schlapphüte"  />
          <chapter start="00:30:06" title="Exploits"  />
          <chapter start="00:37:54" title="Schadcode"  />
          <chapter start="00:38:31" title="Computerviren"  />
          <chapter start="00:40:30" title="Computerwurm"  />
          <chapter start="00:44:00" title="Trojaner"  />
          <chapter start="00:47:56" title="Der Rest wird verschoben"  />
          <chapter start="00:49:49" title="Outro"  />
      </chapters>
      <enclosure length="50302469" url="https://dl.xyrillian.de/noises/stp-049-schadcode.mp3" type="audio/mpeg"/>
      <enclosure length="32303049" url="https://dl.xyrillian.de/noises/stp-049-schadcode.ogg" type="audio/ogg"/>
      <enclosure length="19326172" url="https://dl.xyrillian.de/noises/stp-049-schadcode.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/049-schadcode/</guid>
    <pubDate>Thu, 11 Jan 2024 20:05:00 GMT</pubDate>
    <itunes:duration>52:03</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP048: Vertrauen</itunes:title>
    <itunes:episode>48</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP048: Vertrauen</title>
    <link>https://schluesseltechnologie-podcast.de/048-vertrauen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach Xyrills gewaltigem humorischen Auftakt kommen wir zu wirklich wichtigen Dingen: Wem kann vertraut werden und warum? Hat Vertrauen ein Haltbarkeitsdatum? Wem vertraue ich, ohne explizit davon zu wissen? Zum Schluss gibt es noch Aufklärung über die Herkunft des Wortes &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Spam&amp;amp;oldid=238368359#Begriffsherkunft&#34;&gt;Spam&lt;/a&gt; für unerwünschte Werbung.</itunes:summary>
    <description>Nach Xyrills gewaltigem humorischen Auftakt kommen wir zu wirklich wichtigen Dingen: Wem kann vertraut werden und warum? Hat Vertrauen ein Haltbarkeitsdatum? Wem vertraue ich, ohne explizit davon zu wissen? Zum Schluss gibt es noch Aufklärung über die Herkunft des Wortes &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Spam&amp;amp;oldid=238368359#Begriffsherkunft&#34;&gt;Spam&lt;/a&gt; für unerwünschte Werbung.</description>
    <content:encoded>&lt;p&gt;Nach Xyrills gewaltigem humorischen Auftakt kommen wir zu wirklich wichtigen Dingen: Wem kann vertraut werden und warum? Hat Vertrauen ein Haltbarkeitsdatum? Wem vertraue ich, ohne explizit davon zu wissen? Zum Schluss gibt es noch Aufklärung über die Herkunft des Wortes &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Spam&amp;amp;oldid=238368359#Begriffsherkunft&#34;&gt;Spam&lt;/a&gt; für unerwünschte Werbung.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP039: Authentifizierung (&amp;quot;Wer ist diese Person?&amp;quot; bzw &amp;quot;Was darf diese Person?&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: Woher weiß man, ob ein Identitätsnachweis verlässlich ist? -&amp;gt; &lt;strong&gt;Vertrauen&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Vorstellung verschiedener Arten von Vertrauensvermittlung -&amp;gt; Ziel: Vokabular aufbauen, Methoden gegeneinander abwägen&lt;/li&gt;
&lt;li&gt;Beispiele im realen Leben: gemeinsame Vorgeschichte und Inside-Jokes, Geheimlosungen, Personalausweise&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vererbung von Vertrauen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Digitales_Zertifikat&amp;amp;oldid=236185751&#34;&gt;Digitale Zertifikate&lt;/a&gt; nach dem &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=X.509&amp;amp;oldid=237108927&#34;&gt;X.509-Standard&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;basierend auf asymmetrischer Verschlüsselung (siehe STP043)
&lt;ul&gt;
&lt;li&gt;Zertifikat = öffentlicher Schlüssel &#43; Identitätsinformationen &#43; Signatur durch ein übergeordnetes Zertifikat&lt;/li&gt;
&lt;li&gt;durch die Signaturkette geht Vertrauen vom Anfang der Kette (&lt;strong&gt;Zertifikatsautorität&lt;/strong&gt;, CA) auf die abgeleiteten Zertifikate über&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;authentifizierende Systeme müssen nur das allererste Zertifikat in der Kette kennen (das Wurzel-Zertifikat bzw. Root-CA)
&lt;ul&gt;
&lt;li&gt;Beispiel: Wurzelzertifikat signiert Zertifikat einer unterliegenden CA, und dieses signiert ein Zertifikat für einen Nutzer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Einsatzfälle
&lt;ul&gt;
&lt;li&gt;Transportverschlüsselung im Web (HTTPS, Zertifikat enthält Domain-Namen)&lt;/li&gt;
&lt;li&gt;Impfzertifikate in der Corona-Warn-App&lt;/li&gt;
&lt;li&gt;Benutzerseitige Zertifikate im Firmen-Intranet oder bei Elster&lt;/li&gt;
&lt;li&gt;Äquivalente in der realen Welt: Personalausweis oder Reisepass (ausgestellt durch eine Regierungsstelle), Zugangskarte in der Firma (ausgestellt durch die Liegenschaftsverwaltung der Firma), Mitarbeiteruniform (eine Person in DB-Uniform auf einem Bahnhof wird wahrscheinlich ein DB-Mitarbeiter sein)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteile: skaliert sehr gut auf viele Akteure, nur relativ wenig Speicher notwendig (für die Root-CAs)&lt;/li&gt;
&lt;li&gt;Nachteil: erfordert Vertrauen in eine zentrale Stelle&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vertrauen durch Beständigkeit: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Trust_on_first_use&amp;amp;oldid=1157774410&#34;&gt;Trust on first use (TOFU)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;beim ersten Kontakt mit einer Person wird deren öffentlichen Schlüssel blind vertraut&lt;/li&gt;
&lt;li&gt;bei weiteren Kontakten wird demselben Schlüssel weiterhin vertraut, aber die Präsentation eines neuen Schlüssels wird als Angriffsversuch bzw. Betrugsversuch gewertet&lt;/li&gt;
&lt;li&gt;Einsatzfälle
&lt;ul&gt;
&lt;li&gt;die meisten Messenger mit Ende-zu-Ende-Verschlüsselung (z.B. Signal, WhatsApp, verschlüsselte Chats in Telegram)&lt;/li&gt;
&lt;li&gt;Fernzugriff auf Server mittels SSH (für den Teil, wo die Identität des Servers überprüft wird)&lt;/li&gt;
&lt;li&gt;Äquivalente in der realen Welt: Bekanntschaften unter Nachbarn oder Vereinsmitgliedern (alles, was auf der Basis von &amp;quot;den kenn ich&amp;quot; läuft)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteil: braucht keinen zentralen Vertrauensanker&lt;/li&gt;
&lt;li&gt;Nachteil: anfällig gegen Attacken beim initialen Verbindungsaufbau&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vertrauen durch Vitamin B: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Web_of_Trust&amp;amp;oldid=235927300&#34;&gt;Web of Trust (WoT)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zertifikate ähnlich wie bei X.509: öffentlicher Schlüssel &#43; Identitätsinformatione &#43; &lt;strong&gt;Liste von&lt;/strong&gt; Signaturen&lt;/li&gt;
&lt;li&gt;Signaturen nicht vertikal (in einer Hierarchie), sondern horizontal (zwischen gleichrangigen Zertifikaten verschiedener Nutzer)&lt;/li&gt;
&lt;li&gt;Vertrauen vererbt sich zwischen Nutzern:
&lt;ul&gt;
&lt;li&gt;unendliches Vertrauen in das eigene Zertifikat&lt;/li&gt;
&lt;li&gt;hohes Vertrauen in Zertifikate, die man selbst signiert hat&lt;/li&gt;
&lt;li&gt;mittelhohes Vertrauen in Zertifikate, die von diesen Zertifikaten signiert wurden&lt;/li&gt;
&lt;li&gt;und so weiter&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Einsatzfälle
&lt;ul&gt;
&lt;li&gt;E-Mail-Verschlüsselung mit PGP/GPG, siehe auch &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Keysigning-Party&amp;amp;oldid=237529163&#34;&gt;Keysigning-Parties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Verifikation eines Chat-Kontakts über einen Seitenkanal&lt;/li&gt;
&lt;li&gt;Äquivalent in der realen Welt: Bekanntschaften über Bande (&amp;quot;der Freund der Freundin des Schwippschwagers&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteil: braucht keinen zentralen Vertrauensanker&lt;/li&gt;
&lt;li&gt;Nachteil: Schlüssel mit vielen Signaturen sind eigentlich wertvoll, aber auch unhandlich; Angriff möglich durch bösartige Müll-Signaturen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seitenleiste: Wie könnte man solchen Signatur-Spam verhindern?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: Spam (sowohl bei E-Mails als auch GPG-Signaturen) ist für den Versender sehr günstig und für den Empfänger extrem lästig -&amp;gt; Kann man den Spieß umdrehen?&lt;/li&gt;
&lt;li&gt;Idee (1990er): wir nutzen Einwegfunktionen (Streuwertfunktionen siehe STP004, STP043), aber drehen die Sache um
&lt;ul&gt;
&lt;li&gt;Sender muss einen Datensatz bilden, für den eine Streuwertfunktion ein Ergebnis mit X führenden Nullen hat (X kann variiert werden je nach Leistungsfähigkeit aktueller Prozessoren) -&amp;gt; erfordert sehr viel Durchprobieren von Eingabewerten&lt;/li&gt;
&lt;li&gt;Empfänger muss nur schauen, dass die Lösung stimmt -&amp;gt; erfordert nur eine Berechnung mit dem präsentierten Eingabewert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Implementation (2002): &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Hashcash&amp;amp;oldid=1166511502&#34;&gt;Hashcash&lt;/a&gt; als eines der ersten &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Proof_of_Work&amp;amp;oldid=235827513&#34;&gt;Proof-of-Work&lt;/a&gt;-Verfahren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vertrauen durch Proof of Work: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Blockchain&amp;amp;oldid=235793427&#34;&gt;Blockchain&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kombination von Proof of Work mit Merkle-Bäumen&lt;/li&gt;
&lt;li&gt;Merkle-Baum = Baumstruktur aus Datenpaketen, die jeweils die Hash-Werte ihrer untergeordneten Knoten enthalten -&amp;gt; Hash-Wert des Wurzelknotens ist die einzige benötigte Information, um die Integrität des gesamten Baumes zu überprüfen&lt;/li&gt;
&lt;li&gt;Blockchain: System zur kontinuierlichen Erweiterung eines Merkle-Baums (genauer: einer Merkle-Kette) um neue Blöcke, aber die Hashes jedes Blocks müssen eine Proof-of-Work-Bedingung erfüllen&lt;/li&gt;
&lt;li&gt;kein Vertrauen in einzelne Akteure notwendig, nur in die Sicherheit des Algorithmus&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abendgedanken: Vertrauen lässt sich nicht eliminieren, nur verschieben&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vertraue ich einem Menschen? Einer Maschine? Einer Organisation? Einem Algorithmus?&lt;/li&gt;
&lt;li&gt;Niemandem vertrauen ist auch keine Lösung.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Versionsverwaltungssystem &amp;quot;git&amp;quot;, wie von uns besprochen im &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20210727.html&#34;&gt;Pentaradio vom Juli 2021&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und grandiose Wortwitze"  />
          <chapter start="00:04:10" title="Wer ist die andere Person?"  />
          <chapter start="00:07:39" title="Vererbung von Vertrauen"  />
          <chapter start="00:19:29" title="Xyrills erste Datensicherung"  />
          <chapter start="00:20:33" title="Einsatzfälle für Zertifikate"  />
          <chapter start="00:34:05" title="Vertrauen durch Beständigkeit"  />
          <chapter start="00:44:07" title="Vertrauen durch Vitamin B"  />
          <chapter start="00:56:13" title="Spam und Hashes"  />
          <chapter start="01:02:40" title="Proof of Work"  />
          <chapter start="01:15:14" title="Abendgedanken"  />
          <chapter start="01:17:06" title="Outro"  />
      </chapters>
      <enclosure length="76210857" url="https://dl.xyrillian.de/noises/stp-048-vertrauen.mp3" type="audio/mpeg"/>
      <enclosure length="47533851" url="https://dl.xyrillian.de/noises/stp-048-vertrauen.ogg" type="audio/ogg"/>
      <enclosure length="28722015" url="https://dl.xyrillian.de/noises/stp-048-vertrauen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/048-vertrauen/</guid>
    <pubDate>Thu, 21 Dec 2023 19:30:00 GMT</pubDate>
    <itunes:duration>79:02</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP047: Speicherallokation</itunes:title>
    <itunes:episode>47</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP047: Speicherallokation</title>
    <link>https://schluesseltechnologie-podcast.de/047-speicherallokation</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Ein weiteres Mal beschäftigen wir uns mit Speicher. Diesmal spezifisch mit Haufen davon. Wie man die wieder wegräumt oder gar nicht erst zu groß werden lässt, ist auch ein Thema. Außerdem gibt es ein Novum direkt am Beginn der Folge.</itunes:summary>
    <description>Ein weiteres Mal beschäftigen wir uns mit Speicher. Diesmal spezifisch mit Haufen davon. Wie man die wieder wegräumt oder gar nicht erst zu groß werden lässt, ist auch ein Thema. Außerdem gibt es ein Novum direkt am Beginn der Folge.</description>
    <content:encoded>&lt;p&gt;Ein weiteres Mal beschäftigen wir uns mit Speicher. Diesmal spezifisch mit Haufen davon. Wie man die wieder wegräumt oder gar nicht erst zu groß werden lässt, ist auch ein Thema. Außerdem gibt es ein Novum direkt am Beginn der Folge.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug auf STP045: &lt;strong&gt;Heap&lt;/strong&gt; (Haufenspeicher)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keine Strukturvorgaben durch das Betriebssystem oder die Prozessorarchitektur&lt;/li&gt;
&lt;li&gt;notwendig für Daten, deren Lebenszeit nicht der Struktur von Unterprogrammen folgt, oder deren Größe die 132 KiB des Stacks übersteigt&lt;/li&gt;
&lt;li&gt;neue Frage: Wie kann man diesen unstrukturierten Haufen sinnvoll verwalten?&lt;/li&gt;
&lt;li&gt;Analogie: Ein Team verwendet als Speicher ein großes Whiteboard, auf dem verschiedene Mitglieder des Teams rumschreiben wollen, ohne sich gegenseitig in die Quere zu kommen.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;man braucht einen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Allokation_(Informatik)&amp;amp;oldid=199910001&#34;&gt;Allokator&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meist in Form einer Programmbibliothek, die auf die jeweilige Programmiersprache und/oder Laufzeitumgebung abgestimmt ist&lt;/li&gt;
&lt;li&gt;klassischerweise zwei Funktionen: &amp;quot;malloc&amp;quot; (&amp;quot;memory allocate&amp;quot;; ich brauche ein Stück Speicher der Größe X) und &amp;quot;free&amp;quot; (das gegebene Stück Speicher brauche ich nicht mehr)&lt;/li&gt;
&lt;li&gt;Allokationen mittels malloc sind meist sehr viel kleiner als die Speicherseiten, die das Betriebssystem rausgibt (min. 4 KB) -&amp;gt; Allokator holt sich ganze Speicherseiten und zerteilt die in mundgerechte Stücke&lt;/li&gt;
&lt;li&gt;damit &amp;quot;free&amp;quot; funktioniert, muss der Allokator irgendwo über diese Zerstückelung Buch führen -&amp;gt; gewisser Mehraufwand an Speicher für die Buchführung&lt;/li&gt;
&lt;li&gt;verschiedene Anwendungen machen ihre Speicherallokationen in unterschiedlichen Mustern (häufig z.B. ein gewisser Bodensatz an großen Allokationen, die für die ganze Lebensdauer des Programms erhalten bleiben, und dazu sehr viele kleine und kurzlebige Allokationen für bestimmte Einzeloperationen) -&amp;gt; interessantes Arbeits- und Forschungsfeld für Leute, die sich gern in Algorithmen eingraben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Speicherverwaltung im Heap ist sicherheitskritisch -&amp;gt; mögliche Fehlerquellen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Speicherleck: Speicher wird allokiert, aber dann nicht wieder freigegeben; da der Allokator nicht wissen kann, ob der Speicher noch verwendet wird, muss er brachliegen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Puffer%C3%BCberlauf&amp;amp;oldid=236800782&#34;&gt;Pufferüberlauf&lt;/a&gt;: Allokation war für X Bytes, aber dann wird über das Ende (Basisadresse &#43; X) hinausgeschrieben; dies zerstört dann Daten in anderen Allokationen oder Buchführungsdaten des Allokators&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://owasp.org/www-community/vulnerabilities/Using_freed_memory&#34;&gt;Use after free&lt;/a&gt;: Allokation wird mit &amp;quot;free&amp;quot; zurückgegeben, aber danach noch vom Programm verwendet, obwohl der Allokator dieses Stück Speicher vielleicht schon wieder anderweitig allokiert hat&lt;/li&gt;
&lt;li&gt;Das klingt alles anstrengend. Kann man das nicht den Computer machen lassen? -&amp;gt; &lt;strong&gt;automatische Speicherverwaltung&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;einfachste praktikable Idee: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Referenzz%C3%A4hlung&amp;amp;oldid=221346853&#34;&gt;Referenzen zählen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ansatz: bei allokiertem Speicher nicht die lose Speicheradresse herumreichen, sondern noch einen Zähler mitführen
&lt;ul&gt;
&lt;li&gt;Zähler beginnt bei 1, da man am Anfang eine Referenz hat&lt;/li&gt;
&lt;li&gt;bei jedem Kopieren der Referenz wird der Zähler um 1 erhöht, bei jedem Löschen einer Referenz um 1 verringert&lt;/li&gt;
&lt;li&gt;die Allokation wird freigegeben, wenn der Zähler auf 0 fällt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteil: sehr schnell, sehr zuverlässig, eliminiert bei konsequenter Anwendung das Risiko von &amp;quot;Use after free&amp;quot;&lt;/li&gt;
&lt;li&gt;Nachteil: garantierte Speicherlecks bei zyklischen Referenzen (z.B. A verweist auf B verweist auf C verweist auf A, aber nichts anderes verweist auf A/B/C)&lt;/li&gt;
&lt;li&gt;komplexere Formen von automatische Speicherverwaltung mit Zykluserkennung heißen meist &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Garbage_Collection&amp;amp;oldid=236166816&#34;&gt;Garbage Collector&lt;/a&gt; (GC, &amp;quot;Müllsammler&amp;quot;); strenggenommen sind Referenzzähler &amp;quot;konservative GC&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel für einen GC-Algorithmus: &lt;strong&gt;Mark and Sweep&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aktives Aufräumen zu bestimmten Gelegenheiten, z.B. wenn bei malloc kein Speicher mehr frei ist und weiterer Speicher vom Betriebssystem angefordert werden müsste&lt;/li&gt;
&lt;li&gt;Algorithmus:
&lt;ul&gt;
&lt;li&gt;Allokationen, deren Adressen im Stack liegen, werden als &amp;quot;erreichbar&amp;quot; markiert&lt;/li&gt;
&lt;li&gt;alle anderen Allokationen werden initial als &amp;quot;nicht erreichbar&amp;quot; markiert&lt;/li&gt;
&lt;li&gt;ausgehend von den erreichbaren Allokationen wird sukzessive nach Verweisen auf andere Allokationen gesucht und diese ebenfalls als &amp;quot;erreichbar&amp;quot; markiert&lt;/li&gt;
&lt;li&gt;nachdem alles durchsucht wurde, werden alle Allokationen freigegeben, die immer noch als &amp;quot;nicht erreichbar&amp;quot; markiert sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GC braucht meist eine enge Integration mit dem Allokator und mit der Programmiersprache oder der Laufzeitumgebung (z.B. insb. um die Frage &amp;quot;welche Allokationen sind im Stack referenziert&amp;quot; zu beantworten)&lt;/li&gt;
&lt;li&gt;Nachteil: fast jeder GC muss zumindest für einen Teil der Aufräumphase &amp;quot;die Welt anhalten&amp;quot;, was für den Nutzer wie Motorstottern aussieht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Optimierung der Heap-Nutzung: Anzahl der Allokationen verringern (es gilt die Faustregel &amp;quot;der einzige Weg, zu optimieren, ist, weniger zu tun&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zusammenhängende Datenstrukturen möglichst in eine einzelne Allokation ablegen anstatt in mehrere Teilstücke (&amp;quot;Arena-Allokation&amp;quot;, &amp;quot;Small Object Allocation&amp;quot;)&lt;/li&gt;
&lt;li&gt;kleine Daten bevorzugt im Stack halten und nicht auf den Heap legen (Xyrill hat eine Anekdote zu Minecraft)&lt;/li&gt;
&lt;li&gt;noch eine Idee: GC zu opportunen Momenten explizit anstarten (z.B. bei Spielen während des VSync, d.h. wenn ein Einzelbild gerade fertig ist und es auf den Bildschirm kopiert wird)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zum Schluss ein Blick auf ein Teilgebiet der Heap-Algorithmen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Cache&amp;amp;oldid=236047086&#34;&gt;Zwischenspeicher (Cache)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grundproblem: bestimmte Operationen sind teuer (z.B. Netzwerkabfragen, Einlesen von Dateien von der Festplatte, komplexe Berechnungen), aber reproduzierbar; wir würden die Ergebnisse gerne wiederverwenden, aber können nicht alle im Speicher halten&lt;/li&gt;
&lt;li&gt;Speicherstück mit einer festen Größe wird als Cache designiert&lt;/li&gt;
&lt;li&gt;idealerweise würde man genau die Ergebnisse dort ablegen, die in der Zukunft am häufigsten wieder nachgefragt werden&lt;/li&gt;
&lt;li&gt;Problem: &lt;a href=&#34;https://en.wikiquote.org/w/index.php?title=Niels_Bohr&amp;amp;oldid=3344877&#34;&gt;&amp;quot;Vorhersagen sind schwierig, insbesondere, wenn sie die Zukunft betreffen&amp;quot;&lt;/a&gt; -&amp;gt; Cache-Replacement-Algorithmen sind ein Forschungsfeld&lt;/li&gt;
&lt;li&gt;Beispiel &lt;strong&gt;LRU&lt;/strong&gt; (&amp;quot;Least Recently Used&amp;quot;): wenn ein neues Element abgelegt wird, wird dasjenige existierende Element überschrieben, das am längsten ungenutzt ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lesestoff: &lt;a href=&#34;https://www.memorymanagement.org/&#34;&gt;www.memorymanagement.org&lt;/a&gt; (englisch)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="CTA, Intro und Prolog"  />
          <chapter start="00:03:37" title="Rückbezug auf STP045"  />
          <chapter start="00:06:02" title="Das Grundproblem"  />
          <chapter start="00:06:25" title="Abschweif: Notizen für die Klausur"  />
          <chapter start="00:07:53" title="Man braucht einen Allokator"  />
          <chapter start="00:09:17" title="malloc und free"  />
          <chapter start="00:21:23" title="Fehlerquellen in der Speicherverwaltung"  />
          <chapter start="00:21:51" title="Speicherleck"  />
          <chapter start="00:25:33" title="Pufferüberlauf"  />
          <chapter start="00:30:47" title="Use after free"  />
          <chapter start="00:34:42" title="Automatische Speicherverwaltung"  />
          <chapter start="00:46:00" title="Mark and Sweep"  />
          <chapter start="00:51:53" title="Optimierung der Heap-Nutzung"  />
          <chapter start="01:00:44" title="Caching"  />
      </chapters>
      <enclosure length="66486662" url="https://dl.xyrillian.de/noises/stp-047-speicherallokation.mp3" type="audio/mpeg"/>
      <enclosure length="41753580" url="https://dl.xyrillian.de/noises/stp-047-speicherallokation.ogg" type="audio/ogg"/>
      <enclosure length="24872141" url="https://dl.xyrillian.de/noises/stp-047-speicherallokation.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/047-speicherallokation/</guid>
    <pubDate>Thu, 30 Nov 2023 01:10:00 GMT</pubDate>
    <itunes:duration>68:54</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP046: Bram Moolenaar und vim</itunes:title>
    <itunes:episode>46</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP046: Bram Moolenaar und vim</title>
    <link>https://schluesseltechnologie-podcast.de/046-bram-moolenaar-und-vim</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Obwohl dies ein Technikpodcast ist, kommen wir um politische Themen oft nicht ganz herum. In dieser Folge jedoch stellen wir uns nun direkt ins Feuer. Und all das nur, weil Xyrill unbedingt seinen Lieblingseditor unters Volk bringen will.</itunes:summary>
    <description>Obwohl dies ein Technikpodcast ist, kommen wir um politische Themen oft nicht ganz herum. In dieser Folge jedoch stellen wir uns nun direkt ins Feuer. Und all das nur, weil Xyrill unbedingt seinen Lieblingseditor unters Volk bringen will.</description>
    <content:encoded>&lt;p&gt;Obwohl dies ein Technikpodcast ist, kommen wir um politische Themen oft nicht ganz herum. In dieser Folge jedoch stellen wir uns nun direkt ins Feuer. Und all das nur, weil Xyrill unbedingt seinen Lieblingseditor unters Volk bringen will.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Aus aktuellem Anlass: Anfang August 2023 ist Bram Moolenaar gestorben.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bram_Moolenaar&amp;amp;oldid=236301189&#34;&gt;Bram Moolenaar&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Jahrgang 1961, bis 1985 Studium der Elektrotechnik in Delft mit Abschlussarbeit zu Multiprozessor-Unix-Architektur&lt;/li&gt;
&lt;li&gt;seit 1988 Entwicklung eines Klons des Texteditors vi mit dem Namen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Vim&amp;amp;oldid=236190917&#34;&gt;vim&lt;/a&gt; (erst &amp;quot;vi imitation&amp;quot;, später &amp;quot;vi improved&amp;quot;; &amp;quot;vim&amp;quot; kann aber auch &amp;quot;Elan&amp;quot; bedeuten)&lt;/li&gt;
&lt;li&gt;bis kurz vor seinem Tod (d.h. 35 Jahre) Leitung des vim-Projektes in seiner Freizeit (neben der Arbeit u.a. bei Google)&lt;/li&gt;
&lt;li&gt;außerdem Engagement für die NGO &lt;a href=&#34;https://iccf.nl/index.html&#34;&gt;ICCF Holland&lt;/a&gt;, die Waisenkinder in Uganda unterstützt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;in diesem Zusammenhang: Was ist eigentlich vim? Und warum verbringt Xyrill sein halbes Leben darin? (Spoiler: man kann alle intellektuelle Arbeit als Texteditieren darstellen; siehe auch STP006)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;frühe 1970er-Jahre: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ed_(Texteditor)&amp;amp;oldid=207200962&#34;&gt;&lt;code&gt;ed&lt;/code&gt;&lt;/a&gt; – der erste Unix-Texteditor; damals hatten Unix-Computer noch keinen Bildschirm, sondern nur Tastatur und Drucker&lt;/li&gt;
&lt;li&gt;1976: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ex_(Texteditor)&amp;amp;oldid=217207358&#34;&gt;&lt;code&gt;ex&lt;/code&gt;&lt;/a&gt; – eine von vielen Weiterentwicklungen von &lt;code&gt;ed&lt;/code&gt; mit zusätzlichen Funktionen&lt;/li&gt;
&lt;li&gt;darin enthalten: ein neuartiger &amp;quot;visual mode&amp;quot;, der 1979 der Standard wurde – &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Vi&amp;amp;oldid=234166542&#34;&gt;&lt;code&gt;vi&lt;/code&gt;&lt;/a&gt; ist geboren&lt;/li&gt;
&lt;li&gt;1989 dann &lt;code&gt;vim&lt;/code&gt; als Weiterentwicklung von Brams Portierung von &lt;code&gt;vi&lt;/code&gt; auf Atari-Computer&lt;/li&gt;
&lt;li&gt;sprich: im Großen und Ganzen eine 50 Jahre lang ungebrochene Evolutionslinie von Texteditoren, analog und parallel zu Unix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kernidee von vi-artigen Texteditoren: &lt;strong&gt;modales Editieren&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in herkömmlichen Texteditoren: jeder Tastendruck hat immer die gleiche Bedeutung (z.B. &amp;quot;u&amp;quot; fügt ein kleines U ein; z.B. &amp;quot;Strg&#43;Z&amp;quot; macht die letzte Operation rückgängig)&lt;/li&gt;
&lt;li&gt;Nachteil: komplexe Operationen sind begrenzt darin, wieviele Tastenkombinationen man sich merken kann&lt;/li&gt;
&lt;li&gt;in vi-artigen Editoren: Bedeutung eines Tastendrucks hängt vom aktuellen Modus ab (z.B. &amp;quot;u&amp;quot; im Eingabemodus fügt ein kleines U ein, jedoch &amp;quot;u&amp;quot; im Befehlsmodus macht die letzte Operation rückgängig)&lt;/li&gt;
&lt;li&gt;erster Vorteil: mehr Befehle sind durch einfache Tastendrücke erreichbar, die sich einfacher tippen lassen als Akkorde wie &amp;quot;Strg&#43;Umschalt&#43;R&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zweite Besonderheit: &lt;strong&gt;Aktionsgrammatik&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in herkömmlichen Texteditoren: viele Aktionen, die alle ziemlich ähnlich sind (z.B. ein Zeichen nach links löschen, ein Wort nach links löschen, ein Zeichen nach links auswählen, ein Wort nach links auswählen, etc.)&lt;/li&gt;
&lt;li&gt;Befehlsmodus in vi: Befehle werden wie mit einer Grammatik zusammengesetzt
&lt;ul&gt;
&lt;li&gt;Substantive = Bewegungen (z.B. &amp;quot;w&amp;quot; = ein Wort nach rechts, &amp;quot;b&amp;quot; = ein Wort nach links, &amp;quot;j&amp;quot; = eine Zeile nach unten)&lt;/li&gt;
&lt;li&gt;Zahlen = Vervielfältigungen (z.b. &amp;quot;3w&amp;quot; = drei Worte nach rechts, &amp;quot;5j&amp;quot; = fünf Zeilen nach unten)&lt;/li&gt;
&lt;li&gt;Verben = Aktionen (z.B. &amp;quot;d&amp;quot; = löschen, &amp;quot;c&amp;quot; = ändern)&lt;/li&gt;
&lt;li&gt;ganzer Befehl: nur eine Bewegung (bewegt den Cursor, z.B. &amp;quot;3w&amp;quot;) oder eine Aktion und eine Bewegung (z.B. &amp;quot;d5j&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;damit zweiter Vorteil: eine große Menge an komplexen Aktionen ist mit sehr kompakten Befehlen auszudrücken (z.B. &amp;quot;Ich möchte den Inhalt des Klammerpaars löschen, in dem mein Cursor steht&amp;quot; = &amp;quot;di(&amp;quot;, &amp;quot;ich möchte diesen Absatz und die nächsten drei Absätze automatisch formattieren&amp;quot; = &amp;quot;ga4p&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;weitere coole Funktionen in vim&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Makrofunktion: Folgen von Tastendrücken können aufgezeichnet und dann automatisiert abgespielt werden (gibt&#39;s auch in anderen Editoren, aber paart sich mit vi&#39;s Befehlssprache besser als mit denen der meisten anderen Texteditoren)&lt;/li&gt;
&lt;li&gt;man kann damit &lt;a href=&#34;https://media.ccc.de/v/34c3-9007-hacker_jeopardy#t=1093&#34;&gt;Hacker Jeopardy&lt;/a&gt; gewinnen :3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kann man das lernen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ja, auf jeden Fall. Was man da an Zeit aufwendet, zahlt sich dann über Jahrzehnte aus.&lt;/li&gt;
&lt;li&gt;Xyrill empfiehlt: Erstmal nur mit den Basics anfangen (Dateien öffnen und schließen, zwischen Modi wechseln). Dann schrittweise Befehle lernen, wann immer man das Gefühl hat, dass man was von Hand macht, was auch einfacher gehen sollte.&lt;/li&gt;
&lt;li&gt;vim hat ein eingebautes Tutorial: &lt;code&gt;vimtutor&lt;/code&gt; auf der Kommandozeile ausführen&lt;/li&gt;
&lt;li&gt;vim-Cheatsheet auf dem Schreibtisch bereitlegen (&lt;a href=&#34;https://cheatography.com/mipapo/cheat-sheets/vim-cheatsheet/&#34;&gt;Beispiel (deutsch)&lt;/a&gt;, &lt;a href=&#34;https://i.redd.it/ve1jv3m3qqj21.png&#34;&gt;Beispiel (englisch)&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=KyLqUf4cdwc&#34;&gt;Perl-Programm mit Spracherkennung schreiben&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://c3d2.de/news/pentaradio24-20210727.html&#34;&gt;Pentaradio zu Git (Versionsverwaltungssystem)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:28" title="Bram Moolenaar ist gestorben"  />
          <chapter start="00:03:37" title="Leben und  Werk von Bram Moolenaar"  />
          <chapter start="00:12:42" title="Was ist vim und warum ist es cool?"  />
          <chapter start="00:19:22" title="vim und seine Ahnen"  />
          <chapter start="00:19:45" title="ed: Der Standard-Unix-Editor"  />
          <chapter start="00:23:29" title="ex: eds Nachfloger"  />
          <chapter start="00:25:01" title="sed: Der Streameditor"  />
          <chapter start="00:25:37" title="vims Kompatibilitätsmodus"  />
          <chapter start="00:26:19" title="Der Visual-Mode"  />
          <chapter start="00:27:33" title="vi vs. vim"  />
          <chapter start="00:29:29" title="Modales Editieren"  />
          <chapter start="00:39:16" title="Aktionsgramatik"  />
          <chapter start="00:46:20" title="Abschweif: Codegolf"  />
          <chapter start="00:48:01" title="Iteratives lernen"  />
          <chapter start="00:49:04" title="Richtigstellung Befehlsmodus"  />
          <chapter start="00:50:14" title="Zahlen als Quantoren"  />
          <chapter start="00:53:40" title="Makrofuntion"  />
          <chapter start="00:56:46" title="Visual Mode"  />
          <chapter start="00:58:15" title="Anderes cooles Zeug und Bemerkungen"  />
      </chapters>
      <enclosure length="62016550" url="https://dl.xyrillian.de/noises/stp-046-bram-moolenaar-und-vim.mp3" type="audio/mpeg"/>
      <enclosure length="38964778" url="https://dl.xyrillian.de/noises/stp-046-bram-moolenaar-und-vim.ogg" type="audio/ogg"/>
      <enclosure length="23392014" url="https://dl.xyrillian.de/noises/stp-046-bram-moolenaar-und-vim.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/046-bram-moolenaar-und-vim/</guid>
    <pubDate>Thu, 09 Nov 2023 13:05:00 GMT</pubDate>
    <itunes:duration>64:15</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP045: Speicherstruktur aus Programmsicht</itunes:title>
    <itunes:episode>45</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP045: Speicherstruktur aus Programmsicht</title>
    <link>https://schluesseltechnologie-podcast.de/045-speicherstruktur-aus-programmsicht</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Ausgabe greifen wir ein altes Thema erneut auf, bei dem ttimeless trotzdem stellenweise nur schwer folgen kann. Denn durch Wiederholung lernt man. Denn durch Wiederholung lernt man.</itunes:summary>
    <description>In dieser Ausgabe greifen wir ein altes Thema erneut auf, bei dem ttimeless trotzdem stellenweise nur schwer folgen kann. Denn durch Wiederholung lernt man. Denn durch Wiederholung lernt man.</description>
    <content:encoded>&lt;p&gt;In dieser Ausgabe greifen wir ein altes Thema erneut auf, bei dem ttimeless trotzdem stellenweise nur schwer folgen kann. Denn durch Wiederholung lernt man. Denn durch Wiederholung lernt man.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückblick: wir hatten schon einige Folgen zu Speicherverwaltung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;STP007: Speicherhierarchie (Festplatte und SSD, Arbeitsspeicher/RAM, Prozessor-Cache, Registerbank)&lt;/li&gt;
&lt;li&gt;STP019: Speicherschutz (virtueller Speicher, Auslagerungsspeicher/Swap, Direct Memory Access)&lt;/li&gt;
&lt;li&gt;Nachtrag/Linktipp: &lt;a href=&#34;https://www.linuxatemyram.com&#34;&gt;https://www.linuxatemyram.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;das war alles aus Sicht des Betriebssystems; diesmal Abläufe innerhalb des Prozesses&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was stellt uns das Betriebssystem bereit? -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Virtuelle_Speicherverwaltung&amp;amp;oldid=233703410&#34;&gt;Virtueller Speicher&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nominale Größe: entsprechend der Adressbreite des Prozessors (für 32 Bit sind das 2^32 Bytes = 4 GiB, für 64 Bit sind es 2^64 Bytes = 16 EiB = 16.777.216 TiB)&lt;/li&gt;
&lt;li&gt;nutzbar aber nur dort, wo das Betriebssystem für uns eine tatsächlich existierende Speicherseite einblendet&lt;/li&gt;
&lt;li&gt;initiale Belegung (siehe Beispiel unten): hauptsächlich Programmdatei und benötigte Programmbibliotheken mit ihren entsprechenden Segmenten&lt;/li&gt;
&lt;li&gt;Belegung (und Rückgabe) weiterer Speichersegmente mittels Syscalls (siehe STP019)&lt;/li&gt;
&lt;li&gt;klassische Struktur des virtuellen Speichers: oben der Stapel, unten ein Haufen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;vorher einige Bemerkungen zu klassischen Schutzmaßnahmen, die man im untenstehenden Beispiel sehen kann&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;die untersten paar KiB des Adressbereiches werden nie vergeben
&lt;ul&gt;
&lt;li&gt;dies verhindert versehentlichen Zugriff auf Nullzeiger mit hoher Wahrscheinlichkeit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Address_Space_Layout_Randomization&amp;amp;oldid=227389251&#34;&gt;Address Space Layout Randomization (ASLR)&lt;/a&gt;: Programmdateien und Programmbibliotheken werden an zufällig gewählten Speicheradressen eingeblendet, um es Angreifern zu erschweren, das Programm so zu manipulieren, dass es ungeplant in deren Code hineinspringt
&lt;ul&gt;
&lt;li&gt;klingt nach einer einfach umsetzbaren Schutzmaßnahme&lt;/li&gt;
&lt;li&gt;war aber lange nicht weit verbreitet, weil der benötigte &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Position-independent_code&amp;amp;oldid=1164854994&#34;&gt;Position Independent Code (PIC)&lt;/a&gt; mit einem kleinen Geschwindigkeitsverlust (1-3%) einhergeht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;oberer Teil (d.h. bei hohen Adressen): &lt;strong&gt;Stack&lt;/strong&gt; (Stapelspeicher)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programme sind meist als ineinander verschachtelte Unterprogramme (Subroutinen) aufgebaut (siehe STP011)&lt;/li&gt;
&lt;li&gt;Daten, die nur für die Dauer des jeweiligen Unterprogramms gebraucht werden, können im Stack aufgestapelt werden&lt;/li&gt;
&lt;li&gt;Idee: Hauptroutine kriegt den ganzen Stack und knapst sich oben soviel ab, wie es selber braucht&lt;/li&gt;
&lt;li&gt;nächste Unterroutine kriegt den Rest des Stacks und verfährt in derselben Weise&lt;/li&gt;
&lt;li&gt;wenn die Unterroutine zurückkehrt, kann der von ihr benutzte Stack an die nächste Unterroutine weitergereicht werden -&amp;gt; keine aufwändige Speicherverwaltung nötig&lt;/li&gt;
&lt;li&gt;bei Prozessen mit mehreren Threads (parallel lauffähigen Teilprozessen) teilen sich alle Threads grundsätzlich denselben virtuellen Speicher, aber kriegen jeweils eigene Stacks&lt;/li&gt;
&lt;li&gt;Stack ist vom Betriebssystem in einer festen Größe angelegt (im Beispiel unten 132 KiB) – bei zu vielen verschachtelten Subroutinen-Aufrufen kommt es zum berüchtigten &lt;strong&gt;Stack Overflow&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;unterer Teil (d.h. bei tiefen Adressen): &lt;strong&gt;Heap&lt;/strong&gt; (Haufenspeicher)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keine Strukturvorgaben durch das Betriebssystem oder die Prozessorarchitektur&lt;/li&gt;
&lt;li&gt;notwendig für Daten, deren Lebenszeit nicht der Struktur von Unterprogrammen folgt, oder deren Größe die 132 KiB des Stacks übersteigt&lt;/li&gt;
&lt;li&gt;neue Frage: Wie kann man diesen unstrukturierten Haufen sinnvoll verwalten? -&amp;gt; Teil 2 folgt in STP047&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Randnotiz zu unserem Beispiel unten: &lt;a href=&#34;https://lwn.net/Articles/615809/&#34;&gt;Was sind vvar, vdso und vsyscall?&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Syscalls sind zeitaufwändig (in der Größenordnung von dutzenden Mikrosekunden), da man vom Prozess in den Kernel umschalten muss und wieder zurück&lt;/li&gt;
&lt;li&gt;Idee: manche Syscalls kann der Kernel mit geschickter Planung im Prozess selbst beantworten, ohne Kontextwechsel&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;code&gt;gettimeofday&lt;/code&gt; (Abfrage der aktuellen Uhrzeit) kann man aus einem vorhergehenden Datenpunkt des Kernels anhand des Taktzählers des Prozessors fortschreiben (z.B. &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Time_Stamp_Counter&amp;amp;oldid=1160257061&#34;&gt;TSC&lt;/a&gt; auf x86)&lt;/li&gt;
&lt;li&gt;vsyscall: erste derartige Implementation, mit zwei großen Problemen (Platzbegrenzung, kein PIC = kein ASLR); nur aus Kompatibilitätsgründen angeboten&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=VDSO&amp;amp;oldid=1146593908&#34;&gt;vDSO&lt;/a&gt; (&amp;quot;virtual dynamic shared object&amp;quot;): die aktuelle Implementation, verhält sich wie eine dynamisch nachgeladene Programmbibliothek&lt;/li&gt;
&lt;li&gt;vvar: Datensegment für das vDSO&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;pre&gt;&lt;code&gt;$ sleep 30 &amp;amp;
[1] 4970
$ cat /proc/$(pidof sleep)/maps
# address                perms offset   dev   inode       pathname
556ac29f4000-556ac29f6000 r--p 00000000 fe:00 10234368    /usr/bin/sleep
556ac29f6000-556ac29f9000 r-xp 00002000 fe:00 10234368    /usr/bin/sleep
556ac29f9000-556ac29fa000 r--p 00005000 fe:00 10234368    /usr/bin/sleep
556ac29fa000-556ac29fb000 r--p 00006000 fe:00 10234368    /usr/bin/sleep
556ac29fb000-556ac29fc000 rw-p 00007000 fe:00 10234368    /usr/bin/sleep
556ac2f81000-556ac2fa2000 rw-p 00000000 00:00 0           [heap]
7fe4dea00000-7fe4ded42000 r--p 00000000 fe:00 10321904    /usr/lib/locale/locale-archive
7fe4deefc000-7fe4deeff000 rw-p 00000000 00:00 0
7fe4deeff000-7fe4def21000 r--p 00000000 fe:00 10226583    /usr/lib/libc.so.6
7fe4def21000-7fe4df07e000 r-xp 00022000 fe:00 10226583    /usr/lib/libc.so.6
7fe4df07e000-7fe4df0d6000 r--p 0017f000 fe:00 10226583    /usr/lib/libc.so.6
7fe4df0d6000-7fe4df0da000 r--p 001d6000 fe:00 10226583    /usr/lib/libc.so.6
7fe4df0da000-7fe4df0dc000 rw-p 001da000 fe:00 10226583    /usr/lib/libc.so.6
7fe4df0dc000-7fe4df0eb000 rw-p 00000000 00:00 0
7fe4df11e000-7fe4df11f000 r--p 00000000 fe:00 10226556    /usr/lib/ld-linux-x86-64.so.2
7fe4df11f000-7fe4df145000 r-xp 00001000 fe:00 10226556    /usr/lib/ld-linux-x86-64.so.2
7fe4df145000-7fe4df14f000 r--p 00027000 fe:00 10226556    /usr/lib/ld-linux-x86-64.so.2
7fe4df14f000-7fe4df151000 r--p 00031000 fe:00 10226556    /usr/lib/ld-linux-x86-64.so.2
7fe4df151000-7fe4df153000 rw-p 00033000 fe:00 10226556    /usr/lib/ld-linux-x86-64.so.2
7ffe3da15000-7ffe3da36000 rw-p 00000000 00:00 0           [stack]
7ffe3da73000-7ffe3da77000 r--p 00000000 00:00 0           [vvar]
7ffe3da77000-7ffe3da79000 r-xp 00000000 00:00 0           [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0   [vsyscall]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Randbemerkungen: Sofern ich die Ausgabe von &lt;code&gt;strace sleep 30&lt;/code&gt; richtig lese, wurde &lt;code&gt;[heap]&lt;/code&gt; hier mit &lt;code&gt;brk&lt;/code&gt; verwaltet. Die beiden anonymen Segmente gehen höchstwahrscheinlich auf das Konto des Laufzeit-Linkers (hier &lt;code&gt;ld-linux-x86-64.so.2&lt;/code&gt;), der die Programmbibliotheken (hier nur &lt;code&gt;libc.so.6&lt;/code&gt;) in den Prozess lädt.&lt;/p&gt;
&lt;p&gt;Um das zu bestätigen, habe ich dann &lt;del&gt;mal schnell&lt;/del&gt; ein minimales Programm gebaut, dass ausschließlich &lt;code&gt;sleep&lt;/code&gt; gefolgt von &lt;code&gt;exit&lt;/code&gt; macht, und definitiv gar nichts anderes. Ich war in der Tat erfolgreich:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ strace ./target/release/minimal-memory-maps
execve(&amp;quot;./target/release/minimal-memory-maps&amp;quot;, [&amp;quot;./target/release/minimal-memory-&amp;quot;...], 0x7ffd0c104b00 /* 67 vars */) = 0
nanosleep({tv_sec=10, tv_nsec=0}, 0x7ffdaa084800) = 0
exit(0)                                 = ?
&#43;&#43;&#43; exited with 0 &#43;&#43;&#43;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Und dieses Programm hat nicht mal einen Heap, sondern nur den Stack und die Kernel-Schnittstellen:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat /proc/$(pidof minimal-memory-maps)/maps
# address                perms offset   dev   inode       pathname
00400000-00401000         rwxp 00000000 fe:00 9309336     .../target/release/minimal-memory-maps
7ffdaa066000-7ffdaa087000 rw-p 00000000 00:00 0           [stack]
7ffdaa0ea000-7ffdaa0ee000 r--p 00000000 00:00 0           [vvar]
7ffdaa0ee000-7ffdaa0f0000 r-xp 00000000 00:00 0           [vdso]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0   [vsyscall]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hier sieht man übrigens schön, dass ich mein Programm nicht mit PIC kompiliert habe, sodass für die Programmdatei selber keine ASLR vorgenommen werden konnte.&lt;/p&gt;
&lt;p&gt;Der Vollständigkeit halber dokumentiere ich hier noch den Code, um mein Testprogramm zu reproduzieren. Der Code funktioniert nur auf Linux und x86-64. Und selbst da habe ich irgendwas nicht ganz richtig gemacht: Das Programm funktioniert nur, wenn man dem Compiler Optimierungen verbietet (?!?). Trotzdem ein Shoutout an &lt;a href=&#34;https://darkcoding.net/software/a-very-small-rust-binary-indeed/&#34;&gt;diesen Blogartikel&lt;/a&gt; und &lt;a href=&#34;https://sgibala.com/01-06-single-syscall-hello-world-part-2/&#34;&gt;diesen anderen Blogartikel&lt;/a&gt;, mit deren Hilfe ich das Kompilieren ohne libc und main zumindest hinreichend weit ans Laufen bekommen habe.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat Makefile
build:
    RUSTFLAGS=&amp;quot;-Copt-level=0 -Ctarget-cpu=native -Clink-args=-nostartfiles -Clink-args=-Wl,-n,-N,--no-dynamic-linker&amp;quot; cargo build --release

$ cat Cargo.toml
[package]
name = &amp;quot;minimal-memory-maps&amp;quot;
version = &amp;quot;0.1.0&amp;quot;
edition = &amp;quot;2021&amp;quot;
[profile.dev]
panic = &amp;quot;abort&amp;quot;
[profile.release]
panic = &amp;quot;abort&amp;quot;

$ cat src/main.rs
#![no_std]
#![no_main]
use core::arch::asm;

#[repr(C)]
struct Timespec {
    pub tv_sec: i64,
    pub tv_nsec: i64,
}

const NR_NANOSLEEP: usize = 35;
const NR_EXIT: usize = 60;

#[no_mangle]
pub extern &amp;quot;C&amp;quot; fn _start() -&amp;gt; ! {
    let req = Timespec { tv_sec: 10, tv_nsec: 0 };
    let mut resp = Timespec { tv_sec: 0, tv_nsec: 0 };
    unsafe {
        // nanosleep(&amp;amp;req, &amp;amp;mut resp)
        let req_ptr = (&amp;amp;req as *const Timespec) as usize;
        let resp_ptr = (&amp;amp;mut resp as *mut Timespec) as usize;
        let ret: usize;
        asm!(
            &amp;quot;syscall&amp;quot;,
            inout(&amp;quot;rax&amp;quot;) NR_NANOSLEEP =&amp;gt; ret,
            in(&amp;quot;rdi&amp;quot;) req_ptr,
            in(&amp;quot;rsi&amp;quot;) resp_ptr,
            out(&amp;quot;rcx&amp;quot;) _,
            out(&amp;quot;r11&amp;quot;) _,
        );
        let exit_code = if ret == 0 { 0 } else { 1 };
        // exit(0)
        asm!(
            &amp;quot;syscall&amp;quot;,
            in(&amp;quot;rax&amp;quot;) NR_EXIT,
            in(&amp;quot;rdi&amp;quot;) exit_code,
            options(noreturn)
        )
    }
}

#[panic_handler]
fn my_panic(_info: &amp;amp;core::panic::PanicInfo) -&amp;gt; ! {
    loop {}
}
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:42" title="Rückblick: Speicherverwaltung"  />
          <chapter start="00:07:49" title="Was stellt uns das Betriebssystem bereit?"  />
          <chapter start="00:24:28" title="Vorbemerkungen zu klassischen Schutzmaßnahmen"  />
          <chapter start="00:40:39" title="Stack und Heap"  />
          <chapter start="00:42:23" title="Der Stapelspeicher"  />
          <chapter start="00:56:40" title="Der Haufenspeicher"  />
          <chapter start="00:58:53" title="Xyrills minimales sleep"  />
          <chapter start="01:02:47" title="Was sind vvar, vdso und vsyscall?"  />
      </chapters>
      <enclosure length="68049239" url="https://dl.xyrillian.de/noises/stp-045-speicherstruktur-aus-programmsicht.mp3" type="audio/mpeg"/>
      <enclosure length="40105500" url="https://dl.xyrillian.de/noises/stp-045-speicherstruktur-aus-programmsicht.ogg" type="audio/ogg"/>
      <enclosure length="24811179" url="https://dl.xyrillian.de/noises/stp-045-speicherstruktur-aus-programmsicht.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/045-speicherstruktur-aus-programmsicht/</guid>
    <pubDate>Thu, 19 Oct 2023 19:45:00 GMT</pubDate>
    <itunes:duration>70:32</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP044: Zufall</itunes:title>
    <itunes:episode>44</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP044: Zufall</title>
    <link>https://schluesseltechnologie-podcast.de/044-zufall</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wir befassen uns unter anderem mit der Erstellung, Bewertung und dem Verbrauch von Zufall.
Außerdem in dieser Folge: Quantenmechanik, wildes Tastendrücken und Schiffe versenken.</itunes:summary>
    <description>Wir befassen uns unter anderem mit der Erstellung, Bewertung und dem Verbrauch von Zufall.
Außerdem in dieser Folge: Quantenmechanik, wildes Tastendrücken und Schiffe versenken.</description>
    <content:encoded>&lt;p&gt;Wir befassen uns unter anderem mit der Erstellung, Bewertung und dem Verbrauch von Zufall.
Außerdem in dieser Folge: Quantenmechanik, wildes Tastendrücken und Schiffe versenken.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Wir haben ein Errata zu STP019. Alex schreibt:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;DMA kenne ich anders, nicht das der Prozess direkt über die MMU auf ein Peripheriegerät durchgreift, sondern dass ein Peripheriegerät ohne Beteiligung der CPU Daten vom/zum Hauptspeicher übertragen kann.
Man muss dem Kernel allerdings beim Reservieren von Speicher für DMA
sagen, dass das ein DMA Buffer sein soll, weil DMA selbst nicht über die MMU läuft sondern vom Peripheriegerät direkt von/zur physikalischen Adresse.
Den eigentlichen Transfer zwischen Buffer und Peripherie muss
man dann aber per Software entsprechend aktivieren.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Xyrill antwortet: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Direct_Memory_Access&amp;amp;oldid=232059711&#34;&gt;Ja, stimmt.&lt;/a&gt; Nun zur eigentlichen Folge:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Intro-Intro: in Referenz auf den klassischen Dilbert-Cartoon, den man &lt;a href=&#34;https://www.americanscientist.org/article/the-quest-for-randomness&#34;&gt;zum Beispiel hier&lt;/a&gt; sieht&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum sind hochwertige Zufallszahlen wichtig?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe STP043: Erzeugung eines RSA-Schlüsselpaars benötigt zwei große und &lt;strong&gt;geheime&lt;/strong&gt; Primzahlen&lt;/li&gt;
&lt;li&gt;geheim = niemand anders kann es raten = zufällig&lt;/li&gt;
&lt;li&gt;oder zumindest von Zufall nicht zu unterscheiden (&lt;strong&gt;Pseudozufall&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was ist &amp;quot;guter&amp;quot; Zufall?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;erstaunlich schwer zu definieren&lt;/li&gt;
&lt;li&gt;vielleicht Periodenlänge (Dauer, bis sich die Zahlenfolge wiederholt)&lt;/li&gt;
&lt;li&gt;vielleicht Gleichverteilung der Auftrittshäufigkeit von Teilfolgen (jede einstellige/zweistellige/dreistellige/etc. Zahl sollte gleich oft in der Folge vorkommen)&lt;/li&gt;
&lt;li&gt;Problem: die Folge &amp;quot;2236067977499789805051478...&amp;quot; ist nach all diesen Maßstäben guter Zufall – bis man bemerkt, dass das die Dezimalstellen der Quadratwurzel von 5 sind&lt;/li&gt;
&lt;li&gt;guter (aber unpraktikabler) Test: hohe &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kolmogorow-Komplexit%C3%A4t&amp;amp;oldid=207581838&#34;&gt;Kolmogorow-Komplexität&lt;/a&gt; (siehe STP025)&lt;/li&gt;
&lt;li&gt;Errata: Beim Nachhören ist mir aufgefallen, dass die Kolmogorow-Komplexität eines Pseudozufallszahlengenerators nie besonders groß sein kann, da der Zufallszahlengenerator ja gerade ein Programm ist, was die entsprechende Zahlenfolge erzeugen kann. Das ist kein praktisches Problem, da das Programm im Kolmogorow-Sinne auch die Startwerte des Zufallszahlengenerators umfassen müsste, die aber gerade geheim sind.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;echter&amp;quot; Zufall kommt aus physikalischen Zufallszahlengeneratoren (Hardware-RNG)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. thermisches Rauschen eines elektrischen Widerstandes&lt;/li&gt;
&lt;li&gt;z.B. radioaktive Zerfallsvorgänge&lt;/li&gt;
&lt;li&gt;z.B. atmosphärisches Rauschen (Empfang auf einem Frequenzband, auf dem keiner sendet)&lt;/li&gt;
&lt;li&gt;z.B. &lt;a href=&#34;https://www.semanticscholar.org/paper/True-Random-Number-Generator-using-Fish-Tank-Image-Katyal-Mishra/374875fdad184959a7e13eafe9c02bbd44e0aca7&#34;&gt;Abfilmen eines Aquariums :)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;siehe auch: Würfeln, Lottozahlen&lt;/li&gt;
&lt;li&gt;Probleme: nicht in jedem Computer verfügbar, pro Zeiteinheit begrenzte Menge von Zufall&lt;/li&gt;
&lt;li&gt;Idee: Erzeugung beliebiger Mengen von Pseudozufall aus einem festen Algorithmus&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kongruenzgenerator&amp;amp;oldid=214494984#Linearer_Kongruenzgenerator&#34;&gt;Linearer Kongruenzgenerator&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Parameter: geheime Ganzzahlen &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, &lt;code&gt;m&lt;/code&gt;; Startwert &lt;code&gt;y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Erzeugung einer Folge von Pseudozufallszahlen durch die Formel &lt;code&gt;y&#39; = (a * y &#43; b) mod m&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Problem: bereits aus wenigen aufeinander folgenden &lt;code&gt;y&lt;/code&gt;-Werten kann man auf die geheimen Zahlen zurückschließen (Ansatz vergleichbar mit Kryptoanalyse)&lt;/li&gt;
&lt;li&gt;in besseren Pseudozufallszahlengeneratoren wird nach jedem Schritt nur ein kleiner Teil des Zustands herausgegeben, um Analyse zu erschweren&lt;/li&gt;
&lt;li&gt;Anwendungsbereich für einfache Pseudozufallszahlengeneratoren: nicht sicherheitsrelevanter Pseudozufall, z.B. Ereignisse in Computerspielen oder Randomisierung von automatisierten Tests (hier kann Reproduzierbarkeit aus einem Startwert für spätere Nachvollziehung hilfreich sein)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;für sicherheitsrelevante Anwendungen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kryptographisch_sicherer_Zufallszahlengenerator&amp;amp;oldid=234755968&#34;&gt;Kryptografisch sichere Zufallszahlengeneratoren&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beispielidee: mit einem Hardware-RNG ein paar Bytes als Startwerte erzeugen, wiederholt mit AES-CTR (siehe STP043) verschlüsseln und die verschlüsselten Bits (oder Teile davon) als Ausgabe nehmen&lt;/li&gt;
&lt;li&gt;wenn man keinen Hardware-RNG hat, kann man Zufallsbits auch aus Beobachtung des normalen Betriebs extrahieren (z.B. Mikrosekundenbruchteile der Zeitstempel von Ereignissen wie Tastaturdrücken oder dem Empfang von Datenpaketen übers Netzwerk)&lt;/li&gt;
&lt;li&gt;unter Unix: &lt;code&gt;/dev/random&lt;/code&gt; vs. &lt;code&gt;/dev/urandom&lt;/code&gt; ; ist aber unter Linux mittlerweile so gut wie synonym (&lt;a href=&#34;https://media.ccc.de/v/32c3-7441-the_plain_simple_reality_of_entropy&#34;&gt;siehe auch&lt;/a&gt;); Probleme nur beim Systemstart, wenn noch nicht genug Entropie vorliegt (siehe auch: haveged, VirtIO RNG, systemd-random-seed.service)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=1hs451PfFzQ&#34;&gt;Video: &amp;quot;How we solved the worst minigame in Zelda&#39;s history&amp;quot;&lt;/a&gt; (Errata: Xyrill hatte im Gespräch behauptet, dass das Video von Lowest Percent sei. Es ist aber von Linkus7.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Richtigstellung zu STP019"  />
          <chapter start="00:03:41" title="Intro und Intro und Prolog"  />
          <chapter start="00:09:46" title="Was ist guter Zufall?"  />
          <chapter start="00:21:48" title="Wo kommt der echte Zufall her?"  />
          <chapter start="00:29:23" title="Linearer Kongruenzgenerator"  />
          <chapter start="00:43:06" title="Kryptografisch sichere Zufallszahlengeneratoren"  />
          <chapter start="00:45:59" title="Abschweif: Schiffe versenken in Zelda"  />
          <chapter start="00:48:24" title="Die Saat des Zufalls auf Unixsystemen"  />
          <chapter start="00:55:33" title="Ausblick und Abschied"  />
      </chapters>
      <enclosure length="55008234" url="https://dl.xyrillian.de/noises/stp-044-zufall.mp3" type="audio/mpeg"/>
      <enclosure length="33780124" url="https://dl.xyrillian.de/noises/stp-044-zufall.ogg" type="audio/ogg"/>
      <enclosure length="20667275" url="https://dl.xyrillian.de/noises/stp-044-zufall.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/044-zufall/</guid>
    <pubDate>Thu, 28 Sep 2023 20:30:00 GMT</pubDate>
    <itunes:duration>56:57</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP043: Kryptografische Primitiven</itunes:title>
    <itunes:episode>43</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP043: Kryptografische Primitiven</title>
    <link>https://schluesseltechnologie-podcast.de/043-kryptografische-primitiven</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Im zweiten Teil unserer Reihe über Kryptografie besehen wir uns einzelne Klassen von Bausteinen, welche dann zu Verschlüsselungsprotokollen zusammengesetzt werden können.</itunes:summary>
    <description>Im zweiten Teil unserer Reihe über Kryptografie besehen wir uns einzelne Klassen von Bausteinen, welche dann zu Verschlüsselungsprotokollen zusammengesetzt werden können.</description>
    <content:encoded>&lt;p&gt;Im zweiten Teil unserer Reihe über Kryptografie besehen wir uns einzelne Klassen von Bausteinen, welche dann zu Verschlüsselungsprotokollen zusammengesetzt werden können.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückblick zu STP041&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kryptografische Systeme dienen dem Erreichen der vier Schutzziele (Vertraulichkeit, Integrität, Authentizität, Verbindlichkeit)&lt;/li&gt;
&lt;li&gt;Implementierung vollständiger Kryptosysteme braucht &lt;strong&gt;Primitiven&lt;/strong&gt; (Grundbausteine)&lt;/li&gt;
&lt;li&gt;heute: Vorstellung grundlegender Klassen von Primitiven&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Symmetrisches_Kryptosystem&amp;amp;oldid=197227672&#34;&gt;Symmetrische Verschlüsselung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schritt 1: Klartext (Plaintext) &#43; Schlüssel (Key) -&amp;gt; Geheimtext (Ciphertext)&lt;/li&gt;
&lt;li&gt;Schritt 2: Geheimtext &#43; selber Schlüssel -&amp;gt; Klartext&lt;/li&gt;
&lt;li&gt;üblicherweise als &lt;strong&gt;Blockchiffre&lt;/strong&gt; mit Beschränkung des Klartexts auf eine Blockgröße von z.B. 128 oder 256 Bits, übliche Schlüsselgrößen ähnlich groß&lt;/li&gt;
&lt;li&gt;zwei Probleme:
&lt;ol&gt;
&lt;li&gt;Wie verschlüsselt man mehr als einen Block?&lt;/li&gt;
&lt;li&gt;Wie einigt man sich auf einen gemeinsamen Schlüssel, ohne dass Beobachter den Schlüssel abgreifen können?&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zu Problem 1: Erweiterung der Blockchiffre zu einem &lt;strong&gt;Stromchiffre&lt;/strong&gt; mittels eines geeigneten &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Betriebsmodus_(Kryptographie)&amp;amp;oldid=209978117&#34;&gt;Betriebsmodus&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datenstrom wird in einzelne Blöcke der gewünschten Größe zerteilt; Betriebsmodus beschreibt dann die Anwendung des Blockchiffre auf die Folge von Blöcken&lt;/li&gt;
&lt;li&gt;einfachster Betriebsmodus ist ECB (Electronic Codebook): der Blockchiffre wird auf jeden Block komplett separat angewendet -&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Block_cipher_mode_of_operation&amp;amp;oldid=1154901199#Electronic_codebook_(ECB)&#34;&gt;offensichtliche Probleme (siehe Bild im verlinkten Abschnitt)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bei den meisten modernen Betriebsmodi werden meist Daten aus dem aktuellen Blockchiffre in den nächsten Block übertragen, um die Analyse des Geheimtextes zu erschweren -&amp;gt; Problem: schwer parallelisierbar, Lesezugriff nur sequentiell&lt;/li&gt;
&lt;li&gt;CTR-Betriebsmodus (Counter): jeder Block wird beim Verschlüsseln mit einem Zähler kombiniert, damit sich keine wiederkehrenden Muster wie bei ECB ergeben -&amp;gt; Vorteil: wahlfreier Schreib- und Lesezugriff möglich (interessant für Festplattenverschlüsselung)&lt;/li&gt;
&lt;li&gt;siehe unten: Beispiel für die Geschwindigkeit moderner Stromchiffern insb. mit Hardwareunterstützung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$ cryptsetup benchmark
...
#     Algorithm |       Key |      Encryption |      Decryption
...
        aes-xts        512b      3547,4 MiB/s      3540,4 MiB/s
    serpent-xts        512b       742,7 MiB/s       729,4 MiB/s
    twofish-xts        512b       398,9 MiB/s       404,8 MiB/s
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;zu Problem 2 (Einigung auf einen gemeinsamen Schlüssel) zwei Ansätze:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Schlüsselaustausch-Protokolle wie &lt;a href=&#34;https://media.ccc.de/v/ds21-122-schlsseltechnologie-live-das-diffie-hellman-protokoll&#34;&gt;Diffie-Hellman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;asymmetrische Verschlüsselung&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Asymmetrisches_Kryptosystem&amp;amp;oldid=232100921&#34;&gt;Asymmetrische Verschlüsselung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;statt einem einzelnen Schlüssel ein &lt;strong&gt;Schlüsselpaar&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;wir haben keine gute Bildmetapher dazu; Xyrills Vorschlag: zwei Ratschen; eine dreht nur nach rechts und eine nur nach links&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 1: Klartext &#43; &lt;strong&gt;öffentlicher Schlüssel&lt;/strong&gt; -&amp;gt; Geheimtext&lt;/li&gt;
&lt;li&gt;Schritt 2: Geheimtext &#43; &lt;strong&gt;privater Schlüssel&lt;/strong&gt; -&amp;gt; Klartext&lt;/li&gt;
&lt;li&gt;Beispiel &lt;a href=&#34;https://www.youtube.com/playlist?list=PL6_AeYXBHF0OWS1GxV6lfivdReSyKhv3l&#34;&gt;RSA&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;Grundgeheimnis sind zwei sehr große Primzahlen (&lt;code&gt;p&lt;/code&gt; und &lt;code&gt;q&lt;/code&gt;, jeweils z.B. 500 Dezimalstellen)&lt;/li&gt;
&lt;li&gt;aus dem Produkt dieser Primzahlen (&lt;code&gt;N = p * q&lt;/code&gt;) werden zwei weitere Zahlen (&lt;code&gt;d&lt;/code&gt; und &lt;code&gt;e&lt;/code&gt;) mittels günstiger Rechenoperationen abgeleitet&lt;/li&gt;
&lt;li&gt;dann ist der öffentliche Schlüssel das Zahlenpaar &lt;code&gt;d,N&lt;/code&gt; und der private Schlüssel das Zahlenpaar &lt;code&gt;e,N&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ableitung des privaten aus dem öffentlichen Schlüssel erfordert Primzahlfaktorisierung von &lt;code&gt;N&lt;/code&gt;, was extrem teuer ist (siehe Beispiel unten)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Problem 1 teilweise gelöst: Empfänger muss nur seinen öffentlichen Schlüssel offenbaren, der kein Geheimnis enthält&lt;/li&gt;
&lt;li&gt;Problem 2 ungelöst: auch asymmetrische Verschlüsselung arbeitet nur pro Block&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$ time factor 1350918345091284620469824069824602946802496824562049682046982406982406980
1350918345091284620469824069824602946802496824562049682046982406982406980: 2 2 3 5 7 193 941 5077 3488395463852632669275489205712092360621005476304268749586169
factor   1,92s user 0,00s system 99% cpu 1,926 total
$ time factor 1350918345091284620469824069824602946802496824562049682046982406982406981
1350918345091284620469824069824602946802496824562049682046982406982406981: 11 3931 5242879872157046321 5958863859256362497309559371496021100634736129421
factor   462,19s user 0,01s system 99% cpu 7:43,24 total
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;neues Problem: asymmetrische Verfahren sind sehr viel rechenaufwändiger als symmetrische Verfahren -&amp;gt; &lt;strong&gt;hybrides Kryptosystem&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;asymmetrische Verschlüsselung wird nur zum Austausch eines symmetrischen Schlüssels verwendet&lt;/li&gt;
&lt;li&gt;Beispiel &amp;quot;verschlüsselte E-Mail&amp;quot;: Alice hat den öffentlichen Schlüssel &lt;code&gt;O&lt;/code&gt;, Bob hat den privaten Schlüssel &lt;code&gt;P&lt;/code&gt; dazu
&lt;ul&gt;
&lt;li&gt;Alice erstellt die Nachricht &lt;code&gt;N&lt;/code&gt; im Klartext&lt;/li&gt;
&lt;li&gt;Alice erzeugt einen zufälligen symmetrischen Schlüssel &lt;code&gt;S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Alice verschlüsselt &lt;code&gt;N&lt;/code&gt; mit &lt;code&gt;S&lt;/code&gt; und einem Stromchiffre zu &lt;code&gt;N&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Alice verschlüsselt &lt;code&gt;S&lt;/code&gt; mit &lt;code&gt;O&lt;/code&gt; zu &lt;code&gt;S&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Alice schickt &lt;code&gt;N&#39;&lt;/code&gt; und &lt;code&gt;S&#39;&lt;/code&gt; an Bob&lt;/li&gt;
&lt;li&gt;Bob entschlüsselt &lt;code&gt;S&#39;&lt;/code&gt; mit &lt;code&gt;P&lt;/code&gt; zu &lt;code&gt;S&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Bob entschlüsselt &lt;code&gt;N&#39;&lt;/code&gt; mit &lt;code&gt;S&lt;/code&gt; zu &lt;code&gt;N&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zweite Anwendung von asymmetrischer Kryptografie: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Digitale_Signatur&amp;amp;oldid=234047519&#34;&gt;Signaturen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verschlüsselung: vorwärts mit dem öffentlichen Schlüssel, rückwärts mit dem privaten Schlüssel&lt;/li&gt;
&lt;li&gt;bei Signierung umgekehrt: vorwärts mit dem privaten Schlüssel (Erzeugung), rückwärts mit dem öffentlichen Schlüssel (Überprüfung)&lt;/li&gt;
&lt;li&gt;im Detail: erst Komprimierung der zu signierenden Daten auf eine feste Größe mittels einer Hashfunktion (siehe STP004), dann Verschlüsselung dieses Hash-Wertes mit dem privaten Schlüssel&lt;/li&gt;
&lt;li&gt;Überprüfung: Berechnung des Hashes auf dieselbe Weise, Vergleich mit entschlüsselter Signatur&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;noch eine Primitive zum Schluss: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Secret-Sharing&amp;amp;oldid=201132633&#34;&gt;Geheimnisteilung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: Ein Geheimnis soll in N Teile so aufgeteilt werden, dass M beliebige Teile zum Entschlüsseln genutzt werden können.&lt;/li&gt;
&lt;li&gt;Beispiel: Backup des Passwortspeichers in 5 Fragmente aufteilen und bei 5 Freunden so einlagern, dass man später nur 3 beliebige Fragmente zum Wiederherstellen braucht&lt;/li&gt;
&lt;li&gt;Illustrationen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Visuelle_Kryptographie&amp;amp;oldid=204692019&#34;&gt;Visuelle Kryptografie&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Secret_sharing&amp;amp;oldid=1152303869#Blakley&#39;s_scheme&#34;&gt;Blakley-Schema&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://anerzaehlt.net/aes-256/&#34;&gt;Anerzählt Podcast zu AES&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=lt7uW6vDk00&#34;&gt;Whitfield Diffie und Moxie Marlinspike und eine Flasche Whiskey auf der Bühne&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:23" title="Vorbemerkung zu Primitiven"  />
          <chapter start="00:06:57" title="Symmetrische Verschlüsselung"  />
          <chapter start="00:10:48" title="Problem 1: Wie verschlüsselt man mehr als einen Block?"  />
          <chapter start="00:29:55" title="Problem 2: Wie einigt man sich auf einen Schlüssel?"  />
          <chapter start="00:31:35" title="Abschweif zu bekannten Kryptografen"  />
          <chapter start="00:34:09" title="Asymmetrische Verschlüsselung"  />
          <chapter start="00:41:35" title="Erzeugung von Schlüsselpaaren"  />
          <chapter start="00:45:05" title="Beispiel für Primfaktorzerlegung"  />
          <chapter start="00:50:22" title="Das Problem mit dem Vertrauen"  />
          <chapter start="00:54:15" title="Das Problem mit den Kosten"  />
          <chapter start="00:57:47" title="Signaturen"  />
          <chapter start="01:03:07" title="Geheimnisteilung"  />
      </chapters>
      <enclosure length="70055209" url="https://dl.xyrillian.de/noises/stp-043-kryptografische-primitiven.mp3" type="audio/mpeg"/>
      <enclosure length="41450160" url="https://dl.xyrillian.de/noises/stp-043-kryptografische-primitiven.ogg" type="audio/ogg"/>
      <enclosure length="25698560" url="https://dl.xyrillian.de/noises/stp-043-kryptografische-primitiven.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/043-kryptografische-primitiven/</guid>
    <pubDate>Thu, 07 Sep 2023 18:50:00 GMT</pubDate>
    <itunes:duration>72:37</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP042: Cursed Computer Iceberg Meme</itunes:title>
    <itunes:episode>42</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP042: Cursed Computer Iceberg Meme</title>
    <link>https://schluesseltechnologie-podcast.de/042-the-cursed-computer-iceberg-meme</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In der Episode mit dieser Nummer werden wir aus Günden vom normalen Programm abweichen. Während diese Gründe für den durchschnittlichen {Nerd|Geek} gut verständlich sein dürften, werden diese für alle Anderen ausführlich erklärt. Xyrill greift zu diesem Anlass völlig wahllos einige lustige und/oder deprimirende Aspekte aus dem Eisberg der Computerei heraus.</itunes:summary>
    <description>In der Episode mit dieser Nummer werden wir aus Günden vom normalen Programm abweichen. Während diese Gründe für den durchschnittlichen {Nerd|Geek} gut verständlich sein dürften, werden diese für alle Anderen ausführlich erklärt. Xyrill greift zu diesem Anlass völlig wahllos einige lustige und/oder deprimirende Aspekte aus dem Eisberg der Computerei heraus.</description>
    <content:encoded>&lt;p&gt;In der Episode mit dieser Nummer werden wir aus Günden vom normalen Programm abweichen. Während diese Gründe für den durchschnittlichen {Nerd|Geek} gut verständlich sein dürften, werden diese für alle Anderen ausführlich erklärt. Xyrill greift zu diesem Anlass völlig wahllos einige lustige und/oder deprimirende Aspekte aus dem Eisberg der Computerei heraus.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen.&lt;/p&gt;
&lt;p&gt;– Douglas Adams, Das Restaurant am Ende des Universums. Ullstein, 1994. ISBN 3-548-22492-X. Deutsche Übersetzung von Benjamin Schwarz. Seite 11.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vorbemerkung: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=42_(Antwort)&amp;amp;oldid=231586666&#34;&gt;Die Zahl 42&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Per_Anhalter_durch_die_Galaxis&amp;amp;oldid=233711503&#34;&gt;Per Anhalter durch die Galaxis&lt;/a&gt; von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Douglas_Adams&amp;amp;oldid=232957166#Rezeption&#34;&gt;Douglas Adams&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in der Nerdkultur einflussreich durch eine Kombination aus klassisch britischem schwarzem Humor und einprägsam idiosynkratischen Vignetten&lt;/li&gt;
&lt;li&gt;42 = die Antwort auf die endgültige Frage nach dem Leben, dem Universum und dem ganzen Rest&lt;/li&gt;
&lt;li&gt;mehr zu Douglas Adams &lt;a href=&#34;https://freakshow.fm/fs266-mehr-bums&#34;&gt;in der Freak Show, Folge 266&lt;/a&gt; (siehe Kapitelmarke &amp;quot;Douglas Adams&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was könnte dieser Referenz passen? Vielleicht das &lt;a href=&#34;https://suricrasia.online/iceberg/&#34;&gt;Cursed Computer Iceberg Meme&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eisberg-Meme: möglicherweise inspiriert von Freuds Vorstellung des Bewusstseins als ein Eisberg, von dem der größte Teil (das Unterbewusstsein) unter Wasser liegt und nicht sichtbar ist&lt;/li&gt;
&lt;li&gt;Xyrill findet die Kategorieneinteilung etwas merkwürdig; wir werden auf fast allen Ebenen Sachen finden, die schon in vergangenen Folgen besprochen wurden&lt;/li&gt;
&lt;li&gt;aus Zeitgründen nur eine kleine Auswahl, analog zu STP035&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Above the Iceberg&amp;quot; - Oberhalb des Eisberges&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bereits besprochen:
&lt;ul&gt;
&lt;li&gt;Y2K, Jahr-2038-Bug: siehe STP016 bzw. STP037&lt;/li&gt;
&lt;li&gt;Brainfuck: siehe STP033&lt;/li&gt;
&lt;li&gt;TCP/IP über Brieftaube: siehe STP035&lt;/li&gt;
&lt;li&gt;Heisenbugs: siehe STP038&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bogosort&amp;amp;oldid=232113093&#34;&gt;Bogosort&lt;/a&gt;: der beste Sortieralgorithmus (siehe auch STP029)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://rosettacode.org/wiki/Sorting_algorithms/Sleep_sort#Go&#34;&gt;Sleepsort&lt;/a&gt;: der parallelste Sortieralgorithmus&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.vice.com/en/article/qkjv9x/a-catalogue-of-all-the-devices-that-can-somehow-run-doom&#34;&gt;DOOM auf einem Toaster&lt;/a&gt;: eine wichtige Erinnerung, dass diese ganzen &amp;quot;smarten&amp;quot; Geräte vollwertige Computer sind
&lt;ul&gt;
&lt;li&gt;siehe auch: Wahlcomputer-Debatte (dazu passend &lt;a href=&#34;https://c3d2.de/news/pentacast-55-wahl.html&#34;&gt;Pentacast 55&lt;/a&gt; und &lt;a href=&#34;https://cre.fm/cre039-der-nedap-hack&#34;&gt;CRE039 der NEDAP-Hack&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://humanwhocodes.com/blog/2010/01/12/history-of-the-user-agent-string/&#34;&gt;&amp;quot;All web browsers pretend to be each other&amp;quot;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel: aktueller Edge meldet sich als &lt;code&gt;User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;On the Iceberg&amp;quot; - Auf dem Eisberg&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bereits besprochen:
&lt;ul&gt;
&lt;li&gt;Gene wurden umbenannt wegen Excel: siehe STP012&lt;/li&gt;
&lt;li&gt;Fast Inverse Square Root: siehe STP037&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://gwern.net/turing-complete&#34;&gt;aus Versehen turingvollständig&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Turing-Vollständigkeit heißt, dass ein System alle berechenbaren Funktionen berechnen kann (gegeben genug Zeit und Speicherplatz)&lt;/li&gt;
&lt;li&gt;überraschend wenig Voraussetzungen (siehe Brainfuck), im wesentlichen reicht musterbasierte Textersetzung und echte Rekursion&lt;/li&gt;
&lt;li&gt;Implikationen für den Erfolg von Sicherheitsmaßnahmen wie Sandboxing (siehe STP023)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bootstrapping_(Programmierung)&amp;amp;oldid=198644005&#34;&gt;Self-Hosting Languages&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;nicht das gleiche Bootstrapping wie in STP020&lt;/li&gt;
&lt;li&gt;siehe auch &amp;quot;Trusting Trust&amp;quot; weiter unten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://web.mit.edu/jemorris/humor/500-miles&#34;&gt;&amp;quot;Wir können keine E-Mail weiter als 500 Meilen schicken&amp;quot;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Techniker macht ein Serverupdate, bei dem aus Versehen der Mailserver durch eine ältere Version ersetzt wird&lt;/li&gt;
&lt;li&gt;alter Mailserver versteht Teile der Konfigurationsdatei nicht, nimmt für alle unbekannten Sachen Null an&lt;/li&gt;
&lt;li&gt;Null erlaubte Wartezeit beim Verbindungsaufbau ergibt ein reales Zeitfenster von etwa 3ms; in Lichtgeschwindigkeit etwas über 500 Meilen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Below the Water&amp;quot; - Unter der Wasserlinie&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bereits besprochen:
&lt;ul&gt;
&lt;li&gt;FDIV-Bug: siehe STP037&lt;/li&gt;
&lt;li&gt;CAP-Theorem: siehe STP027&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf&#34;&gt;Reflections on Trusting Trust&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Malbolge&amp;amp;oldid=225952669&#34;&gt;Malbolge&lt;/a&gt;: die frustrierendste Programmiersprache der Welt&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Null_Island&amp;amp;oldid=219228878&#34;&gt;Null Island&lt;/a&gt;: ein Insider-Witz unter Geografen
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.openstreetmap.org/changeset/135903901&#34;&gt;Die 0,0-Boje bei OpenStreetMap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wir haben&#39;s trotz stark beschränkter Auswahl nicht mal bis zur Hälfte des Eisbergs geschafft... wir brauchen wohl mal einen zweiten Teil hiervon. :) Aber Xyrill sah noch etwas Bekanntes an der unteren Spitze des Eisbergs:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;if you ever code something that &amp;quot;feels like a hack but it works,&amp;quot; just remember that a CPU is literally a rock that we tricked into thinking&lt;/p&gt;
&lt;p&gt;not to oversimplify: first you have to flatten the rock and put lightning inside it&lt;/p&gt;
&lt;p&gt;– &lt;a href=&#34;https://twitter.com/daisyowl/status/841806379962646532&#34;&gt;@daisyowl auf Twitter&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Prolog"  />
          <chapter start="00:07:55" title="Einführung für Anhalterreisende"  />
          <chapter start="00:13:01" title="Cursed Computer Iceberg Meme"  />
          <chapter start="00:17:25" title="Oberhalb des Eisberges"  />
          <chapter start="00:45:45" title="Auf dem Eisberg"  />
          <chapter start="01:08:28" title="Unter der Wasserlinie"  />
      </chapters>
      <enclosure length="80063592" url="https://dl.xyrillian.de/noises/stp-042-the-cursed-computer-iceberg-meme.mp3" type="audio/mpeg"/>
      <enclosure length="48805554" url="https://dl.xyrillian.de/noises/stp-042-the-cursed-computer-iceberg-meme.ogg" type="audio/ogg"/>
      <enclosure length="29871166" url="https://dl.xyrillian.de/noises/stp-042-the-cursed-computer-iceberg-meme.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/042-the-cursed-computer-iceberg-meme/</guid>
    <pubDate>Thu, 17 Aug 2023 21:45:00 GMT</pubDate>
    <itunes:duration>83:03</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP041: Grundlagen der Kryptografie</itunes:title>
    <itunes:episode>41</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP041: Grundlagen der Kryptografie</title>
    <link>https://schluesseltechnologie-podcast.de/041-grundlagen-der-kryptografie</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Diesmal gibt es den Einstieg in ein Thema, vor dem wir uns schon eine Weile gedrückt haben.
Dieses heutzutage essenzielle und gleichzeitug &lt;strong&gt;subtile&lt;/strong&gt; Gebiet werden wir auch aufgrund seiner Tiefe über mehrere Episoden aufteilen.</itunes:summary>
    <description>Diesmal gibt es den Einstieg in ein Thema, vor dem wir uns schon eine Weile gedrückt haben.
Dieses heutzutage essenzielle und gleichzeitug &lt;strong&gt;subtile&lt;/strong&gt; Gebiet werden wir auch aufgrund seiner Tiefe über mehrere Episoden aufteilen.</description>
    <content:encoded>&lt;p&gt;Diesmal gibt es den Einstieg in ein Thema, vor dem wir uns schon eine Weile gedrückt haben.
Dieses heutzutage essenzielle und gleichzeitug &lt;strong&gt;subtile&lt;/strong&gt; Gebiet werden wir auch aufgrund seiner Tiefe über mehrere Episoden aufteilen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Definition laut &lt;a href=&#34;https://de.wiktionary.org/w/index.php?title=Kryptografie&amp;amp;oldid=9657177&#34;&gt;Wiktionary&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Kryptografie&amp;quot;, aus griechisch κρυπτός (kryptos) „verborgen“ und -γραφία (graphia), zum Verb γράφειν (graphein) „schreiben“ gebildet&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;Informatik, Mathematik:&lt;/em&gt; Wissenschaft der Verschlüsselung von Informationen&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Psychologie:&lt;/em&gt; absichtslos entstandene Kritzelzeichnung eines Erwachsenen&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Warum Verschlüsselung? Vier &lt;strong&gt;Schutzziele&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vertraulichkeit:&lt;/strong&gt; Eine Nachricht soll nur von berechtigten Personen oder Maschinen gelesen werden dürfen.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrität:&lt;/strong&gt; Nachrichten sollen nachweislich vollständig und unverändert sein.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentizität:&lt;/strong&gt; Die Nachricht soll ihrem tatsächlichen Absender zugeordnet werden können.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verbindlichkeit:&lt;/strong&gt; Der Absender einer Nachricht soll seine Urheberschaft nicht abstreiten können.&lt;/li&gt;
&lt;li&gt;Beispiele aus der analogen Welt: Verträge, Geheimnisträger:innen (Anwält:innen, Geistliche, Mediziner:innen, etc.)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://digitalcourage.de/nichts-zu-verbergen&#34;&gt;&amp;quot;Ich hab doch nichts zu verbergen&amp;quot;&lt;/a&gt; -&amp;gt; Unterschied zwischen &amp;quot;privat&amp;quot; und &amp;quot;geheim&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verschlüsselung im engeren Sinne: Übertragung eines &lt;strong&gt;Klartext&lt;/strong&gt; (&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Plaintext&amp;amp;oldid=1147935435&#34;&gt;Plaintext&lt;/a&gt;) in einen &lt;strong&gt;Geheimtext&lt;/strong&gt; (&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Plaintext&amp;amp;oldid=1147935435&#34;&gt;Ciphertext&lt;/a&gt;) und später wieder zurück&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel für (historisch signifikanten) Ciphertext: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Zimmermann-Depesche&amp;amp;oldid=232609215&#34;&gt;Zimmermann-Depesche&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;die Relation zwischen Klartext und Ciphertext wird vermittelt durch einen &lt;strong&gt;Schlüssel&lt;/strong&gt;, also eine Folge von Bits fester Länge (je nach Verfahren zwischen 128 Bits bis zu 4096 Bits)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundbausteine eines Kryptosystems: &lt;strong&gt;Primitiven&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel für eine Klasse von Primitiven: symmetrische Verschlüsselung (Funktionsprinzip: Klartext &#43; Schlüssel -&amp;gt; Geheimtext, Geheimtext &#43; selber Schlüssel -&amp;gt; Klartext)&lt;/li&gt;
&lt;li&gt;Qualitätsmaßstab: Angreifer mit Zugriff auf den Geheimtext soll nicht auf den Klartext schließen können&lt;/li&gt;
&lt;li&gt;immer möglich: Angriff nach &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Brute-Force-Methode&amp;amp;oldid=230198355&#34;&gt;Brute-Force-Methode&lt;/a&gt;, also Durchprobieren aller möglichen Schlüssel (Beispiel: Zahlenschloss mit vierstelliger PIN)&lt;/li&gt;
&lt;li&gt;praktischer Maßstab: Brechen einer Verschlüsselung soll nicht weniger als &lt;code&gt;2^100&lt;/code&gt; Rechenoperationen erfordern (&lt;code&gt;2^100 = 1.267... * 10^30&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Rechenbeispiel: Xyrills Grafikkarte kann im Idealfall etwa 64 TFLOPS liefern, also 64 Trillionen Rechenoperationen pro Sekunde; bei dieser Geschwindigkeit benötigen &lt;code&gt;2^100&lt;/code&gt; Rechenoperationen etwa 627 Millionen Jahre&lt;/li&gt;
&lt;li&gt;Seitenleiste: Quantencomputer sind nicht automatisch Game Over, aber es gibt aktive Forschung an &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Post-Quanten-Kryptographie&amp;amp;oldid=228540985&#34;&gt;Post-Quanten-Kryptografie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Primitiven alleine machen noch kein vollständiges Kryptosystem&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;die tollste Festplattenverschlüsselung hilft nicht, wenn ich das Passwort am Monitor kleben habe :)&lt;/li&gt;
&lt;li&gt;besonders spannend: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Seitenkanalattacke&amp;amp;oldid=218845820&#34;&gt;Seitenkanal-Angriffe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Beispiel: je nach Bitfolge im Schlüssel dauert das Entschlüsseln unterschiedlich lang oder braucht unterschiedlich viel Energie oder erzeugt unterschiedlich viel Strahlung&lt;/li&gt;
&lt;li&gt;Beispiel: Login mit Benutzername und Passwort sollte sich bei falschem Passwort genauso verhalten wie bei nicht vorhandenem Benutzerkonto&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vorschau&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nächstes Mal (STP042) was ganz anderes... aber dann!&lt;/li&gt;
&lt;li&gt;STP043: Überblick über Klassen von Primitiven (Fokus auf das allgemeine Verhalten anstatt auf konkrete mathematische Konstruktion)&lt;/li&gt;
&lt;li&gt;STP044: Starke Kryptografie ist kein Zufall... oder doch?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://media.ccc.de/v/ds21-122-schlsseltechnologie-live-das-diffie-hellman-protokoll&#34;&gt;Schlüsseltechnologie Live: Das Diffie-Hellman-Protokoll&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kerckhoffs%E2%80%99_Prinzip&amp;amp;oldid=213145792&#34;&gt;Kerckhoffs&#39; Prinzip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://xkcd.com/538/&#34;&gt;XKCD 538: Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/crypto/subtle&#34;&gt;crypto/subtle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Begrüßung"  />
          <chapter start="00:01:15" title="Definition"  />
          <chapter start="00:03:06" title="Warum Verschlüsselung? - Schutzziele"  />
          <chapter start="00:16:05" title="Begriffsklärung"  />
          <chapter start="00:20:34" title="Schlüssellängen"  />
          <chapter start="00:22:25" title="Kryptografische Primitiven"  />
          <chapter start="00:28:30" title="Ansätze um Schlüssel zu knacken"  />
          <chapter start="00:42:57" title="OPSEC: das Passwort am Monitor"  />
          <chapter start="00:45:54" title="Seitenkanalangriffe"  />
          <chapter start="00:59:00" title="Polizei und Geheimdienste"  />
          <chapter start="01:03:41" title="Eichhörnchentaktik: Schlüssel teilweise ermitteln"  />
          <chapter start="01:06:09" title="Ausblick"  />
      </chapters>
      <enclosure length="32507748" url="https://dl.xyrillian.de/noises/stp-041-grundlagen-der-kryptografie.mp3" type="audio/mpeg"/>
      <enclosure length="44939604" url="https://dl.xyrillian.de/noises/stp-041-grundlagen-der-kryptografie.ogg" type="audio/ogg"/>
      <enclosure length="24646992" url="https://dl.xyrillian.de/noises/stp-041-grundlagen-der-kryptografie.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/041-grundlagen-der-kryptografie/</guid>
    <pubDate>Thu, 27 Jul 2023 16:30:00 GMT</pubDate>
    <itunes:duration>67:02</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP040: Urheberrecht bei Programmen</itunes:title>
    <itunes:episode>40</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP040: Urheberrecht bei Programmen</title>
    <link>https://schluesseltechnologie-podcast.de/040-urheberrecht-bei-programmen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode soll es darum gehen, wer, wann, wie ein Urheberrecht erhält und es nutzen kann. Im Zweifel sogar postmortal. Oder eben nicht. Auch geht es darum, wie lange ein Urheberrecht aus wissenschaftlicher Sicht sinnvoll ist. Und sogar Hitler hat es in die Sendung geschafft.</itunes:summary>
    <description>In dieser Episode soll es darum gehen, wer, wann, wie ein Urheberrecht erhält und es nutzen kann. Im Zweifel sogar postmortal. Oder eben nicht. Auch geht es darum, wie lange ein Urheberrecht aus wissenschaftlicher Sicht sinnvoll ist. Und sogar Hitler hat es in die Sendung geschafft.</description>
    <content:encoded>&lt;p&gt;In dieser Episode soll es darum gehen, wer, wann, wie ein Urheberrecht erhält und es nutzen kann. Im Zweifel sogar postmortal. Oder eben nicht. Auch geht es darum, wie lange ein Urheberrecht aus wissenschaftlicher Sicht sinnvoll ist. Und sogar Hitler hat es in die Sendung geschafft.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Programmcode ist ein immaterielles Wirtschaftsgut -&amp;gt; jeder Programmierer sollte ein Grundverständnis für &lt;strong&gt;Immaterialgüterrecht&lt;/strong&gt; haben (neben Urheberrecht auch Patentrecht, Markenrecht, etc.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;obligatorische Vorbemerkungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Wir sind keine Rechtsanwälte. Das hier ist keine Rechtsberatung.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Fokus auf das deutsche Recht (insbesondere nicht auf das Copyright der englischen Rechtstradition)&lt;/li&gt;
&lt;li&gt;insbesondere Fokus auf das &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/&#34;&gt;UrhG&lt;/a&gt;, daneben noch zum Beispiel das &lt;a href=&#34;https://www.gesetze-im-internet.de/kunsturhg/&#34;&gt;KunstUrhG&lt;/a&gt; (Recht am eigenen Bild) oder das &lt;a href=&#34;https://www.gesetze-im-internet.de/arbnerfg/&#34;&gt;ArbnErfG&lt;/a&gt; (Arbeitnehmererfindungen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;erste Facette: &lt;strong&gt;Urheberpersönlichkeitsrecht&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__12.html&#34;&gt;§ 12 UrhG&lt;/a&gt;: &amp;quot;Der Urheber hat das Recht zu bestimmen, ob und wie sein Werk zu veröffentlichen ist.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__13.html&#34;&gt;§ 13 UrhG&lt;/a&gt;: &amp;quot;Der Urheber hat das Recht auf Anerkennung seiner Urheberschaft am Werk.&amp;quot; (aber keine Pflicht)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__14.html&#34;&gt;§ 14 UrhG&lt;/a&gt;: &amp;quot;Der Urheber hat das Recht, eine Entstellung oder eine andere Beeinträchtigung seines Werkes zu verbieten, die geeignet ist, seine berechtigten geistigen oder persönlichen Interessen am Werk zu gefährden.&amp;quot;&lt;/li&gt;
&lt;li&gt;im Allgemeinen nicht übertragbar, aber insb. für Computerprogramme &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__69b.html&#34;&gt;§ 69b UrhG&lt;/a&gt;: &amp;quot;Wird ein Computerprogramm von einem Arbeitnehmer in Wahrnehmung seiner Aufgaben oder nach den Anweisungen seines Arbeitgebers geschaffen, so ist ausschließlich der Arbeitgeber zur Ausübung aller vermögensrechtlichen Befugnisse an dem Computerprogramm berechtigt, sofern nichts anderes vereinbart ist.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zweite Facette: &lt;strong&gt;Verwertungsrecht&lt;/strong&gt; in &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/BJNR012730965.html#BJNR012730965BJNG000801377&#34;&gt;§§ 15 ff. UrhG&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Recht auf Vervielfältigung, Verbreitung, Ausstellung, Vortrag/Aufführung/Vorführung, Sendung, Bearbeitung/Umgestaltung, Verfilmung, etc.&lt;/li&gt;
&lt;li&gt;meistens Übertragung dieser Rechte, zum Beispiel bei Büchern auf Verlage oder bei Filmen auf Verleiher&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schranken des Urheberrechts: &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/BJNR012730965.html#BJNR012730965BJNG001302123&#34;&gt;§§ 44a ff. UrhG&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rechtspflege, Barrierefreiheit, Gebrauch bei religiösen Feierlichkeiten, Schulfunksendungen, Verbreitung öffentlicher Reden, Berichterstattung über Tagesereignisse, Zitate, Karikaturen/Parodien, &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__53.html&#34;&gt;Privatkopien&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;insb. für Programme &lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__69e.html&#34;&gt;§ 69e UrhG&lt;/a&gt;: &amp;quot;Die Zustimmung des Rechtsinhabers ist nicht erforderlich, wenn die Vervielfältigung des Codes oder die Übersetzung der Codeform [...] unerläßlich [sic] ist, um die erforderlichen Informationen zur Herstellung der Interoperabilität eines unabhängig geschaffenen Computerprogramms mit anderen Programmen zu erhalten, sofern folgende Bedingungen erfüllt sind: [...]&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Freie_Software&amp;amp;oldid=230150686&#34;&gt;Freie Software&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Open_Source&amp;amp;oldid=232516030&#34;&gt;Open-Source-Bewegung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Urkonzept im englischsprachigen Copyright: &lt;strong&gt;Public Domain&lt;/strong&gt; (willentliche Abtretung der Urheberrechte, im deutschen Urheberrecht nicht möglich)&lt;/li&gt;
&lt;li&gt;ab Beginn der Informatik: in der Forschung Behandlung von Programmcode wie wissenschaftliche Erkenntnisse, ohne Anwendung des Urheberrechts&lt;/li&gt;
&lt;li&gt;ab 1980er Jahre: Freie-Software-Bewegung -&amp;gt; subversive Nutzung des Copyright nicht zur Beschränkung, sondern zur Maximierung von Nutzbarkeit&lt;/li&gt;
&lt;li&gt;&amp;quot;Vier Grundfreiheiten&amp;quot;: Use, Study, Share, Modify -&amp;gt; &lt;strong&gt;Copyleft-Modell&lt;/strong&gt; (Urheber zwingt alle Nutzer, auch bei Folgenutzungen die vier Grundfreiheiten zu berücksichtigen)&lt;/li&gt;
&lt;li&gt;Gegenbewegung: &amp;quot;Open Source&amp;quot; -&amp;gt; schwächere Definition, quelloffene Software ohne Copyleft kann auch in unfreier Software verwendet werden&lt;/li&gt;
&lt;li&gt;Randbemerkung: diese Open-Source-Gemeinde hat bis auf den Namen nichts mit der &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Open_Source_Intelligence&amp;amp;oldid=231133805&#34;&gt;OSINT-Community&lt;/a&gt; zu tun&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;praktischer Hinweis für Programmierer: Schaut auf eure SBOM!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BOM = Bill of Material (zu deutsch: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=St%C3%BCckliste&amp;amp;oldid=228719182&#34;&gt;Stückliste/Materialliste&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;SBOM = Stückliste für Software (Welche Programme oder Programmbibliotheken werden als Teil meines Programms mit ausgeliefert?), &lt;a href=&#34;https://xkcd.com/2347/&#34;&gt;Symbolbild&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil der SBOM sind die Lizenzinformationen der verwendeten Programme und Bibliotheken&lt;/li&gt;
&lt;li&gt;SBOM ist auch sonst eine gute Idee; kann man auch zum automatisierten Suchen nach Sicherheitslücken verwenden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;netzpolitische Aspekte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__95a.html&#34;&gt;§ 95a UrhG&lt;/a&gt;: der Kopierschutzparagraf, &amp;quot;Wirksame technische Maßnahmen zum Schutz eines [...] Werkes [...] dürfen ohne Zustimmung des Rechtsinhabers nicht umgangen werden, soweit [...] die Umgehung erfolgt, um den Zugang zu einem solchen Werk [oder dessen] Nutzung zu ermöglichen.&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__64.html&#34;&gt;§ 64 UrhG&lt;/a&gt;: &amp;quot;Das Urheberrecht erlischt [im Allgemeinen] siebzig Jahre nach dem Tode des Urhebers.&amp;quot;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://netzpolitik.org/2007/optimale-dauer-des-urheberrechtsschutzes-14-jahre/&#34;&gt;Studie: Optimale Dauer des Urheberrechtsschutzes wäre 14 Jahre&lt;/a&gt;; &lt;a href=&#34;https://rufuspollock.com/papers/optimal_copyright_term.pdf&#34;&gt;Link zur Originalstudie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.gesetze-im-internet.de/urhg/__44b.html&#34;&gt;§ 44b UrhG&lt;/a&gt;: der Data-Mining-Paragraf, &amp;quot;Zulässig sind Vervielfältigungen von rechtmäßig zugänglichen Werken für das Text und Data Mining. Die Vervielfältigungen sind zu löschen, wenn sie für das Text und Data Mining nicht mehr erforderlich sind. [...] Ein Nutzungsvorbehalt bei online zugänglichen Werken ist nur dann wirksam, wenn er in maschinenlesbarer Form erfolgt.&amp;quot;; siehe dazu auch &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20220823.html&#34;&gt;Pentaradio vom August 2022&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=GNU-Projekt&amp;amp;oldid=205119299&#34;&gt;GNU-Projekt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Postmortales_Pers%C3%B6nlichkeitsrecht&amp;amp;oldid=229281968&#34;&gt;Postmortales Persönlichkeitsrecht&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Begrüßung"  />
          <chapter start="00:01:11" title="Obligatorischer Disclaimer"  />
          <chapter start="00:03:57" title="Programmcode als immaterielles Wirtschaftsgut"  />
          <chapter start="00:07:56" title="Urheberrecht vs. Copyright"  />
          <chapter start="00:11:03" title="Urheberrechtspersönlichkeit"  />
          <chapter start="00:22:16" title="Verwertungsrecht"  />
          <chapter start="00:30:48" title="Schranken des Urheberrechts"  />
          <chapter start="00:44:19" title="Freie Software"  />
          <chapter start="01:00:42" title="Hinweis für Programmierer: Schaut auf eure SBOM!"  />
          <chapter start="01:06:06" title="netzpolitische Aspekte"  />
      </chapters>
      <enclosure length="77534893" url="https://dl.xyrillian.de/noises/stp-040-urheberrecht-bei-programmen.mp3" type="audio/mpeg"/>
      <enclosure length="48245417" url="https://dl.xyrillian.de/noises/stp-040-urheberrecht-bei-programmen.ogg" type="audio/ogg"/>
      <enclosure length="29186496" url="https://dl.xyrillian.de/noises/stp-040-urheberrecht-bei-programmen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/040-urheberrecht-bei-programmen/</guid>
    <pubDate>Thu, 06 Jul 2023 20:40:00 GMT</pubDate>
    <itunes:duration>80:25</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP039: Authentifizierung und Autorisierung</itunes:title>
    <itunes:episode>39</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP039: Authentifizierung und Autorisierung</title>
    <link>https://schluesseltechnologie-podcast.de/039-authentifizierung-und-autorisierung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die Frage, wer wir sind, beschäftigt nicht nur uns selbst, sondern auch alle Anbieter von Diensten aller Art, wenn sie mit Computern zu tun haben. Heute sprechen wir über die Mechanismen, die zur Feststellung einer Person oder ihrer Berechtigungen besonders im Netz verwendet werden.</itunes:summary>
    <description>Die Frage, wer wir sind, beschäftigt nicht nur uns selbst, sondern auch alle Anbieter von Diensten aller Art, wenn sie mit Computern zu tun haben. Heute sprechen wir über die Mechanismen, die zur Feststellung einer Person oder ihrer Berechtigungen besonders im Netz verwendet werden.</description>
    <content:encoded>&lt;p&gt;Die Frage, wer wir sind, beschäftigt nicht nur uns selbst, sondern auch alle Anbieter von Diensten aller Art, wenn sie mit Computern zu tun haben. Heute sprechen wir über die Mechanismen, die zur Feststellung einer Person oder ihrer Berechtigungen besonders im Netz verwendet werden.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;grundsätzliche Begriffsklärung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Authentifizierung&amp;amp;oldid=227594718&#34;&gt;Authentifizierung&lt;/a&gt;: Nachweis einer behaupteten Eigenschaft einer Entität; hier: der Nachweis der Identität einer Person, eines Gerätes oder eines Prozesses (&amp;quot;Wer ist dieser Benutzer?&amp;quot;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Autorisierung&amp;amp;oldid=224714316&#34;&gt;Autorisierung&lt;/a&gt;: die Einräumung von Rechten gegenüber einem interessierten Subjekt; hier: das initiale Zuweisen und das wiederholt einleitende Überprüfen von Zugriffsrechten (&amp;quot;Darf dieser Benutzer auf dieses Dokument zugreifen?&amp;quot;)&lt;/li&gt;
&lt;li&gt;im englischen Sprachgebrauch &amp;quot;authentication&amp;quot; (AuthN) und &amp;quot;authorization&amp;quot; (AuthZ)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AuthN durch einen oder mehrere von drei wesentlichen Arten von Identitäts&lt;strong&gt;merkmalen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wissen: etwas, dass ich weiß (Passwörter, PINs, etc.)&lt;/li&gt;
&lt;li&gt;Besitz: etwas, dass ich habe (Chipkarte, Lichtbildausweis, Mobiltelefon, PC, etc.)&lt;/li&gt;
&lt;li&gt;Inhärenz: etwas, dass ich bin (Fingerabdruck, Iris-Abbild, etc.) -&amp;gt; Achtung: Problematisch, weil nicht änderbar!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Multi-Faktor-Authentisierung&amp;amp;oldid=228949120&#34;&gt;Multifaktor-Authentifizierung&lt;/a&gt;: Wer eines der drei Merkmale gut angreifen kann, kann selten eins der anderen Merkmale gut angreifen.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;schlechte Arten von Merkmalen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Magnetstreifen&amp;amp;oldid=226316253&#34;&gt;Magnetstreifenkarte&lt;/a&gt; (Besitz-Merkmal): trivial kopierbar -&amp;gt; deswegen heute meist &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Chipkarte&amp;amp;oldid=232317097&#34;&gt;Chipkarten&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;Chipkarten sind kleine Computer, die sich per &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Challenge-Response-Authentifizierung&amp;amp;oldid=228328238&#34;&gt;Challenge-Response&lt;/a&gt; authentisieren können&lt;/li&gt;
&lt;li&gt;siehe zum Beispiel &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Transaktionsnummer&amp;amp;oldid=230848111#TAN-Generator&#34;&gt;ChipTAN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Code per SMS (Besitzfaktor): auf Telefonebene angreifbar durch Malware mit erschlichener SMS-Berechtigung, auf Netzwerkebene angreifbar durch Umleitung der SMS
&lt;ul&gt;
&lt;li&gt;als Besitzfaktor buchstäblich &amp;quot;besser als nichts&amp;quot;&lt;/li&gt;
&lt;li&gt;besser ist eine Authentisierungs-App mit &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Time-based_One-time_Password_Algorithmus&amp;amp;oldid=222235161&#34;&gt;TOTP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;zu kreativen Angriffen auf Besitzmerkmale und Biometrie siehe &lt;a href=&#34;https://media.ccc.de/search/?q=starbug&#34;&gt;die Vorträge von Starbug&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Autorisierungs-Schemata&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;früher meist &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Access_Control_List&amp;amp;oldid=231251676&#34;&gt;Access Control Lists (ACL)&lt;/a&gt;: jedes Datenobjekt hat eine Liste mit zugriffsberechtigten Benutzerkonten und Gruppen&lt;/li&gt;
&lt;li&gt;Beispiel ACL in Unix: Dateisystemeinträge haben rwx-Bits (Lesezugriff, Schreibzugriff, Ausführzugriff) jeweils für das besitzende Benutzerkonto, die besitzende Gruppe und alle Benutzerkonten&lt;/li&gt;
&lt;li&gt;heute meist &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Role_Based_Access_Control&amp;amp;oldid=229433588&#34;&gt;Role-Based Access Control (RBAC)&lt;/a&gt; auf der Ebene von semantischen Operationen&lt;/li&gt;
&lt;li&gt;Beispiel RBAC in &lt;a href=&#34;https://docs.openstack.org/oslo.policy/latest/&#34;&gt;OpenStack&lt;/a&gt;: Benutzerkonten oder Benutzergruppen können Rollenzuweisungen erhalten; die Menge der zugewiesenen Rollen bestimmt, welche Aktionen ein Benutzer ausführen kann&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Authentisierung im Webkontext: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Single_Sign-on&amp;amp;oldid=232103662&#34;&gt;Single Sign-On (SSO)&lt;/a&gt; via &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Security_Assertion_Markup_Language&amp;amp;oldid=222991238&#34;&gt;SAML&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=OpenID_Connect&amp;amp;oldid=230166769&#34;&gt;OIDC&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: Authentisierung bei einem zentralen Identitätsanbieter, dann Verwendung dieser festgestellten Identität in einem Zielsystem&lt;/li&gt;
&lt;li&gt;SSO könnte man auch mit LDAP haben, aber SAML/OIDC erlaubt eine Einschränkung, welche Identitätsdaten der autorisierende Dienst vom authentifizierenden Dienst erhält&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro &#43; Prolog"  />
          <chapter start="00:02:23" title="Begriffsklärung"  />
          <chapter start="00:07:32" title="Identitätsmerkmale"  />
          <chapter start="00:21:08" title="schlechte Arten von Merkmalen"  />
          <chapter start="00:43:29" title="Autorisierungs-Schemata"  />
          <chapter start="00:43:38" title="Access Control Lists"  />
          <chapter start="00:48:17" title="Role-Based Access Control"  />
          <chapter start="00:50:43" title="Authentisierung im Webkontext"  />
      </chapters>
      <enclosure length="62080627" url="https://dl.xyrillian.de/noises/stp-039-authentifizierung-und-autorisierung.mp3" type="audio/mpeg"/>
      <enclosure length="38849741" url="https://dl.xyrillian.de/noises/stp-039-authentifizierung-und-autorisierung.ogg" type="audio/ogg"/>
      <enclosure length="23614177" url="https://dl.xyrillian.de/noises/stp-039-authentifizierung-und-autorisierung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/039-authentifizierung-und-autorisierung/</guid>
    <pubDate>Thu, 15 Jun 2023 19:55:00 GMT</pubDate>
    <itunes:duration>64:19</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP038: Software-Tests</itunes:title>
    <itunes:episode>38</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP038: Software-Tests</title>
    <link>https://schluesseltechnologie-podcast.de/038-software-tests</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach der Episode über die Fehler, spechen wir heute darüber, wie man sie vermeidet. Wie nicht anders zu erwarten, ist auch dies ein Thema, bei dem reichhaltige Meinungsdiskurse geführt werden.</itunes:summary>
    <description>Nach der Episode über die Fehler, spechen wir heute darüber, wie man sie vermeidet. Wie nicht anders zu erwarten, ist auch dies ein Thema, bei dem reichhaltige Meinungsdiskurse geführt werden.</description>
    <content:encoded>&lt;p&gt;Nach der Episode über die Fehler, spechen wir heute darüber, wie man sie vermeidet. Wie nicht anders zu erwarten, ist auch dies ein Thema, bei dem reichhaltige Meinungsdiskurse geführt werden.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;img src=&#34;https://dl.xyrillian.de/noises/stp-038-intro.png&#34; alt=&#34;Bild&#34;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Warum testen? -&amp;gt; siehe STP037&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anforderungen an Tests&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reproduzierbar: nicht abhängig von unerwarteten äußeren Einflüssen oder menschlicher Intervention&lt;/li&gt;
&lt;li&gt;fokussiert: im Fehlerfall soll möglichst klar sein, wo das Problem liegt&lt;/li&gt;
&lt;li&gt;schnell: damit man beim Ändern des Systems schnelles Feedback bekommt (siehe auch &lt;a href=&#34;https://xkcd.com/303/&#34;&gt;XKCD 303&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;realitätsnah: überprüft eine Funktion, die der Benutzer so tatsächlich benötigt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;manuelle Tests&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kostenintensiv: &lt;a href=&#34;https://www.destructoid.com/apex-legends-qa-baton-rouge-layoffs-electronic-arts-ea/&#34;&gt;Online-Shooter braucht(e) 200 Tester&lt;/a&gt; (das Spiel erlaubt Matches mit bis zu 60 Teilnehmern)&lt;/li&gt;
&lt;li&gt;erfüllt von den obigen Anforderungen nur die Realitätsnähe&lt;/li&gt;
&lt;li&gt;wenn&#39;s geht, lieber automatisieren&lt;/li&gt;
&lt;li&gt;gängige Strategie: manuelle Tests zur Fehlersuche, im Zweifelsfall durch die Kunden ;) – dann Nachstellung des gefundenen Problems&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;automatisierte Tests am Beispiel der &lt;a href=&#34;https://commons.wikimedia.org/w/index.php?title=File:Testing_Pyramid.png&amp;amp;oldid=731870968#/media/File:Testing_Pyramid.png&#34;&gt;Testpyramide&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unit Tests&lt;/strong&gt;: Überprüfung einer einzelnen Komponente in Isolation
&lt;ul&gt;
&lt;li&gt;besonders wertvoll, wenn die Komponenten auf besonders reproduzierbare Weise arbeiten (zum Beispiel pure Berechnungen; Vorgänge, die &lt;em&gt;nicht&lt;/em&gt; Netzwerkzugriff/Festplattenzugriff/etc. erfolgen)&lt;/li&gt;
&lt;li&gt;Problem: es reicht nicht, wenn jede Komponente für sich genommen funktioniert, aber sie nicht zusammen passen&lt;/li&gt;
&lt;li&gt;Bewertung: reproduzierbar, fokussiert, schnell, aber nicht realitätsnah&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integration Tests&lt;/strong&gt;: Überprüfung des Zusammenspiels mehrerer Komponenten eines Gesamtsystems
&lt;ul&gt;
&lt;li&gt;nach Möglichkeit Eingrenzung äußerer Faktoren, z.B. statt Kommunikation mehrerer Komponenten über ein reales Netzwerk Simulation einer Netzwerkstruktur im Programm oder mittels Containern/VMs (siehe STP023)&lt;/li&gt;
&lt;li&gt;Bewertung: tendenziell weniger reproduzierbar, etwas langsamer, weniger fokussiert, aber realitätsnäher&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;End-to-End-Tests&lt;/strong&gt; (E2E): Überprüfung des Verhaltens eines Gesamtsystems
&lt;ul&gt;
&lt;li&gt;analog zu den manuellen Tests, aber nach festem Algorithmus&lt;/li&gt;
&lt;li&gt;höchster Aufwand in der Umsetzung, siehe insbesondere UI-Tests mittels &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Headless_browser&amp;amp;oldid=1106195952&#34;&gt;Headless Browser&lt;/a&gt; etc.&lt;/li&gt;
&lt;li&gt;Bewertung: am wenigsten reproduzierbar (aufgrund der Vielzahl an Variablen), am unfokussiertesten, am langsamsten, aber am nächsten an der Realität&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;allgemeine Empfehlung: ganz viele kleine Unit Tests und einige mittelgroße Integrationstests für die schnelle Feedbackschleife, dazu einige wenige große E2E-Tests für den Abgleich mit der Realität&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;alternative Teilung: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Black-Box-Test&amp;amp;oldid=226194172&#34;&gt;Blackbox-Tests vs. Whitebox-Tests&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Blackbox: Umsetzung eines Tests ohne innere Kenntnis der Struktur des Systems, z.B. anhand einer Spezifikation&lt;/li&gt;
&lt;li&gt;Vorteil: ein Blackbox-Test durch ein anderes Team kann Missverständnisse des ursprünglichen Teams aufdecken&lt;/li&gt;
&lt;li&gt;Nachteil: kann nur E2E sein&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;die reine Lehre: &lt;strong&gt;Test Driven Development&lt;/strong&gt; (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Testgetriebene_Entwicklung&amp;amp;oldid=230163162&#34;&gt;Testgetriebene Entwicklung&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;neue Funktionalität darf man nur bauen, wenn es Testabdeckung dafür gibt&lt;/li&gt;
&lt;li&gt;erst fehlschlagenden Test schreiben; dann Funktionalität einbauen, sodass der Test erfolgreich durchläuft; dann aufräumen&lt;/li&gt;
&lt;li&gt;Xyrill macht lieber &amp;quot;Data Driven Development&amp;quot; und hat Bedenken&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kann man die Qualität eines Tests bewerten? -&amp;gt; Idee: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Code_coverage&amp;amp;oldid=1143329859&#34;&gt;Code Coverage&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Welcher Anteil des Programmcodes wird von meinem Test tatsächlich abgedeckt?&lt;/li&gt;
&lt;li&gt;Was heißt eigentlich &amp;quot;Anteil&amp;quot;?
&lt;ul&gt;
&lt;li&gt;Beispiel: &lt;code&gt;if (a or b or c) { return &amp;quot;Kredit abgelehnt&amp;quot; }&lt;/code&gt; (einfach bei Zeilenabdeckung, schwierig bei Bedingungsabdeckung)&lt;/li&gt;
&lt;li&gt;Beispiel: &amp;quot;Kommt ein Software-Tester in eine Bar.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Problem: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Goodharts_Gesetz&amp;amp;oldid=229408892&#34;&gt;Goodharts Gesetz&lt;/a&gt;, &amp;quot;Sobald eine Metrik zu einem Ziel wird, hört sie auf, eine gute Metrik zu sein.&amp;quot;&lt;/li&gt;
&lt;li&gt;Problem: für manche Zeilen sind Tests wichtiger als andere (wichtig für vertrackte Logik, weniger wichtig für Sofortabbruch bei unerwarteten Fehlern)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tests muss man trotzdem noch schreiben. Kann man das wegautomatisieren?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Statische_Code-Analyse&amp;amp;oldid=221804280&#34;&gt;Statische Analyse&lt;/a&gt;: automatische Suche nach bedenklichen Mustern (z.B. Datei wurde zum Schreiben geöffnet, wird aber am Ende nicht geschlossen -&amp;gt; Risiko des Datenverlusts; z.B. Verwendung veralteter kryptografischer Primitiven)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fuzzing&amp;amp;oldid=225194301&#34;&gt;Fuzzing&lt;/a&gt;: anstatt eines Tests mit festen Werten (&amp;quot;bei Eingabe X wird Ausgabe Y erwartet&amp;quot;) nur Vorgabe einer Struktur (&amp;quot;wenn hier ein Text reingesteckt wird, kommt da eine Zahl raus&amp;quot;), dann automatische Suche nach Absturzbedingungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Machen Tests die Sache immer besser?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Heisenbug&amp;amp;oldid=227133176&#34;&gt;Heisenbug&lt;/a&gt;: &amp;quot;ein Softwarefehler, der zu verschwinden oder sein Verhalten zu verändern scheint, wenn man versucht, ihn zu untersuchen&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/ISO_9001&#34;&gt;ISO9001&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://forschergeist.de/podcast/fg034-werner-heisenberg/&#34;&gt;FG034 zu Werner Heisenberg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Einleitung"  />
          <chapter start="00:03:12" title="Anforderungen an Tests"  />
          <chapter start="00:16:18" title="manuelle Tests"  />
          <chapter start="00:21:13" title="automatisierte Tests"  />
          <chapter start="00:24:52" title="Unit Tests"  />
          <chapter start="00:30:31" title="Integration Tests"  />
          <chapter start="00:41:49" title="End-to-End-Tests"  />
          <chapter start="00:47:03" title="alternative Teilung: Blackbox vs. Whitebox"  />
          <chapter start="00:50:24" title="Test Driven Development"  />
          <chapter start="00:58:14" title="Code Coverage"  />
          <chapter start="01:06:00" title="Kann man das wegautomatisieren?"  />
          <chapter start="01:15:55" title="Heisenbug"  />
      </chapters>
      <enclosure length="79143901" url="https://dl.xyrillian.de/noises/stp-038-software-tests.mp3" type="audio/mpeg"/>
      <enclosure length="49607961" url="https://dl.xyrillian.de/noises/stp-038-software-tests.ogg" type="audio/ogg"/>
      <enclosure length="29862968" url="https://dl.xyrillian.de/noises/stp-038-software-tests.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/038-software-tests/</guid>
    <pubDate>Thu, 25 May 2023 21:59:59 GMT</pubDate>
    <itunes:duration>82:05</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP037: Berühmte Softwarefehler</itunes:title>
    <itunes:episode>37</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP037: Berühmte Softwarefehler</title>
    <link>https://schluesseltechnologie-podcast.de/037-beruehmte-software-fehler</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.</itunes:summary>
    <description>Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.</description>
    <content:encoded>&lt;p&gt;Wir alle machen Fehler. So gut, so trivial. Wenn allerdings Elektronenrechner im Spiel sind, kann das durchaus kritisch werden. In manchen Fällen sogar tödlich.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Errata zu STP034 von Thomas aus Berlin:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Am Ende der Folge wundert sich ttimeless darüber, warum &lt;code&gt;sin(pi)&lt;/code&gt; auf dem Taschenrechner immer ein Ergebnis von 0,0548... produziert. Du versuchst, das dann mit möglichen Ungenauigkeiten der Abbildung von pi zu erklären.&lt;/p&gt;
&lt;p&gt;Ich glaube, die Antwort ist viel einfacher: In der normalen Einstellung DEG erwartet der Taschenrechner die Eingabe in Grad und &lt;code&gt;sin(pi°) = 0,0548...&lt;/code&gt; ist damit auch korrekt. Stellt man den Taschenrechner auf RAD (Radiant), dann rechnet der Taschenrechner auch korrekt &lt;code&gt;sin(pi) = 0&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Off by One&amp;quot; (&amp;quot;um eins daneben&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Diese Folge ist Nr. 37 und somit die 38. Folge dieses Podcasts!&lt;/li&gt;
&lt;li&gt;häufige Konvention in der IT: Nummerierung fängt bei Null an
&lt;ul&gt;
&lt;li&gt;In einer Liste mit 10 Elementen das vorderste den Index 0 und das hinterste den Index 9.&lt;/li&gt;
&lt;li&gt;formal plausibel, da Null die erste natürliche Zahl ist (ansonsten ist ℕ unter Addition keine Gruppe; siehe &lt;a href=&#34;https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html&#34;&gt;EWD831&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;technisch plausibel, da die Speicheradresse einer Liste für gewöhnlich die Speicheradresse des vordersten Elementes ist; dieses hat also einen Abstand von 0 zum Beginn der Liste&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;siehe auch &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Zaunpfahlfehler&amp;amp;oldid=228434264&#34;&gt;Zaunpfahlfehler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Thema heute: Wie katastrophal können die Auswirkungen solcher kleinen Fehler sein?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mechanische Fehler: &lt;a href=&#34;https://commons.wikimedia.org/w/index.php?title=File:First_Computer_Bug,_1945.jpg&amp;amp;oldid=682909364&#34;&gt;&amp;quot;First actual case of bug being found.&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Überlauf: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ariane_V88&amp;amp;oldid=222991385&#34;&gt;Ariane-Flug V88 (1996)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;erster Flug der Ariane 5&lt;/li&gt;
&lt;li&gt;Steuerungssoftware war von der Ariane 4 übernommen und nicht auf derart große Horizontalgeschwindigkeiten ausgelegt&lt;/li&gt;
&lt;li&gt;Überlauf bei Konvertierung von float64 in int16; aber bei dieser konkreten Variable keine Überlaufprüfung wegen Ressourcenknappheit&lt;/li&gt;
&lt;li&gt;größeres Motiv laut Untersuchungsbericht: in der Gefahrenabschätzung wurde nicht hinreichend berücksichtigt, dass die Software (und nicht nur die Hardware) fehlerhaft sein könnte&lt;/li&gt;
&lt;li&gt;Folge: erster großflächiger Einsatz von Fehlersuche mittels statischer Code-Analyse&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Überlauf: Y2K Bug -&amp;gt; siehe STP016&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Überlauf: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Heartbleed&amp;amp;oldid=229430945&#34;&gt;Heartbleed (2014)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drift: &lt;a href=&#34;https://www-users.cse.umn.edu/~arnold/disasters/Patriot-dharan-skeel-siam.pdf&#34;&gt;Dhahran Missile Incident (1991)&lt;/a&gt;, &lt;a href=&#34;https://www.gao.gov/assets/imtec-92-26.pdf&#34;&gt;siehe auch&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hintergrund: 28 Amerikaner getötet durch Raketenbeschuss auf eine US-Basis in Saudi Arabien während des 1. Golfkriegs&lt;/li&gt;
&lt;li&gt;Fehler im Raketenabwehrsystem: aufgrund Rundungsfehler driftet die interne Uhr um einen Faktor von 0,00000095&lt;/li&gt;
&lt;li&gt;nach 100 Stunden Dauerbetrieb ist die Drift bei 0,34 Sekunden; entspricht bei Raketen mit Mach 4 einer Distanz von etwa 500 Metern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spezifikation falsch gelesen (oder Kommunikationsproblem): &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mars_Climate_Orbiter&amp;amp;oldid=230063104&#34;&gt;Mars Climate Orbiter (1999)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NASA hatte metrische Einheiten verwendet (Impuls in Newtonsekunden), die Navigationssoftware von Lockheed Martin hingegen imperiale Einheiten (Impuls in Pound-Force-Sekunden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Clusterfuck: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Therac-25&amp;amp;oldid=222407363&#34;&gt;Therac-25 (1985-1987)&lt;/a&gt;, unter anderem:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;verteiltes&lt;/del&gt; verstreutes System: fehlerhafte Synchronisation zwischen einem Messprozess und einem parallel arbeitenden Steuerprozess&lt;/li&gt;
&lt;li&gt;Benutzerführung: in bestimmten Situationen wurde nach der Eingabe neuer Daten der alte Datensatz weiterverwendet, obwohl die Benutzeroberfläche den neuen Datensatz anzeigte&lt;/li&gt;
&lt;li&gt;Überlauf: 8-Bit-Flag für die Anzeige der Notwendigkeit einer Sicherheitsprüfung konnte von 255 auf 0 überlaufen und dadurch die Prüfung überspringen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;überfordert von Komplexität: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Corrupted_Blood_incident&amp;amp;oldid=1140307355&#34;&gt;Corrupted Blood (2005)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vor COVID-19 eines der wichtigsten Studienobjekte für das Verbreitungsmuster einer Pandemie, inklusive Tiervektoren und asymptomatisch infektiösen Patienten&lt;/li&gt;
&lt;li&gt;ein bestimmter Bosskampf in &amp;quot;World of Warcraft&amp;quot; versieht Spielercharaktere mit einem negativen Statuseffekt, der sie langsam tötet und der auf naheliegende Charaktere ansteckend wirkt&lt;/li&gt;
&lt;li&gt;Spieler sollten mit diesem Statuseffekt den Bosskampf nicht verlassen können, aber die  Reittiere der Spieler konnten es!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;analog zu Copy-Paste-Fehler: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Mariner_1&amp;amp;oldid=1136631227&#34;&gt;Mariner 1 (1962)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programmcode wurde auf Papier geschrieben, dort wurde fehlerhafterweise mit &amp;quot;R&amp;quot; statt mit dem korrekten &amp;quot;R̅&amp;quot; (R mit Überstrich) gerechnet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copy-Paste-Fehler: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Pentium-FDIV-Bug&amp;amp;oldid=226232131&#34;&gt;Pentium-FDIV-Bug&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Division von Fließkommazahlen (siehe STP009) beim Pentium verwendet einen Algorithmus, der zur Beschleunigung eine Tabelle von vorberechneten Werten verwendet&lt;/li&gt;
&lt;li&gt;fünf Einträge in dieser Tabelle wurden nicht richtig in das finale Chip-Design übernommen&lt;/li&gt;
&lt;li&gt;Ergebnis: bestimmte Divisionen liegen um einen Bruchteil eines ‰ daneben&lt;/li&gt;
&lt;li&gt;Rückrufaktion im Wert von über 400 Millionen $&lt;/li&gt;
&lt;li&gt;&amp;quot;Wie viele Intel-Mitarbeiter braucht man, um eine Glühbirne zu wechseln? 1,9999983256&amp;quot;&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Fast_inverse_square_root&amp;amp;oldid=1142010709&#34;&gt;Fast Inverse Square Root&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Feedback zu STP 034"  />
          <chapter start="00:02:37" title="Intro und direkt zum &#39;Off By One&#39;"  />
          <chapter start="00:13:28" title="Kurz zur weiteren Sendung"  />
          <chapter start="00:14:15" title="Mechanische Fehler"  />
          <chapter start="00:17:50" title="Überläufe: Ariane-Flug V88 (1996)"  />
          <chapter start="00:25:15" title="Y2K Bug"  />
          <chapter start="00:26:44" title="Anderer Überlauf: Heartblead"  />
          <chapter start="00:36:03" title="Drift: Dhahran Missile Incident"  />
          <chapter start="00:38:30" title="Einheitsfehler: Mars Climate Orbiter"  />
          <chapter start="00:41:33" title="Clusterfuck: Therac-25"  />
          <chapter start="00:46:39" title="Überfordert von Komplexität: Corrupted Blood"  />
          <chapter start="00:53:57" title="Analog zu Copy-Paste-Fehler: Mariner 1"  />
          <chapter start="00:56:59" title="Copy-Paste-Fehler: Pentium-FDIV-Bug"  />
      </chapters>
      <enclosure length="63372842" url="https://dl.xyrillian.de/noises/stp-037-beruehmte-software-fehler.mp3" type="audio/mpeg"/>
      <enclosure length="39730316" url="https://dl.xyrillian.de/noises/stp-037-beruehmte-software-fehler.ogg" type="audio/ogg"/>
      <enclosure length="23983655" url="https://dl.xyrillian.de/noises/stp-037-beruehmte-software-fehler.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/037-beruehmte-software-fehler/</guid>
    <pubDate>Thu, 04 May 2023 15:45:00 GMT</pubDate>
    <itunes:duration>65:40</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP036: LaTeX</itunes:title>
    <itunes:episode>36</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP036: LaTeX</title>
    <link>https://schluesseltechnologie-podcast.de/036-latex</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Diesmal ist für ttimeless ein echtes Herzensthema an der Reihe. Dafür tritt man auch mal zum zweiten Aufnahmeversuch an. All das, um euch ein Textsatzpogramm nahezubringen, das im Kern 37 Jahre alt ist.</itunes:summary>
    <description>Diesmal ist für ttimeless ein echtes Herzensthema an der Reihe. Dafür tritt man auch mal zum zweiten Aufnahmeversuch an. All das, um euch ein Textsatzpogramm nahezubringen, das im Kern 37 Jahre alt ist.</description>
    <content:encoded>&lt;p&gt;Diesmal ist für ttimeless ein echtes Herzensthema an der Reihe. Dafür tritt man auch mal zum zweiten Aufnahmeversuch an. All das, um euch ein Textsatzpogramm nahezubringen, das im Kern 37 Jahre alt ist.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Zu dieser Sendung liegt ein &lt;a href=&#34;https://dl.xyrillian.de/noises/stp-036-shownotes/shownotes.pdf&#34;&gt;Begleitdokument&lt;/a&gt; mit zugehörigen &lt;a href=&#34;https://dl.xyrillian.de/noises/stp-036-shownotes/&#34;&gt;Quelldateien&lt;/a&gt; vor.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ein Mann, der nicht den Regeln folgt: Donald Knuth&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=The_Art_of_Computer_Programming&amp;amp;oldid=209769576&#34;&gt;The Art of Computer Programming&lt;/a&gt; – szenische Lesung des ersten Unterabschnittes&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www-cs-faculty.stanford.edu/~knuth/email.html&#34;&gt;Knuth vs. Email&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Satz_(Druck)&amp;amp;oldid=221497633&#34;&gt;Textsatz&lt;/a&gt;: &amp;quot;in einer Druckerei, einem Verlag o. Ä. der Arbeitsschritt, der durch ein technisches Verfahren aus einer Vorlage (einem Text, Grafiken, Bildern usw.) eine drucktaugliche Form herstellt&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unter anderem unser Interesse: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Formelsatz&amp;amp;oldid=225284496&#34;&gt;Formelsatz&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Blütezeit Anfang der 1900er Jahre parallel zur Formalisierung der Mathematik&lt;/li&gt;
&lt;li&gt;Tiefpunkt ab 1925 wegen rein auf Schreibmaschinen gesetzter Arbeiten&lt;/li&gt;
&lt;li&gt;&amp;quot;Dieser Entwicklung hat Donald Knuth ab 1977 mit der Entwicklung von TeX Einhalt geboten. Ab etwa 1994 gilt es als schlechter Stil, mathematische Texte nicht mit TeX zu setzen.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=TeX&amp;amp;oldid=224007647&#34;&gt;TeX&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=LaTeX&amp;amp;oldid=225752838&#34;&gt;LaTeX&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=LaTeX&amp;amp;oldid=225752838#Aufbau_eines_Dokuments&#34;&gt;Beispieldokument&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kein WYSIWYG (What You See Is What You Get), stattdessen Beschreibung des Dokumentes durch Quelltext, dadurch sehr kompakt und leicht versionierbar&lt;/li&gt;
&lt;li&gt;Logische Auszeichnung (&amp;quot;Kapitelüberschrift&amp;quot; statt &amp;quot;Arial, fett, 24 Punkt&amp;quot;), dadurch Maschinenlesbarkeit (z.B. automatische Erstellung von Inhaltsverzeichnissen)&lt;/li&gt;
&lt;li&gt;Rechnerunabhängigkeit (heute gang und gäbe, damals revolutionär) sowohl der Software als auch der resultierenden Dokumente (ursprünglich DVI, heutzutage PDF)&lt;/li&gt;
&lt;li&gt;Rückwärtskompatibilität&lt;/li&gt;
&lt;li&gt;Open Source&lt;/li&gt;
&lt;li&gt;Anpassbarkeit, Programmierbarkeit (z.B. AMSLaTeX, MusicTeX, TikZ, Beamer)&lt;/li&gt;
&lt;li&gt;professionelles Aussehen entsprechend den Grundsätzen der Typografie (KOMA-Script!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://ftp.rrzn.uni-hannover.de/pub/mirror/tex-archive/macros/latex/contrib/dinbrief/dinbrief.pdf&#34;&gt;dinbrief.cls&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://www.druckkunst-museum.de/de/&#34;&gt;Museum für Druckkunst Leipzig&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cre.fm/cre127-tex-und-latex&#34;&gt;CRE zu TeX/LaTeX&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://cre.fm/cre080-geschichte-der-typographie&#34;&gt;CRE zu Typografie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://media.ccc.de/v/34c3-9007-hacker_jeopardy#t=5257&#34;&gt;Videobeweis von Xyrills Formelsatz-Lesefähigkeiten (ab 01:31:00)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Xyrills &lt;a href=&#34;https://nbn-resolving.org/urn:nbn:de:bsz:14-qucosa-83987&#34;&gt;Physik-Diplomarbeit&lt;/a&gt; und &lt;a href=&#34;https://github.com/majewsky/bachelor-thesis&#34;&gt;Informatik-Bachelorarbeit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Prolog"  />
          <chapter start="00:01:54" title="Donald Knuth"  />
          <chapter start="00:08:07" title="Textsatz"  />
          <chapter start="00:12:03" title="Formelsatz"  />
          <chapter start="00:17:46" title="TeX"  />
          <chapter start="00:21:48" title="LaTeX"  />
          <chapter start="00:25:16" title="Vorteile von LaTeX"  />
          <chapter start="00:47:22" title="KOMA-Script"  />
          <chapter start="00:50:37" title="Schwächen von LaTeX"  />
          <chapter start="00:58:06" title="Epilog"  />
      </chapters>
      <enclosure length="58612724" url="https://dl.xyrillian.de/noises/stp-036-latex.mp3" type="audio/mpeg"/>
      <enclosure length="34941415" url="https://dl.xyrillian.de/noises/stp-036-latex.ogg" type="audio/ogg"/>
      <enclosure length="21716542" url="https://dl.xyrillian.de/noises/stp-036-latex.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/036-latex/</guid>
    <pubDate>Thu, 13 Apr 2023 16:35:00 GMT</pubDate>
    <itunes:duration>60:42</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP035: Aprilscherz-RFCs</itunes:title>
    <itunes:episode>35</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP035: Aprilscherz-RFCs</title>
    <link>https://schluesseltechnologie-podcast.de/035-aprilscherz-rfcs</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>April, April! Ha, erwischt. Hier eine Sonderfolge mit vergnüglichen RFCs, die einen niederschwelligen Einblick in technische Spezifikationen bieten.
Viel Spass beim Hören und passt auf, ihr werdet alle gehirngewaschen.</itunes:summary>
    <description>April, April! Ha, erwischt. Hier eine Sonderfolge mit vergnüglichen RFCs, die einen niederschwelligen Einblick in technische Spezifikationen bieten.
Viel Spass beim Hören und passt auf, ihr werdet alle gehirngewaschen.</description>
    <content:encoded>&lt;p&gt;April, April! Ha, erwischt. Hier eine Sonderfolge mit vergnüglichen RFCs, die einen niederschwelligen Einblick in technische Spezifikationen bieten.
Viel Spass beim Hören und passt auf, ihr werdet alle gehirngewaschen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;vollständige Liste &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=April_Fools%27_Day_Request_for_Comments&amp;amp;oldid=1083880338&#34;&gt;siehe Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wir präsentieren hier nur eine kleine Auswahl&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc1097&#34;&gt;RFC 1097 (von 1989): TELNET-Option &amp;quot;Unterschwellige Botschaft&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zu TELNET siehe STP022&lt;/li&gt;
&lt;li&gt;&amp;quot;Die Nutzung von Hinweisbannern und Newslettern ist oft nicht ausreichend, um widerspenstige Nutzer zum Upgrade auf die neueste Telnet-Version zu bewegen. Manche Nutzer werden die selben veralteten Versionen noch Jahre weiterverwenden. [...] Diese Nutzer müssen auf sanfte Weise &#39;überredet&#39; werden.&amp;quot;&lt;/li&gt;
&lt;li&gt;Kontext: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Unterschwelliger_Reiz&amp;amp;oldid=224495884#Konsum_und_Fernsehen&#34;&gt;Wikipedia zu unterschwelligen Botschaften im Fernsehen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc1149&#34;&gt;RFC 1149 (von 1990): IP-Übertragungen via Brieftaube&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gute Illustration des Netzwerk-Schichtenmodells (siehe STP005)&lt;/li&gt;
&lt;li&gt;2001: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Internet_Protocol_over_Avian_Carriers&amp;amp;oldid=228505943&#34;&gt;Praxisversuch durch die Linux User Group im norwegischen Bergen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc2100&#34;&gt;RFC 2100 (von 1997): &amp;quot;The naming of hosts&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein Gedicht zur Frage, was gute Namen für Computer sind&lt;/li&gt;
&lt;li&gt;siehe auch &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc1178&#34;&gt;RFC 1178: &amp;quot;Choosing a name for your computer&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc2324&#34;&gt;RFC 2324 (von 1998): Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein früher Beitrag zur Heimautomatisierung aber für &amp;quot;Kaffee-mit-Milch-Trinker&amp;quot; eventuell mit Problemen behaftet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc3514&#34;&gt;RFC 3514 (von 2003): &amp;quot;The Security Flag in the IPv4 Header&amp;quot;&lt;/a&gt;
-böswillige Teilnehmer des Internets werden aufgefordert ein ensprechendes Bit im Header zu setzen&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc5514&#34;&gt;RFC 5514 (von 2009): &amp;quot;IPv6 over Social Networks&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;schon wieder das Netzwerk-Schichtenmodell: wenn etwas Bytes übertragen kann, kann es IP-Pakete übertragen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc6919&#34;&gt;RFC 6919 (von 2013): Neue definierte Schlüsselwörter für Standard-Texte&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nimmt satirischen Bezug auf die Begriffsdefinitionen in &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc2119&#34;&gt;RFC 2119&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7168&#34;&gt;RFC 7168 (von 2014): Update für RFC2324 zur Zubereitung von Tee&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;geht in besonderem Maße auch auf verschiedene Teesorten und feste Zuschlagstoffe ein&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7511&#34;&gt;RFC 7511 (von 2015): Malerische Routen für IP-Pakete&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nimmt satirischen Bezug auf Routenplanungsoptionen in Navigationssystemen (&amp;quot;schnelle&amp;quot; vs. &amp;quot;spritsparende&amp;quot; vs. &amp;quot;malerische&amp;quot; Route)&lt;/li&gt;
&lt;li&gt;&amp;quot;In Zeiten von Green IT wird großer Aufwand getrieben, um den Energieverbrauch von Netzwerkgeräten und Computern zu reduzieren und damit die Umwelt zu schützen. Dieses Dokument beleuchtet Green IT aus einem anderen Winkel&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc8140&#34;&gt;RFC 8140 (von 2017): Eine Galerie mit ASCII Art&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Johannes Gutenberg entdeckte &lt;em&gt;und patentierte&lt;/em&gt; ASCII und die dazu passende Schriftart &#39;Courier New&#39; mit ihrer nunmehr berühmten &amp;quot;Zehn-Punkt&amp;quot;-Größe. Seither haben sich Kunsthandwerker darum bemüht, ihre Sicht der Welt in gedruckter Form abzubilden.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc9225&#34;&gt;RFC 9225 (von 2022): &amp;quot;Software Defects Considered Harmful&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Handlungsempfehlungen: 1. Software-Autoren DÜRFEN KEINE Fehler einbauen. 2. Wenn Fehler eingebaut werden, MÜSSEN sie klar dokumentiert werden. [...] 5. Nehmen Sie an, dass externe Eingaben das Ergebnis von Fehlern sind. [...] 6. Genau genommen sollten sie auch annehmen, dass &lt;strong&gt;interne&lt;/strong&gt; Eingaben das Ergebnis von Fehlern sind.&amp;quot;&lt;/li&gt;
&lt;li&gt;Kontext: &lt;a href=&#34;https://www.cs.utexas.edu/users/EWD/ewd02xx/EWD215.PDF&#34;&gt;&amp;quot;Goto Considered Harmful&amp;quot; von 1968&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;quot;Considered Harmful&amp;quot; ist ein &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Snowclone&amp;amp;oldid=1136199131&#34;&gt;Snowclone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Im Gespäch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://requestforcomments.de/archives/363&#34;&gt;RFC-Podcast Episode 011&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:00" title="Was sind RFCs?"  />
          <chapter start="00:05:00" title="RFC 1097: TELNET-Option &#39;Unterschwellige Botschaft&#39;"  />
          <chapter start="00:09:15" title="RFC 1149: IP-Übertragungen via Brieftaube"  />
          <chapter start="00:17:58" title="RFC 2100: &#39;The naming of hosts&#39;"  />
          <chapter start="00:21:47" title="RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)"  />
          <chapter start="00:27:53" title="RFC 3514: &#39;The Security Flag in the IPv4 Header&#39;"  />
          <chapter start="00:30:55" title="RFC 5514: &#39;IPv6 over Social Networks&#39;"  />
          <chapter start="00:38:39" title="RFC 7168: Update für RFC2324 zur Zubereitung von Tee"  />
          <chapter start="00:42:04" title="RFC 6919: Neue definierte Schlüsselwörter für Standard-Texte"  />
          <chapter start="00:50:05" title="RFC 7511: Malerische Routen für IP-Pakete"  />
          <chapter start="00:51:41" title="RFC 8140: Eine Galerie mit ASCII Art"  />
          <chapter start="00:54:28" title="RFC 9225: &#39;Software Defects Considered Harmful&#39;"  />
          <chapter start="00:58:28" title="Stöbern in alten RFCs"  />
      </chapters>
      <enclosure length="61541378" url="https://dl.xyrillian.de/noises/stp-035-aprilscherz-rfcs.mp3" type="audio/mpeg"/>
      <enclosure length="38267489" url="https://dl.xyrillian.de/noises/stp-035-aprilscherz-rfcs.ogg" type="audio/ogg"/>
      <enclosure length="23138675" url="https://dl.xyrillian.de/noises/stp-035-aprilscherz-rfcs.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/035-aprilscherz-rfcs/</guid>
    <pubDate>Sat, 01 Apr 2023 00:00:00 GMT</pubDate>
    <itunes:duration>63:45</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP034: Compilerbau</itunes:title>
    <itunes:episode>34</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP034: Compilerbau</title>
    <link>https://schluesseltechnologie-podcast.de/034-compilerbau</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode soll es detaillierter um Compiler gehen. Jene Programmme, die dafür zuständig sind, andere Programme zu erzeugen. Um es mit C3PO zu sagen: &amp;quot;... Wie pervers.&amp;quot; :)</itunes:summary>
    <description>In dieser Episode soll es detaillierter um Compiler gehen. Jene Programmme, die dafür zuständig sind, andere Programme zu erzeugen. Um es mit C3PO zu sagen: &amp;quot;... Wie pervers.&amp;quot; :)</description>
    <content:encoded>&lt;p&gt;In dieser Episode soll es detaillierter um Compiler gehen. Jene Programmme, die dafür zuständig sind, andere Programme zu erzeugen. Um es mit C3PO zu sagen: &amp;quot;... Wie pervers.&amp;quot; :)&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Compiler&amp;amp;oldid=225542576&#34;&gt;Compiler&lt;/a&gt;: wandelt eine Programmiersprache (siehe STP033) in eine andere Programmiersprache oder Maschinensprache (siehe STP011)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;insb. Erkennung und Abweisung fehlerhafter Konstrukte (z.B. &lt;code&gt;42 &#43; 5&lt;/code&gt; ist okay, aber &lt;code&gt;42 &#43; &amp;quot;Test&amp;quot;&lt;/code&gt; nicht)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unterbegriffe zu &amp;quot;Compiler&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Interpreter&lt;/strong&gt;: anstatt Erzeugung eines Zielcodes direkte Ausführung&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;REPL&lt;/strong&gt;: Interpreter für die interaktive Verwendung (&amp;quot;Read Evaluate Print Loop&amp;quot;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JIT-Compiler&lt;/strong&gt;: direkte Ausführung wie ein Interpreter, aber es wird echter Maschinencode erzeugt (&amp;quot;Just In Time&amp;quot;)&lt;/li&gt;
&lt;li&gt;z.B. portable Programme: Compiler erzeugt Maschinencode für ein virtuelles Maschinenmodell, Laufzeitumgebung ist ein Interpreter oder JIT-Compiler für diesen Maschinencode -&amp;gt; analog dazu Frontend/Backend-Aufteilung innerhalb eines Compilers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Frontend: Umformen der Texteingabe in eine Datenstruktur, Prüfung dieser Struktur auf inhaltliche Korrektheit (maschinenunabhängig, aber sprachabhängig)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lexikalische Analyse: Zerteilen des Eingabetextes in eine Folge von Tokens mittels regulärer Ausdrücke (siehe STP021; diese Vorstufe ist eine Optimierung, weil reguläre Ausdrücke schneller ausgewertet werden können)&lt;/li&gt;
&lt;li&gt;syntaktische Analyse: Umformen der Tokenliste in einen &lt;strong&gt;Syntaxbaum&lt;/strong&gt; mittels eines kontextfreien Parsers (siehe &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Parser&amp;amp;oldid=225991691#Beispiel&#34;&gt;Beispiel bei Wikipedia&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;semantische Analyse: Prüfen des Syntaxbaums auf inhaltliche Korrektheit, meist mittels Markierungen an jedem Knoten des Baums (z.B. Welchen Typ hat der hier berechnete Wert? Passen die Werte des Elternknotens bzw. des Kindknotens dazu? etc.)&lt;/li&gt;
&lt;li&gt;IR-Erzeugung: Umformung des Syntaxbaums in eine &lt;strong&gt;Intermediate Representation&lt;/strong&gt; (IR), die sich für maschinenunabhängige Optimierung eignet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fortsetzung des Beispiels aus Wikipedia (aber mit einer Eingabevariable &lt;code&gt;y&lt;/code&gt; und Ausgabevariable &lt;code&gt;x&lt;/code&gt;): mögliche IR für den Ausdruck &lt;code&gt;x = y &#43; (2 &#43; 2) - sin(pi)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$1 = 2
$2 = $1 &#43; $1
$3 = load %y
$4 = $3 &#43; $2
$5 = pi
$6 = call sin($5)
$7 = $4 - $6
store %x, $7
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Middleend: Optimierungsläufe auf IR (Auswahl)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Statische Formelauswertung: z.B. oben statt &lt;code&gt;$2 = $1 &#43; $1&lt;/code&gt; direkt &lt;code&gt;$2 = 4&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Löschung von unerreichbarem Code: sehr einfach bei IR mit &lt;strong&gt;Static Single Assignment&lt;/strong&gt; (SSA) wie im Beispiel&lt;/li&gt;
&lt;li&gt;Invariantenextraktion aus Schleifen: wenn z.B. für verschiedene Werte von &lt;code&gt;x&lt;/code&gt; der Ausdruck &lt;code&gt;sin(x) &#43; cos(y)&lt;/code&gt; berechnet wird, so kann man &lt;code&gt;cos(y)&lt;/code&gt; vor der Schleife ein einziges Mal berechnen und das Zwischenergebnis wiederverwenden&lt;/li&gt;
&lt;li&gt;Inlining: ist eine Funktion sehr kurz, kann es effizienter sein, einen Funktionsaufruf durch eine Kopie der Funktion zu ersetzen (insb. wenn dann weitere Optimierungen möglich werden)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel: optimierte Variante der IR von oben&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$3 = load %y
$7 = $3 &#43; 4
store %x, $7
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Backend: Umwandlung der maschinenunabhängigen IR in tatsächlichen Maschinencode
&lt;ul&gt;
&lt;li&gt;Codeauswahl: für die einzelnen Operationen Auswahl der besten Maschinenbefehle
&lt;ul&gt;
&lt;li&gt;je nach Optimierungsziel: Geschwindigkeit, Speicherverbrauch, Energieverbrauch, etc. (z.B. &lt;code&gt;x * 3&lt;/code&gt; kann je nach Maschinenarchitektur gewinnbringend durch &lt;code&gt;x &#43; x &#43; x&lt;/code&gt; ersetzt werden)&lt;/li&gt;
&lt;li&gt;schwieriger als gedacht wegen komplexen Befehlen (z.B. SIMD: Single Instruction Multiple Data)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Registerzuweisung: nummerierte Register aus der IR ersetzen durch die tatsächlich in der Maschine verfügbaren Register
&lt;ul&gt;
&lt;li&gt;reduzierbar auf ein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=F%C3%A4rbung_(Graphentheorie)&amp;amp;oldid=228052439&#34;&gt;Graphenfärbungsproblem&lt;/a&gt;: Knoten = IR-Register, Kanten = gemeinsame Verwendung in Berechnungen, Farben = echte Register&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scheduling: optimale Sortierung der einzelnen Maschinenbefehle (soweit umordenbar)
&lt;ul&gt;
&lt;li&gt;z.B. parallele Ausnutzung verschiedener Recheneinheiten in der CPU (für Ganzzahl- und Fließkommazahl-Operationen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;maschinenabhängige Optimierungen (aus Zeitgründen hier nicht)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Präludium"  />
          <chapter start="00:04:48" title="Begriffsklärung: Compiler"  />
          <chapter start="00:12:19" title="Unterbegriffe zu Compiler"  />
          <chapter start="00:19:29" title="Tätigkeit  des Compilers, Frontend"  />
          <chapter start="00:22:03" title="lexikalische Analyse"  />
          <chapter start="00:25:12" title="syntaktischegc Analyse"  />
          <chapter start="00:31:53" title="semantische Analyse"  />
          <chapter start="00:39:15" title="IR-Erzeugung"  />
          <chapter start="00:42:34" title="Middleend: Optimierungsläufe auf IR"  />
          <chapter start="00:51:26" title="Backend: Umwandlung in Maschinencode"  />
          <chapter start="00:52:37" title="Codeauswahl"  />
          <chapter start="00:57:01" title="Registerzuweisung"  />
          <chapter start="01:01:40" title="Scheduling"  />
      </chapters>
      <enclosure length="66865990" url="https://dl.xyrillian.de/noises/stp-034-compilerbau.mp3" type="audio/mpeg"/>
      <enclosure length="42024636" url="https://dl.xyrillian.de/noises/stp-034-compilerbau.ogg" type="audio/ogg"/>
      <enclosure length="25217597" url="https://dl.xyrillian.de/noises/stp-034-compilerbau.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/034-compilerbau/</guid>
    <pubDate>Thu, 23 Mar 2023 22:59:00 GMT</pubDate>
    <itunes:duration>69:18</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP033: Programmiersprachen</itunes:title>
    <itunes:episode>33</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP033: Programmiersprachen</title>
    <link>https://schluesseltechnologie-podcast.de/033-programmiersprachen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode wird die Antwort auf die Frage geliefert, warum wir Dinge wie Programmiersprachen brauchen, und vor allem, warum so viele. Es werden mal wieder starke Meinungen geäußert und es gibt einen zweiten Prolog in der Mitte der Episode. :)
Außerdem dabei: Linguisten, automatisierte Textilbearbeitung und unsichtbarer Programmcode.</itunes:summary>
    <description>In dieser Episode wird die Antwort auf die Frage geliefert, warum wir Dinge wie Programmiersprachen brauchen, und vor allem, warum so viele. Es werden mal wieder starke Meinungen geäußert und es gibt einen zweiten Prolog in der Mitte der Episode. :)
Außerdem dabei: Linguisten, automatisierte Textilbearbeitung und unsichtbarer Programmcode.</description>
    <content:encoded>&lt;p&gt;In dieser Episode wird die Antwort auf die Frage geliefert, warum wir Dinge wie Programmiersprachen brauchen, und vor allem, warum so viele. Es werden mal wieder starke Meinungen geäußert und es gibt einen zweiten Prolog in der Mitte der Episode. :)
Außerdem dabei: Linguisten, automatisierte Textilbearbeitung und unsichtbarer Programmcode.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Einordnung in das Sprachenuniversum&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programmiersprachen sind formale Sprachen (d.h. ein Algorithmus kann in endlicher Zeit eindeutig entscheiden, ob ein gegebener Text Teil der Sprache ist) -&amp;gt; Rückbezug zu STP021&lt;/li&gt;
&lt;li&gt;Programmiersprachen sind kein &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Maschinensprache&amp;amp;oldid=223307867&#34;&gt;Maschinencode&lt;/a&gt; (d.h. Programme in Bytefolgen, den ein Prozessor direkt ausführen kann) -&amp;gt; Rückbezug zu STP011&lt;/li&gt;
&lt;li&gt;Abwägung zwischen Lesbarkeit für den Menschen und Lesbarkeit für den Computer&lt;/li&gt;
&lt;li&gt;einfachste Form von Programmiersprachen: Maschinensprachen (stellen Maschinencode direkt lesbar dar)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel anhand einer frühen Anwendung von Programmierbarkeit: Weben/Stricken/Häkeln&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Maschinensprache: so etwas wie &amp;quot;zwei links, zwei rechts, zwei fallen lassen&amp;quot;&lt;/li&gt;
&lt;li&gt;Maschinencode = Lochkarten-Kette für einen &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Jacquardwebstuhl&amp;amp;oldid=226034174&#34;&gt;Jacquard-Webstuhl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;darstellendes Beispiel für moderne Maschinensprachen und Programmiersprachen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fibonacci-Folge&amp;amp;oldid=227809466&#34;&gt;Fibonacci-Funktion&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:&#39;1&#39;,fontScale:14,fontUsePx:&#39;0&#39;,j:1,lang:c%2B%2B,selection:(endColumn:2,endLineNumber:6,positionColumn:2,positionLineNumber:6,selectionStartColumn:2,selectionStartLineNumber:6,startColumn:2,startLineNumber:6),source:&#39;unsigned&#43;int&#43;fibonacci(unsigned&#43;int&#43;num)&#43;%7B%0A&#43;&#43;&#43;&#43;if&#43;(num&#43;%3D%3D&#43;0&#43;%7C%7C&#43;num&#43;%3D%3D&#43;1)&#43;%7B%0A&#43;&#43;&#43;&#43;&#43;&#43;&#43;&#43;return&#43;num%3B%0A&#43;&#43;&#43;&#43;%7D%0A&#43;&#43;&#43;&#43;return&#43;fibonacci(num)&#43;%2B&#43;fibonacci(num&#43;%2B&#43;1)%3B%0A%7D&#39;),l:&#39;5&#39;,n:&#39;0&#39;,o:&#39;C%2B%2B&#43;source&#43;%231&#39;,t:&#39;0&#39;)),k:50,l:&#39;4&#39;,n:&#39;0&#39;,o:&#39;&#39;,s:0,t:&#39;0&#39;),(g:!((h:compiler,i:(compiler:g122,deviceViewOpen:&#39;1&#39;,filters:(b:&#39;0&#39;,binary:&#39;1&#39;,commentOnly:&#39;0&#39;,demangle:&#39;0&#39;,directives:&#39;0&#39;,execute:&#39;1&#39;,intel:&#39;0&#39;,libraryCode:&#39;0&#39;,trim:&#39;1&#39;),flagsViewOpen:&#39;1&#39;,fontScale:14,fontUsePx:&#39;0&#39;,j:1,lang:c%2B%2B,libs:!(),options:&#39;&#39;,selection:(endColumn:12,endLineNumber:27,positionColumn:12,positionLineNumber:27,selectionStartColumn:12,selectionStartLineNumber:27,startColumn:12,startLineNumber:27),source:1),l:&#39;5&#39;,n:&#39;0&#39;,o:&#39;&#43;x86-64&#43;gcc&#43;12.2&#43;(Editor&#43;%231)&#39;,t:&#39;0&#39;)),k:50,l:&#39;4&#39;,n:&#39;0&#39;,o:&#39;&#39;,s:0,t:&#39;0&#39;)),l:&#39;2&#39;,n:&#39;0&#39;,o:&#39;&#39;,t:&#39;0&#39;)),version:4&#34;&gt;interaktiv bei Godbolt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;reine Textform nachfolgend&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-cpp&#34;&gt;unsigned int fibonacci(unsigned int x) {
    if (x == 0 || x == 1) {
        return x;
    }
    return fibonacci(x - 1) &#43; fibonacci(x - 2);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&#34;language-x86asm&#34;&gt;fibonacci(unsigned int):
    push    rbp
    mov     rbp, rsp
    push    rbx
    sub     rsp, 24
    mov     DWORD PTR [rbp-20], edi
    cmp     DWORD PTR [rbp-20], 0
    je      .L2
    cmp     DWORD PTR [rbp-20], 1
    jne     .L3
.L2:
    mov     eax, DWORD PTR [rbp-20]
    jmp     .L4
.L3:
    mov     eax, DWORD PTR [rbp-20]
    sub     eax, 1
    mov     edi, eax
    call    fibonacci(unsigned int)
    mov     ebx, eax
    mov     eax, DWORD PTR [rbp-20]
    sub     eax, 2
    mov     edi, eax
    call    fibonacci(unsigned int)
    add     eax, ebx
.L4:
    mov     rbx, QWORD PTR [rbp-8]
    leave
    ret
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Was unterscheidet hier die Programmiersprache von der Maschinensprache?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verwendung von benannten Variablen, um Werte zu halten
&lt;ul&gt;
&lt;li&gt;Maschinensprache: nur Speicheradressen und CPU-Register&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Variablen können feste Datentypen haben
&lt;ul&gt;
&lt;li&gt;Maschinensprache: alles nur Nullen und Einsen :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kontrollfluss-Strukturen (Subprozeduren, Abzweigungen, Schleifen)
&lt;ul&gt;
&lt;li&gt;Maschinensprache: nur lineare Ausführung und Sprungbefehle&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;allgemein:
&lt;ul&gt;
&lt;li&gt;bessere Lesbarkeit (immerhin kann Maschinensprache heutzutage auch Freitext-Kommentare)&lt;/li&gt;
&lt;li&gt;Portabilität (Unabhängigkeit von Details einer bestimmten Maschinen-Architektur)&lt;/li&gt;
&lt;li&gt;formale Strukturen, die Fehler vermeiden (z.B. Typprüfungen, Kollisionsvermeidung bei nebenläufigen Programmen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arten von Programmiersprachen (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Programmierparadigma&amp;amp;oldid=226550386&#34;&gt;&amp;quot;Paradigma&amp;quot;&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;imperative Programmierung: Programme als Folgen von Befehlen&lt;/li&gt;
&lt;li&gt;strukturierte Programmierung: Programme als ineinander verschachtelte Blöcke von Befehlsfolgen&lt;/li&gt;
&lt;li&gt;modulare Programmierung: Programme als Verbund logischer Einheiten aus Prozeduren und Datenstrukturen&lt;/li&gt;
&lt;li&gt;objektorientierte Programmierung: Programme als Verbund von datenhaltenden Objekten, die miteinander interagieren&lt;/li&gt;
&lt;li&gt;logische Programmierung: Programme als Verbund von logischen Aussagen und Ableitungsregeln (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Prolog_(Programmiersprache)&amp;amp;oldid=220556833&#34;&gt;Beispiele in der Sprache Prolog&lt;/a&gt;; Xyrill hat eine Anekdote zu Prolog)&lt;/li&gt;
&lt;li&gt;funktionale Programmierung: Programme als Verbund von mathematischen Funktionen (insbesondere von Funktionen, die andere Funktionen als Werte nehmen)
&lt;ul&gt;
&lt;li&gt;Beispiel unten: Berechnung sämtlicher Primzahlen in der Sprache &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Haskell_(Programmiersprache)&amp;amp;oldid=227783196&#34;&gt;Haskell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;reaktive Programmierung: Programme als voneinander abhängige Berechnungen (Beispiel: Tabellenkalkulation, Webanwendungen mit &lt;a href=&#34;https://reactjs.org/&#34;&gt;React&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&#34;language-haskell&#34;&gt;module Primes where

isPrime :: Int -&amp;gt; Bool
isPrime x = all (\y -&amp;gt; mod x y /= 0) $ takeWhile (\y -&amp;gt; y * y &amp;lt;= x) primes

primes :: [Int]
primes = 2 : filter isPrime [3..]
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Exkurs: esoterische Programmiersprachen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Brainfuck&amp;amp;oldid=226945132&#34;&gt;Brainfuck&lt;/a&gt;: eine der minimalsten turing-vollständigen Programmiersprache; nur 8 verschiedene Befehle&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Befunge&amp;amp;oldid=225691979&#34;&gt;Befunge&lt;/a&gt;: anschauliches Beispiel für das Konzept einer &amp;quot;virtuellen Maschine&amp;quot; im Kontext von Programmiersprachen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Chef_(Programmiersprache)&amp;amp;oldid=227112450&#34;&gt;Chef&lt;/a&gt;: viele esoterische Programmiersprachen sind vor allem clevere Textersetzung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Im Gespräch erwähnt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.c3d2.de/news/pentaradio24-20221227.html&#34;&gt;Pentaradio 2022-12 zu Komplexität&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Prolog"  />
          <chapter start="00:02:55" title="Sprachen in Literatur und Film"  />
          <chapter start="00:05:19" title="Formale Sprachen und Compiler"  />
          <chapter start="00:18:43" title="Frühe Programmiersprachen"  />
          <chapter start="00:21:04" title="Erste Anwendungen von Programmierbarkeit"  />
          <chapter start="00:28:00" title="Beispiel: Fibonacci-Funktion"  />
          <chapter start="00:38:53" title="Programmiersprache vs. Maschienensprache"  />
          <chapter start="00:52:06" title="Arten von Programmiersprachen"  />
          <chapter start="00:52:35" title="imperative Programmierung"  />
          <chapter start="00:54:06" title="strukturierte Programmierung"  />
          <chapter start="00:54:58" title="modulare Programmierung"  />
          <chapter start="00:57:55" title="objektorientierte Programmierung"  />
          <chapter start="01:00:02" title="logische Programmierung"  />
          <chapter start="01:05:45" title="funktionale Programmierung"  />
          <chapter start="01:09:10" title="Beispiel für Haskell"  />
          <chapter start="01:19:27" title="reaktive Programmierung"  />
          <chapter start="01:26:19" title="esoterische Programmiersprachen"  />
      </chapters>
      <enclosure length="93684937" url="https://dl.xyrillian.de/noises/stp-033-programmiersprachen.mp3" type="audio/mpeg"/>
      <enclosure length="59276300" url="https://dl.xyrillian.de/noises/stp-033-programmiersprachen.ogg" type="audio/ogg"/>
      <enclosure length="34837468" url="https://dl.xyrillian.de/noises/stp-033-programmiersprachen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/033-programmiersprachen/</guid>
    <pubDate>Thu, 02 Mar 2023 18:05:00 GMT</pubDate>
    <itunes:duration>97:14</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP032: Hochverfügbarer Softwarebetrieb</itunes:title>
    <itunes:episode>32</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP032: Hochverfügbarer Softwarebetrieb</title>
    <link>https://schluesseltechnologie-podcast.de/032-hochverfuegbarer-softwarebetrieb</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die heutige Episode beschäftigt sich neben dem offensichtlichen Hauptthema auch mit Prozenten, deren Bedeutung bedacht sein sollte, und dem Verhalten guter Manager.
Deshalb sei hiermit eine Politik-Triggerwarnung ausgesprochen... aber nur eine kleine.</itunes:summary>
    <description>Die heutige Episode beschäftigt sich neben dem offensichtlichen Hauptthema auch mit Prozenten, deren Bedeutung bedacht sein sollte, und dem Verhalten guter Manager.
Deshalb sei hiermit eine Politik-Triggerwarnung ausgesprochen... aber nur eine kleine.</description>
    <content:encoded>&lt;p&gt;Die heutige Episode beschäftigt sich neben dem offensichtlichen Hauptthema auch mit Prozenten, deren Bedeutung bedacht sein sollte, und dem Verhalten guter Manager.
Deshalb sei hiermit eine Politik-Triggerwarnung ausgesprochen... aber nur eine kleine.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Schlagwort: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Site_Reliability_Engineering&amp;amp;oldid=218196182&#34;&gt;Site Reliability Engineering (SRE)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hauptziel: &amp;quot;Schaffung skalierbarer und hochzuverlässiger Softwaresysteme&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundkonzept: Service Level&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Service-level_objective&amp;amp;oldid=1089474535&#34;&gt;SLO (Service Level Objective)&lt;/a&gt;: selbstgewählter Indikator soll bis zu einem bestimmten Grad an 100% herangeführt werden (z.B. Zeiten, zu denen der Dienst erreichbar ist; Anteil der Anfragen, die in weniger als 1 Sekunde beantwortet werden; Anteil der Anfragen, die erfolgreich beantwortet werden)&lt;/li&gt;
&lt;li&gt;SLA (Service Level Agreement): SLO, der mit dem Kunden vertraglich vereinbart ist&lt;/li&gt;
&lt;li&gt;Beispiel: 99% Verfügbarkeit = bis zu 3,65 Tage Ausfall; 99,9% = bis zu 8,77 Stunden; 99,99% = bis zu 52 Minuten; 99,999% = bis zu 5,2 Minuten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem: die Unbekannten in der Gleichung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Known Unknowns&lt;/strong&gt; (bekanntes Unwissen): ich weiß, dass ich etwas nicht weiß (z.B. wann meine Festplatte ausfallen wird)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unknown Unknowns&lt;/strong&gt; (unbekanntes Unwissen): ich weiß nicht mal, dass da etwas ist, was ich nicht weiß (z.B. &lt;a href=&#34;https://www.vice.com/en/article/akek8e/walmart-30tb-ssd-hard-drive-scam-sd-cards&#34;&gt;dass meine angebliche 30-TB-Festplatte in Wahrheit nur eine 32-GB-Speicherkarte in einem großen Gehäuse ist&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;siehe auch: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=There_are_known_knowns&amp;amp;oldid=222128371&#34;&gt;zur Wortherkunft der Begriffsgruppe &amp;quot;(un)known (un)knowns&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;strukturierter Einblick in Applikationen mittels Instrumentierung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Logging:&lt;/strong&gt; Ereignisse innerhalb der Applikation werden als textförmiger Bericht (Log) aus der Applikation ausgeleitet und in einem Log-System durchsuchbar gemacht&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring:&lt;/strong&gt; Zustand der Applikation wird in Form von Messdaten quantifiziert, in einer &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Zeitreihendatenbank&amp;amp;oldid=211779199&#34;&gt;Zeitseriendatenbank&lt;/a&gt; abgelegt und in Dashboards aufbereitet (&lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Grafana&amp;amp;oldid=1123211485#/media/File:Grafana_dashboard.png&#34;&gt;Beispielbild&lt;/a&gt;); Messdaten entweder direkt aus der Applikation selbst oder durch ein Extraprogramm von außen erhoben&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alarmierung:&lt;/strong&gt; Menschen werden benachrichtigt, wenn ein bestimmter Messwert eine bestimmte Schwelle überschreitet (oder eine Überschreitung projiziert ist, z.B. &amp;quot;die Festplatte läuft gerade voll und in einer Stunde ist sie komplett voll&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;strukturierte Herangehensweisen beim Durchführen von Änderungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Configuration as Code: Änderungen werden möglichst nie manuell vorgenommen, sondern es wird ein Programm geschrieben (bzw. die Konfiguration für jenes Program angepasst), das die Änderungen vornimmt; bei Problemen ist ein Zurückrollen auf den letzten funktionierenden Zustand möglich&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kontinuierliche_Integration&amp;amp;oldid=223309917&#34;&gt;Continuous Integration (CI)&lt;/a&gt;: Änderungen an Code und Konfiguration fließen in ein System, das automatisch standardisierte Tests ausführt, um die Änderung auf Fehler zu prüfen; bei Erfolg automatische Übernahme der vorgeschlagenen Änderung in den veröffentlichten Code-Stand&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Continuous_Delivery&amp;amp;oldid=218889976&#34;&gt;Continuous Delivery (CD)&lt;/a&gt;: automatisches oder stark automatisiertes Ausrollen von Änderungen an Code und Konfiguration von Testsystemen in Verifikationssysteme in Produktivsysteme&lt;/li&gt;
&lt;li&gt;Rolling Upgrade: bei Systemen mit mehreren gleichartigen Komponenten werden die Komponenten nacheinander durch die neue Version ersetzt, damit das Ausrollen für den Kunden unsichtbar ist und bei Fehlern frühzeitig gestopppt werden kann&lt;/li&gt;
&lt;li&gt;Canary Deployment: Ausrollen einer Änderung zunächst nur in einem kleinen Teil des Systems; bei Problemen ist nur der kleine Teil betroffen (siehe auch Ankündigungen der Form &amp;quot;diese Funktion ist zurzeit nur für ausgewählte Kunden verfügbar&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;strukturierter Umgang mit Alarmen/Fehlern&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;standardisierte Abläufe (&amp;quot;Playbooks&amp;quot;) für Alarme&lt;/li&gt;
&lt;li&gt;Postmortem-Analyse mindestens nach signifikanten Fehlern (Was ist passiert? Was war der tatsächliche Grund? Was ist bei der Bekämpfung des Problems gut/schlecht gelaufen? Was können wir besser machen?)&lt;/li&gt;
&lt;li&gt;Fehlerkultur: Das Hauptziel soll nicht sein, einen Schuldigen zu finden, sondern das Problem möglichst schnell zu beheben und dann dafür zu sorgen, dass das Problem nie wieder auftritt.&lt;/li&gt;
&lt;li&gt;Parallelen zum &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Toyota-Produktionssystem&amp;amp;oldid=223213898&#34;&gt;Toyota-Produktionssystem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt (im Kontext des Gesetzesvorhabens zur Chatkontrolle):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.c3d2.de/news/pentaradio24-20220524.html&#34;&gt;Pentaradio vom Mai 2022&lt;/a&gt; und ganz aktuell &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20230124.html&#34;&gt;vom Januar 2023&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://logbuch-netzpolitik.de/lnp429-endlich-sind-wir-am-anfang-angekommen&#34;&gt;LNP429: Endlich sind wir am Anfang angekommen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://logbuch-netzpolitik.de/lnp430-die-groesste-koalition-aller-zeiten&#34;&gt;LNP430: Die größte Koalition aller Zeiten&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro &#43; Präambel"  />
          <chapter start="00:02:30" title="Service Level"  />
          <chapter start="00:11:06" title="Exkurs: Politische Bedeutung von Prozentsätzen"  />
          <chapter start="00:13:40" title="Site Reliability Engineering"  />
          <chapter start="00:23:49" title="strukturierter Einblick in Applikationen mittels Instrumentierung"  />
          <chapter start="00:43:48" title="Durchführen von Änderungen"  />
          <chapter start="00:57:59" title="Rolling Upgrade"  />
          <chapter start="01:01:01" title="Canary Deployment"  />
          <chapter start="01:05:31" title="strukturierter Umgang mit Alarmen/Fehlern"  />
      </chapters>
      <enclosure length="73284353" url="https://dl.xyrillian.de/noises/stp-032-hochverfuegbarer-softwarebetrieb.mp3" type="audio/mpeg"/>
      <enclosure length="46286048" url="https://dl.xyrillian.de/noises/stp-032-hochverfuegbarer-softwarebetrieb.ogg" type="audio/ogg"/>
      <enclosure length="27530870" url="https://dl.xyrillian.de/noises/stp-032-hochverfuegbarer-softwarebetrieb.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/032-hochverfuegbarer-softwarebetrieb/</guid>
    <pubDate>Thu, 09 Feb 2023 13:05:00 GMT</pubDate>
    <itunes:duration>75:59</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP031: Festplatten und Dateisysteme</itunes:title>
    <itunes:episode>31</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP031: Festplatten und Dateisysteme</title>
    <link>https://schluesseltechnologie-podcast.de/031-dateisysteme</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Mit dieser Episode kehrt STP zum Ursprung zurück, denn das initiale Ereignis hatte ebenfalls mit Dateisystemen zu tun.
Hier sprechen wir aber über deutlich mehr und auch andere Sachen. Darunter: Dinge, von denen Xyrill wenig bis keine Ahnung hat (physikalische Anschlüsse) und Dinge, von denen Xyrill deutlich mehr Ahnung hat (die Software dahinter und deren Verwendung). ttimeless raschelt derweil mit einer dicken Winterjacke.</itunes:summary>
    <description>Mit dieser Episode kehrt STP zum Ursprung zurück, denn das initiale Ereignis hatte ebenfalls mit Dateisystemen zu tun.
Hier sprechen wir aber über deutlich mehr und auch andere Sachen. Darunter: Dinge, von denen Xyrill wenig bis keine Ahnung hat (physikalische Anschlüsse) und Dinge, von denen Xyrill deutlich mehr Ahnung hat (die Software dahinter und deren Verwendung). ttimeless raschelt derweil mit einer dicken Winterjacke.</description>
    <content:encoded>&lt;p&gt;Mit dieser Episode kehrt STP zum Ursprung zurück, denn das initiale Ereignis hatte ebenfalls mit Dateisystemen zu tun.
Hier sprechen wir aber über deutlich mehr und auch andere Sachen. Darunter: Dinge, von denen Xyrill wenig bis keine Ahnung hat (physikalische Anschlüsse) und Dinge, von denen Xyrill deutlich mehr Ahnung hat (die Software dahinter und deren Verwendung). ttimeless raschelt derweil mit einer dicken Winterjacke.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Datenblock&#34;&gt;blockbasierter Speicher (&amp;quot;Block Storage&amp;quot;)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Festplatten handeln immer nur in festen Einheiten (Blöcken)&lt;/li&gt;
&lt;li&gt;traditionellerweise 512 Byte, heutzutage 4 KiB&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;kurzer Überblick zur physikalischen Anbindungen blockbasierter Speicher&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Universal_Serial_Bus&amp;amp;oldid=226444113&#34;&gt;USB (Universal Serial Bus)&lt;/a&gt;: für externe Festplatten, CD-Laufwerke, &lt;em&gt;*räusper*&lt;/em&gt; Mini-Raketenwerfer &lt;em&gt;*räusper*&lt;/em&gt;, etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Serial_ATA&amp;amp;oldid=220865700&#34;&gt;SATA (Serial AT Attachment)&lt;/a&gt;: für interne Festplatten, kabelgebundene Punkt-zu-Punkt-Verbindungen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Serial_Attached_SCSI&amp;amp;oldid=218079361&#34;&gt;SAS (Serial Attached SCSI)&lt;/a&gt;: für interne Festplatten, kabelgebundene Verbindungen auch mit Switching (mehrere Festplatten an einem Verteiler)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=NVM_Express&amp;amp;oldid=222566309&#34;&gt;NVMe (Non-Volatile Memory Express)&lt;/a&gt;: für interne Festplatten, direkte Steckverbindung via PCI Express&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://web.archive.org/web/20220929192234/https://old.reddit.com/r/explainlikeimfive/comments/5sgfzh/eli5_parallel_was_faster_than_serial_why_isnt/&#34;&gt;Warum alles immer seriell?&lt;/a&gt; Höhere Geschwindigkeiten = Synchronisierung immer schwieriger. Parallele Leitungen = Übersprechen/Interferenz = komplexe Kompensation notwendig bzw. bei flexiblen Systemen wie Kabeln nicht möglich.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP012: &amp;quot;Dateisysteme sind eine besondere Form von Key-Value-Datenbank&amp;quot;; keine Datenbank im engeren Sinne:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keine widerspruchsfreie Speicherung, da keine Beziehungen zwischen verschiedenen Dateien möglich&lt;/li&gt;
&lt;li&gt;keine Unterstützung für bedarfsgerechte Darstellungsformen; jede Datei hat genau ein Format&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;alternative Perspektive als Vergleich zum blockbasierten Speicher&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jede Datei ist ihr eigener &amp;quot;kleiner Massenspeicher&amp;quot;&lt;/li&gt;
&lt;li&gt;zusätzlich noch Metadaten (Dateiname, Erstelldatum, Zugriffsrechte, etc.)&lt;/li&gt;
&lt;li&gt;Dateisystem kümmert sich um die Zuteilung des tatsächlichen blockbasierten Speichers an die einzelnen Dateien&lt;/li&gt;
&lt;li&gt;Praxisbeispiel zur Zuteilung von Speicherplatz: Unix-Befehl &lt;code&gt;du -h&lt;/code&gt; (&amp;quot;disk usage&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dateisystem-Struktur unter unixoiden Betriebssystemen: mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Inode&amp;amp;oldid=226067530&#34;&gt;Inodes&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ein Inode enthält alle Metadaten zu einem bestimmten Dateisystemeintrag (einer Datei, einem Verzeichnis, einer Verknüpfung, etc.) sowie (bei normalen Dateien) einen Verweis auf den Speicherort der tatsächlichen Daten&lt;/li&gt;
&lt;li&gt;Größe eines Inodes: immer ein Vielfaches der Blockgröße (4 KiB, 8 KiB, etc.)&lt;/li&gt;
&lt;li&gt;bei sehr kleinen Dateien mitunter direktes Ablegen des Dateiinhaltes im Inode&lt;/li&gt;
&lt;li&gt;bei großen Dateien meist fragmentierter Inhalt: Ablage in mehreren separaten Stücken (wegen späterer Umschreibung oder wegen Platzmangel)&lt;/li&gt;
&lt;li&gt;Verzeichnisse: Inode mit einer Liste von Einträgen (Name &#43; Inode-Verweis)&lt;/li&gt;
&lt;li&gt;Dateisystem = Inode-Liste &#43; Dateiinhalte &#43; Übersicht über noch freie Festplattenbereiche&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;aktuelle&amp;quot; Entwicklungen in Dateisystemen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Journaling-Dateisystem&amp;amp;oldid=214907336&#34;&gt;Journaling&lt;/a&gt; (in NTFS seit 1993, in ext3 seit 2001): Transaktionen werden in einem separaten Festplattenbereich vorgemerkt, bevor sie tatsächlich ausgeführt werden; ermöglicht Abgeschlossenheit und Dauerhaftigkeit analog zum Write-Ahead-Log bei Datenbanken (siehe STP012), außerdem schnelleren Start nach Systemausfall (keine Komplettprüfung des Dateisystems nötig)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fragmentierung_(Dateisystem)&amp;amp;oldid=201408972&#34;&gt;Online-Defragmentierung&lt;/a&gt; bzw. optimierte Speicherzuteilung zur Vermeidung von Fragmentierung (aber: aktives Defragmentieren = mehr Schreibzyklen = mehr Abnutzung)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;antiintuitive Schlussfolgerungen aus dieser Struktur&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;sicheres Löschen&amp;quot;: einfaches Löschen einer Datei löscht nur den Inode, aber überschreibt nicht den Inhalt (selbst Überschreiben der Datei hilft nicht unbedingt, weil die neuen Daten vielleicht an einer anderen Stelle landen, oder weil die alten Daten trotzdem noch im Journal liegen)&lt;/li&gt;
&lt;li&gt;Löschen von im Verbrauch befindlichen Dateien: kein Problem, eine &amp;quot;geöffnete Datei&amp;quot; ist nur ein Verweis auf einen Inode; &amp;quot;Löschen der Datei&amp;quot; löscht nur den Verzeichnis-Eintrag; der Inode bleibt noch so lang bestehen, wie ein Prozess einen Verweis auf den Inode hält&lt;/li&gt;
&lt;li&gt;anders bei Windows: Verweis auf eine offene Datei blockiert das Löschen -&amp;gt; Konsequenzen für System-Updates&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exkurs 1: virtuelles Dateisystem&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bis hier: physikalische Perspektive (Welche Bits stehen tatsächlich auf der Platte?)&lt;/li&gt;
&lt;li&gt;jetzt: logische Perspektive (Was zeigt das Betriebssystem den Programmen?)&lt;/li&gt;
&lt;li&gt;Unix: ein einziger Verzeichnisbaum, in das die verschiedenen Dateisysteme &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mounten&amp;amp;oldid=199499166&#34;&gt;eingehängt&lt;/a&gt; werden können; anders als das System mit Laufwerksbuchstaben unter Windows&lt;/li&gt;
&lt;li&gt;&amp;quot;Datei&amp;quot; und &amp;quot;Verzeichnis&amp;quot; als abstrakte Konzepte, die u.a. durch echte Dateisysteme abgebildet werden können, oder auch durch was anderes (vgl. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Everything_is_a_file&amp;amp;oldid=223250415&#34;&gt;&amp;quot;Everything is a file.&amp;quot;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Procfs&amp;amp;oldid=222577559&#34;&gt;procfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=SSHFS&amp;amp;oldid=223439141&#34;&gt;sshfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Beispiel: transparente Behandlung von Zip-Archiven im Windows Explorer&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=/dev/random&amp;amp;oldid=216549123&#34;&gt;/dev/random&lt;/a&gt; etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exkurs 2: Festplattenverschlüsselung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Option 1: auf der Ebene des Dateisystems (einzelne Dateien oder Verzeichnisse werden verschlüsselt)&lt;/li&gt;
&lt;li&gt;Option 2: auf der Ebene des blockbasierten Speichers -&amp;gt; Dateisystem sieht als Speichermedium einen &lt;em&gt;virtuellen&lt;/em&gt; blockbasierten Speicher, der die Verschlüsselung vornimmt und erst dann auf den tatsächlichen blockbasierten Speicher schreibt -&amp;gt; schöne Arbeitsteilung&lt;/li&gt;
&lt;li&gt;andere Anwendungsfälle für virtuelle blockbasierte Speicher: Netzwerklaufwerke, Dateisysteme innerhalb von Dateien&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:06:05" title="Blockbasierter Speicher"  />
          <chapter start="00:12:23" title="Physikalische Anbindungen"  />
          <chapter start="00:12:52" title="USB"  />
          <chapter start="00:18:10" title="SATA"  />
          <chapter start="00:19:47" title="SAS"  />
          <chapter start="00:21:27" title="NVMe"  />
          <chapter start="00:28:35" title="Warum immer alles seriell?"  />
          <chapter start="00:32:30" title="Dateisysteme als Key-Value-Datenbank"  />
          <chapter start="00:34:09" title="Alternative Betrachtung als Massenspeicher"  />
          <chapter start="00:40:16" title="Unixoide Dateisysteme mittels Inodes"  />
          <chapter start="00:48:32" title="aktuelle Entwicklungen in Dateisystemen"  />
          <chapter start="00:49:20" title="Journaling"  />
          <chapter start="00:53:03" title="Online-Defragmentierung"  />
          <chapter start="00:59:00" title="antiintuitive Schlussfolgerungen aus Inodestruktur"  />
          <chapter start="01:07:48" title="Einschub Exkurs 2: Festplattenverschlüsselung"  />
          <chapter start="01:12:26" title="zurück zu antiintuitiven Schlussfolgerungen"  />
          <chapter start="01:23:54" title="Exkurs 1: Virtuelles Dateisystem"  />
          <chapter start="01:41:57" title="Outro"  />
      </chapters>
      <enclosure length="98648986" url="https://dl.xyrillian.de/noises/stp-031-dateisysteme.mp3" type="audio/mpeg"/>
      <enclosure length="61366048" url="https://dl.xyrillian.de/noises/stp-031-dateisysteme.ogg" type="audio/ogg"/>
      <enclosure length="37601783" url="https://dl.xyrillian.de/noises/stp-031-dateisysteme.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/031-dateisysteme/</guid>
    <pubDate>Thu, 19 Jan 2023 20:00:00 GMT</pubDate>
    <itunes:duration>102:24</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP030: Arbeitsalltag in der IT</itunes:title>
    <itunes:episode>30</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP030: Arbeitsalltag in der IT</title>
    <link>https://schluesseltechnologie-podcast.de/030-arbeitsalltag-in-der-it</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser etwas länger geratenen Episode sricht Xyrill über seinen Alltag und den seiner Kollegen, Unterstellten und Vorgesetzten.
Derweil darf ttimeless darf derweil munter drauflosraten, womit diese Leute denn so ihren Alltag verbringen (zumindest den professionellen).</itunes:summary>
    <description>In dieser etwas länger geratenen Episode sricht Xyrill über seinen Alltag und den seiner Kollegen, Unterstellten und Vorgesetzten.
Derweil darf ttimeless darf derweil munter drauflosraten, womit diese Leute denn so ihren Alltag verbringen (zumindest den professionellen).</description>
    <content:encoded>&lt;p&gt;In dieser etwas länger geratenen Episode sricht Xyrill über seinen Alltag und den seiner Kollegen, Unterstellten und Vorgesetzten.
Derweil darf ttimeless darf derweil munter drauflosraten, womit diese Leute denn so ihren Alltag verbringen (zumindest den professionellen).&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ausgangsfrage: &amp;quot;Ist Programmieren eigentlich ein Handwerk, eine Kunst oder eine Wissenschaft?&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vgl. &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Artes_mechanicae&amp;amp;oldid=219632496&#34;&gt;Artes mechanicae&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Sieben_freie_K%C3%BCnste&amp;amp;oldid=227043485&#34;&gt;Artes liberales&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://xkcd.com/1205/&#34;&gt;xkcd 1205&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vergleich: Industrie (effiziente Massenfertigung) vs. Handwerk (Nutzer der Industrieprodukte, Lieferant der Industrieanlagen) -&amp;gt; These: Programmieren als Manufakturbetrieb&lt;/li&gt;
&lt;li&gt;Berufskrankheit: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Hochstapler-Syndrom&amp;amp;oldid=224109737&#34;&gt;Hochstapler-Syndrom&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;These: Internet verschafft den fähigsten Leuten sehr viel Sichtbarkeit und schafft Gelegenheit, sich relativ dazu inadäquat zu fühlen&lt;/li&gt;
&lt;li&gt;These: Grund ist die Abwesenheit festgelegter Berufsbilder und Ausbildungsgänge (vgl. Lehre und Meisterschule im Handwerk, Studium im Ingenieurwesen, Staatsexamen in Jura/Medizin)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;grundsätzliche Gewerke in der IT&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;technische Disziplinen
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Softwareentwickler&amp;amp;oldid=224301831&#34;&gt;Software-Entwickler*in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Softwarearchitekt&amp;amp;oldid=218525463&#34;&gt;Software-Architekt*in&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Softwaretest&amp;amp;oldid=226000742&#34;&gt;Tester*in&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20210824.html&#34;&gt;Pentaradio zu Resilienz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Systemadministrator&amp;amp;oldid=226131321&#34;&gt;Systemadministrator*in&lt;/a&gt;: siehe auch &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=DevOps&amp;amp;oldid=226542249&#34;&gt;DevOps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Support_(Dienstleistung)&amp;amp;oldid=224980821&#34;&gt;Kundendienst&lt;/a&gt;: Level 1/2/3
&lt;ul&gt;
&lt;li&gt;im Gespräch erwähnt: &lt;a href=&#34;https://xkcd.com/806/&#34;&gt;xkcd 806&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Übersetzer*in (siehe STP017)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Designdisziplinen
&lt;ul&gt;
&lt;li&gt;bei fast allen Applikationen: UI-Designer*in&lt;/li&gt;
&lt;li&gt;in der Spieleentwicklung: Spieldesign, Leveldesign, Assetdesign&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Management-Disziplinen
&lt;ul&gt;
&lt;li&gt;Projekt-Manager*in&lt;/li&gt;
&lt;li&gt;Release-Manager*in&lt;/li&gt;
&lt;li&gt;Scrum Master*in&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://www.netmeister.org/blog/software-engineering-laws.html&#34;&gt;&amp;quot;Gesetze&amp;quot; der Softwareentwicklung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conway&#39;s Law: &amp;quot;Any organization that designs a system will produce a design whose structure is a copy of the organization&#39;s communication structure.&amp;quot;&lt;/li&gt;
&lt;li&gt;Brooks&#39;s Law: &amp;quot;Adding manpower to a late software project makes it later.&amp;quot;&lt;/li&gt;
&lt;li&gt;Zawinski&#39;s Law: &amp;quot;Every program attempts to expand until it can send mail. Those programs which cannot so expand are replaced by ones which can.&amp;quot; (heute wahrscheinlich eher &amp;quot;until it contains a web server&amp;quot;)&lt;/li&gt;
&lt;li&gt;Parkinson&#39;s Law: &amp;quot;Work expands so as to fill the time available for its completion.&amp;quot;&lt;/li&gt;
&lt;li&gt;Pareto&#39;s Fallacy: &amp;quot;When you&#39;re 80% done, you think you only have 20% left.&amp;quot;&lt;/li&gt;
&lt;li&gt;Eagleson&#39;s Law: &amp;quot;Any code of your own that you haven&#39;t looked at for six or more months might as well have been written by someone else.&amp;quot;&lt;/li&gt;
&lt;li&gt;Iceberg Fallacy: &amp;quot;The cost of development of a new software product is the only ~25% of the total cost of ownership management sees and budgets for.&amp;quot;&lt;/li&gt;
&lt;li&gt;The LGTM Dilemma: &amp;quot;If you want to quickly ship a 10 line code change, hide it in a 1500 line pull request.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lesetipp: &lt;a href=&#34;https://frankchimero.com/blog/2018/everything-easy/&#34;&gt;&amp;quot;Everything Easy is Hard Again&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Money Quote: &amp;quot;I wonder if I have twenty years of experience making websites, or if it is really five years of experience, repeated four times.&amp;quot;&lt;/li&gt;
&lt;li&gt;Xyrills Beobachtung: Die Branche (selbst die Universitäten!) rennt viel zu sehr Trends hinterher bzw. steckt zu sehr im selbst propagierten Novelty Bias fest. Wir haben noch nicht hinreichend die unveränderlichen Prinzipien destilliert (bzw. als solche erkannt).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:02:49" title="Ausgangsfrage: &#34;Ist Programmieren eigentlich ein Handwerk, eine Kunst oder eine Wissenschaft?&#34;"  />
          <chapter start="00:05:58" title="Vergleich: Industrie vs. Handwerk"  />
          <chapter start="00:11:46" title="These: Programmieren als Manufakturbetrieb"  />
          <chapter start="00:14:06" title="Berufskrankheit: Hochstapler-Syndrom"  />
          <chapter start="00:17:51" title="Ausbildungsinhalt vs. Berufsalltag"  />
          <chapter start="00:21:42" title="Heiteres Beruferaten: Softwareentwickler*in"  />
          <chapter start="00:30:07" title="Beruferaten: Software-Architekt*in"  />
          <chapter start="00:35:50" title="Beruferaten: Tester*in"  />
          <chapter start="00:45:32" title="Beruferaten: Systemadministrator*in"  />
          <chapter start="00:49:05" title="Beruferaten: Kundendienst"  />
          <chapter start="00:56:41" title="Beruferaten: Übersetzer*in"  />
          <chapter start="00:57:48" title="Beruferaten: UI-Designer*in"  />
          <chapter start="01:01:06" title="Beruferaten in der Spieleentwicklung: Spieldesign, Leveldesign, Assetdesign"  />
          <chapter start="01:07:59" title="Beruferaten: Projekt-Manager*in"  />
          <chapter start="01:09:43" title="Beruferaten: Release-Manager*in"  />
          <chapter start="01:13:08" title="Beruferaten: Scrum Master*in"  />
          <chapter start="01:15:58" title="&#34;Gesetze&#34; der Softwareentwicklung"  />
          <chapter start="01:34:30" title="Lesetipp"  />
      </chapters>
      <enclosure length="97319414" url="https://dl.xyrillian.de/noises/stp-030-arbeitsalltag-in-der-it.mp3" type="audio/mpeg"/>
      <enclosure length="62551128" url="https://dl.xyrillian.de/noises/stp-030-arbeitsalltag-in-der-it.ogg" type="audio/ogg"/>
      <enclosure length="36621438" url="https://dl.xyrillian.de/noises/stp-030-arbeitsalltag-in-der-it.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/030-arbeitsalltag-in-der-it/</guid>
    <pubDate>Thu, 29 Dec 2022 12:45:00 GMT</pubDate>
    <itunes:duration>101:01</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP029: Algorithmische Komplexität</itunes:title>
    <itunes:episode>29</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP029: Algorithmische Komplexität</title>
    <link>https://schluesseltechnologie-podcast.de/029-algorithmische-komplexitaet</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode möchte Xyrill gern eine Vorlesung halten über ein Thema, das in der Informatik zu den Grundlagen für das erste Semester gehört.
Zwischendurch ist ttimeless etwas schwer von Begriff. Zu hoffen ist, dass ihr trotzdem durchhaltet.
Und haltet ein paar Skatkarten bereit!</itunes:summary>
    <description>In dieser Episode möchte Xyrill gern eine Vorlesung halten über ein Thema, das in der Informatik zu den Grundlagen für das erste Semester gehört.
Zwischendurch ist ttimeless etwas schwer von Begriff. Zu hoffen ist, dass ihr trotzdem durchhaltet.
Und haltet ein paar Skatkarten bereit!</description>
    <content:encoded>&lt;p&gt;In dieser Episode möchte Xyrill gern eine Vorlesung halten über ein Thema, das in der Informatik zu den Grundlagen für das erste Semester gehört.
Zwischendurch ist ttimeless etwas schwer von Begriff. Zu hoffen ist, dass ihr trotzdem durchhaltet.
Und haltet ein paar Skatkarten bereit!&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Komplexität&lt;/strong&gt;: Ressourcenbedarf eines Algorithmus (Zeitkomplexität, Platzkomplexität; vielleicht auch Kostenkomplexität etc.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Forschungsgegenstand der Komplexitätstheorie&lt;/li&gt;
&lt;li&gt;hier hauptsächlich Zeitkomplexität&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;einfaches Beispielproblem: &amp;quot;Gegeben ist eine sortierte Liste von Wörtern (Schlagwörter im Wörterbuch). Finde ein bestimmtes Wort.&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;naive Idee: jedes Wort nacheinander anschauen -&amp;gt; lineare Laufzeit (Verdopplung der Wörtermenge verdoppelt die zu erwartende Suchzeit)&lt;/li&gt;
&lt;li&gt;kluge Idee: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bisektion&amp;amp;oldid=194714676&#34;&gt;Bisektion&lt;/a&gt; -&amp;gt; logarithmische Laufzeit (Verdopplung der Wörtermenge erfordert nur einen zusätzlichen Schritt)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beschreibung von Komplexität: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Landau-Symbole&amp;amp;oldid=217959469&#34;&gt;&lt;strong&gt;Landau-Symbole&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wichtigste Form: &lt;code&gt;f = O(g)&lt;/code&gt; heißt, dass &lt;code&gt;f&lt;/code&gt; &amp;quot;nicht wesentlich schneller als &lt;code&gt;g&lt;/code&gt; wächst (sprich: &lt;code&gt;f(n)/g(n)&lt;/code&gt; bleibt beschränkt, wenn &lt;code&gt;n -&amp;gt; ∞&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Beispiel: naive Suche über eine Liste von &lt;code&gt;n&lt;/code&gt; Elementen hat eine Laufzeit in &lt;code&gt;O(n)&lt;/code&gt;, Bisektion hat eine Laufzeit in &lt;code&gt;O(log n)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;etwas komplexeres Beispiel: Sortieralgorithmen (&amp;quot;Gegeben ist eine Liste von Zahlen/Wörtern/etc. Sortiere diese Liste.&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Live-Beispiel: Skatkarten mischen und dann sortieren -&amp;gt; Auf welche Art und Weise sortieren wir intuitiv?&lt;/li&gt;
&lt;li&gt;Sortieralgorithmen auf Computern: zwei Grundbausteine
&lt;ul&gt;
&lt;li&gt;Vergleich von zwei Elementen&lt;/li&gt;
&lt;li&gt;Tauschen von zwei Elementen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;anhand von Skatkarten diskutierbar:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Insertionsort&amp;amp;oldid=222921729&#34;&gt;Insertionsort&lt;/a&gt;: &lt;code&gt;O(n^2)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Quicksort&amp;amp;oldid=224184691&#34;&gt;Quicksort&lt;/a&gt;: &lt;code&gt;O(n log n)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Mergesort&amp;amp;oldid=223738956&#34;&gt;Mergesort&lt;/a&gt;: &lt;code&gt;O(n log n)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;wünschenswerte Eigenschaften:
&lt;ul&gt;
&lt;li&gt;Lokalität (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Timsort&amp;amp;oldid=217156701&#34;&gt;Timsort&lt;/a&gt;!, siehe STP007)&lt;/li&gt;
&lt;li&gt;Stabilität (Mergesort!)&lt;/li&gt;
&lt;li&gt;Codegröße (Quicksort!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schauempfehlung (mit Epilepsie-Warnung): &lt;a href=&#34;https://www.youtube.com/watch?v=8MsTNqK3o_w&#34;&gt;Visualisierung verschiedener Sortieralgorithmen&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Gespräch erwähnt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Bacon-Zahl&amp;amp;oldid=214690502&#34;&gt;Bacon-Zahl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Erd%C5%91s-Zahl&amp;amp;oldid=222414205&#34;&gt;Erdős-Zahl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://czep.net/weblog/52cards.html&#34;&gt;How large is 52 factorial?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:03:39" title="Was ist Komplexität?"  />
          <chapter start="00:11:40" title="einfaches Beispielproblem: Suche in einer sortierten Liste"  />
          <chapter start="00:22:34" title="Beschreibung von Komplexität: Landau-Symbole"  />
          <chapter start="00:25:40" title="komplexeres Beispiel: Sortieralgorithmen"  />
          <chapter start="00:58:15" title="Linkempfehlungen"  />
      </chapters>
      <enclosure length="63782806" url="https://dl.xyrillian.de/noises/stp-029-algorithmische-komplexitaet.mp3" type="audio/mpeg"/>
      <enclosure length="39941954" url="https://dl.xyrillian.de/noises/stp-029-algorithmische-komplexitaet.ogg" type="audio/ogg"/>
      <enclosure length="24493270" url="https://dl.xyrillian.de/noises/stp-029-algorithmische-komplexitaet.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/029-algorithmische-komplexitaet/</guid>
    <pubDate>Thu, 08 Dec 2022 12:15:00 GMT</pubDate>
    <itunes:duration>66:05</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP028: Autokonfiguration</itunes:title>
    <itunes:episode>28</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP028: Autokonfiguration</title>
    <link>https://schluesseltechnologie-podcast.de/028-autokonfiguration</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wenn Sie diese Nachricht lesen, hat sich diese Folge automatisch in ihren Podcast-Player konfiguriert. Heute geht es darum, warum es heute nicht mehr so kompliziert ist, einen Computer oder ein Netzwerk einzurichten.</itunes:summary>
    <description>Wenn Sie diese Nachricht lesen, hat sich diese Folge automatisch in ihren Podcast-Player konfiguriert. Heute geht es darum, warum es heute nicht mehr so kompliziert ist, einen Computer oder ein Netzwerk einzurichten.</description>
    <content:encoded>&lt;p&gt;Wenn Sie diese Nachricht lesen, hat sich diese Folge automatisch in ihren Podcast-Player konfiguriert. Heute geht es darum, warum es heute nicht mehr so kompliziert ist, einen Computer oder ein Netzwerk einzurichten.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automatisierung:&lt;/strong&gt; nach DIN V 19233 definiert als &amp;quot;das Ausrüsten einer Einrichtung, sodass sie ganz oder teilweise ohne Mitwirkung des Menschen bestimmungsgemäß arbeitet&amp;quot; (&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Automatisierung&amp;amp;oldid=222194579#Arten&#34;&gt;Quelle: Wikipedia&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Was heißt &amp;quot;bestimmungsgemäß&amp;quot;? (siehe 33C3-Motto &amp;quot;Works for me&amp;quot;; siehe ebenfalls &amp;quot;Overly-Clever-Syndrom&amp;quot;)&lt;/li&gt;
&lt;li&gt;heute feiern wir Autokonfiguration, die tatsächlich funktioniert&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Autokonfiguration:&lt;/strong&gt; automatisierte Führung eines neu entstehenden Systems in einen arbeitsfähigen Zustand&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP020 (Bootstrap): Hardware-Erkennung während (und nach) dem Bootvorgang&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;früher: Betriebssysteme spezifisch für einzelne Computer-Modellreihen mit gleichartiger Hardware&lt;/li&gt;
&lt;li&gt;heute: Betriebssysteme für ganze Kategorien von Computern, die oftmals vom Anwender selbst aus Komponenten zusammengestellt werden können&lt;/li&gt;
&lt;li&gt;während des Bootvorgangs Abfrage der vorliegenden Hardware-Komponenten durch das Betriebssystem (siehe Xyrills Hardware-Upgrade)&lt;/li&gt;
&lt;li&gt;nach dem Bootvorgang teilweise auch Neuerkennung möglich (Hotswap, USB, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Ethernet&amp;amp;oldid=223634192&#34;&gt;Ethernet&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ausführliche Beschreibung siehe später; Grundprinzip: Netzwerk aus Switches, an denen die Endgeräte hängen&lt;/li&gt;
&lt;li&gt;Autokonfiguration 1: früher separate Kabel für Verbindungen zu Switches (Patch-Kabel) und Direktverbindungen (Cross-Kabel), heute automatische Erkennung mittels &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Medium_Dependent_Interface&amp;amp;oldid=202484104#Auto_MDI-X&#34;&gt;Auto MDI-X&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;ähnlich dazu automatische Orientierungs-Erkennung in USB-C-Steckverbindungen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Autokonfiguration 2: früher Switches nicht in Schleifen verschaltbar (Broadcast-Stürme z.B. wegen ARP und DHCP)&lt;/li&gt;
&lt;li&gt;heute automatische Bildung eines &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Spanning_Tree_Protocol&amp;amp;oldid=224259716&#34;&gt;Spannbaumes&lt;/a&gt; für eindeutiges Routing von Frames&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apropos Ethernet: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Address_Resolution_Protocol&amp;amp;oldid=224525810&#34;&gt;ARP (Address Resolution Protocol)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Identifikation im Internet (Layer 3-7) durch IP-Adressen, aber in lokalen Netzen (Layer 1-2) durch adapterspezifische MAC-Adressen&lt;/li&gt;
&lt;li&gt;IP-Adressen können Computer sich im Prinzip auch einfach selber geben, grundsätzlich keine zentrale Vergabe&lt;/li&gt;
&lt;li&gt;ARP: Welche MAC-Adresse gehört zur gewünschten IP-Adresse?&lt;/li&gt;
&lt;li&gt;MAC-Adressen und ARP gibt&#39;s auch im WiFi...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apropos Ethernet und WiFi: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Dynamic_Host_Configuration_Protocol&amp;amp;oldid=224991751&#34;&gt;DHCP (Dynamic Host Configuration Protocol)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grundsätzlich Selbstwahl der IP möglich, aber man muss im richtigen Netzbereich sein und es darf keine Kollisionen geben&lt;/li&gt;
&lt;li&gt;meist bessere Lösung: automatische IP-Vergabe durch eine zentrale Stelle (Clients können IP-Adressen für eine gewisse Zeit pachten)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;apropos DHCP: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Trivial_File_Transfer_Protocol&amp;amp;oldid=224254220&#34;&gt;TFTP (Trivial File Transfer Protocol)&lt;/a&gt; -&amp;gt; per DHCP automatisches Ankündigen von verfügbaren Betriebssystem-Images, Abholen der Images über TFTP für Booten mit leerer Festplatte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe auch: &lt;a href=&#34;https://discussions.apple.com/thread/7645024?answerId=7645024021#7645024021&#34;&gt;Installieren von macOS auf Apple Macs mit leerer Festplatte via Internet Recovery&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;IPv6 (Router Advertisement etc.) &lt;a href=&#34;https://requestforcomments.de/archives/412&#34;&gt;siehe RFC-Podcast&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Autokonfiguration im Cloud-Computing-Umfeld&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;virtuelle Maschinen in der Cloud werden aus Abbildern (Images) erzeugt und müssen sich dann an die Laufzeitumgebung (IP-Adressen, verfügbare Netzwerk-Festplatten, etc.) anpassen&lt;/li&gt;
&lt;li&gt;von Cloud-Seite: Metadata-Service meist auf der magischen IP-Adresse &lt;code&gt;169.254.169.254&lt;/code&gt; (siehe z.B. &lt;a href=&#34;https://docs.openstack.org/nova/yoga/user/metadata.html#metadata-openstack-format&#34;&gt;Dokumentation bei OpenStack&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;von VM-Seite: Initialisierung mittels dieser Metadaten mit z.B. &lt;a href=&#34;https://cloudinit.readthedocs.io/en/latest/index.html&#34;&gt;cloud-init&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Präludium"  />
          <chapter start="00:01:33" title="Definition"  />
          <chapter start="00:12:21" title="Hardware-Erkennung"  />
          <chapter start="00:20:00" title="Ethernet"  />
          <chapter start="00:21:22" title="Exkurs: USB"  />
          <chapter start="00:24:26" title="Zurück zum Ethernet: Patch- vs Cross-Kabel"  />
          <chapter start="00:28:55" title="Ethernet: Spanning Tree Protocol"  />
          <chapter start="00:37:30" title="Rant: Ethernet vs WIFI"  />
          <chapter start="00:42:57" title="ARP (Address Resolution Protocol"  />
          <chapter start="00:48:19" title="DHCP"  />
          <chapter start="00:56:35" title="apropos DHCP: TFTP Trivial File Transfer Protocol"  />
          <chapter start="01:03:38" title="IPv6"  />
          <chapter start="01:05:00" title="Autokonfiguration im Cloud-Computing-Umfeld"  />
      </chapters>
      <enclosure length="67469639" url="https://dl.xyrillian.de/noises/stp-028-autokonfiguration.mp3" type="audio/mpeg"/>
      <enclosure length="41766229" url="https://dl.xyrillian.de/noises/stp-028-autokonfiguration.ogg" type="audio/ogg"/>
      <enclosure length="25368509" url="https://dl.xyrillian.de/noises/stp-028-autokonfiguration.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/028-autokonfiguration/</guid>
    <pubDate>Thu, 17 Nov 2022 16:05:00 GMT</pubDate>
    <itunes:duration>69:56</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP027: Verteilte Systeme</itunes:title>
    <itunes:episode>27</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP027: Verteilte Systeme</title>
    <link>https://schluesseltechnologie-podcast.de/027-verteilte-systeme</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Episode bringt Xyrill uns versprengte Systeme näher. Dabei erfahren wir auch, dass Dinge, die wir als Grundvoraussetzung ansehen würden, bei genauerer Betrachtung gar nicht so selbstverständlich sind.</itunes:summary>
    <description>In dieser Episode bringt Xyrill uns versprengte Systeme näher. Dabei erfahren wir auch, dass Dinge, die wir als Grundvoraussetzung ansehen würden, bei genauerer Betrachtung gar nicht so selbstverständlich sind.</description>
    <content:encoded>&lt;p&gt;In dieser Episode bringt Xyrill uns versprengte Systeme näher. Dabei erfahren wir auch, dass Dinge, die wir als Grundvoraussetzung ansehen würden, bei genauerer Betrachtung gar nicht so selbstverständlich sind.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Verteiltes_System&amp;amp;oldid=223080049&#34;&gt;Laut Wikipedia&lt;/a&gt; eine überraschend breite Definition:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ein verteiltes System ist [...] ein Zusammenschluss unabhängiger Computer, die sich für den Benutzer als ein einziges System präsentieren.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Motivationen für verteilte Systeme&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kommunikation zwischen Computern mit verschiedenen Eigentümern (z.B. Chatnetzwerk, Banküberweisung)&lt;/li&gt;
&lt;li&gt;Teilen von Ressourcen (z.B. Druckerfreigabe)&lt;/li&gt;
&lt;li&gt;Hochverfügbarkeit&lt;/li&gt;
&lt;li&gt;Lastverteilung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundlage des Problems: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=CAP-Theorem&amp;amp;oldid=222904512&#34;&gt;CAP-Theorem&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es gibt drei extrem wünschenswerte Eigenschaften. Wähle zwei.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsistenz&lt;/strong&gt; (Consistency): Lesevorgänge liefern immer die Daten, die zuletzt geschrieben wurden.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Verfügbarkeit&lt;/strong&gt; (Availability): Alle Anfragen an das System werden stets beantwortet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Partitionstoleranz&lt;/strong&gt;: Das System kann bei Störungen des Netzwerkes oder einzelner Computer weiterarbeiten.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiele bekannter Systeme gemäß CAP-Klassifikation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CP: Banküberweisung, Geldautomat&lt;/li&gt;
&lt;li&gt;CA: Datenbanksysteme (siehe Folge 12)&lt;/li&gt;
&lt;li&gt;AP: DNS (siehe Folge 18)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Komplexbeispiel: Verteilte Datenbank mit &lt;a href=&#34;https://en.wikipedia.org/w/index.php?title=Raft_(algorithm)&amp;amp;oldid=1095427922&#34;&gt;Raft-Konsensalgorithmus&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computernetzwerk aus N gleichartigen Teilnehmern (N meist ungerade, um Pattsituationen zu vermeiden)&lt;/li&gt;
&lt;li&gt;pro &lt;strong&gt;Wahlperiode&lt;/strong&gt; ein &lt;strong&gt;Anführer&lt;/strong&gt;, alle anderen folgen dem Anführer&lt;/li&gt;
&lt;li&gt;Schreibvorgänge gehen an den Anführer, werden von ihm an die Folger verteilt, und erst quittiert, wenn eine Mehrzahl der Folger Vollzug meldet&lt;/li&gt;
&lt;li&gt;Anführer sagt regelmäßig (Größenordnung 150-300 ms) allen Folgern Bescheid, dass er noch anführt&lt;/li&gt;
&lt;li&gt;bei Ausbleiben der Meldung vom Anführer startet jeder Folger eine neue Wahlperiode und stimmt für sich selbst als neuen Anführer&lt;/li&gt;
&lt;li&gt;pro Wahlperiode:
&lt;ul&gt;
&lt;li&gt;wer jemand anderen abstimmen sieht, bevor er selbst abstimmt, folgt sofort der gesehenen Stimme&lt;/li&gt;
&lt;li&gt;wer die Mehrheit der Stimmen auf sich vereinigt, ist der neue Anführer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;bei Pattsituationen beginnt nach einer Wartefrist die nächste Wahlperiode (Wartefrist ist pro Teilnehmer randomisiert, um Kettenpatt zu vermeiden)&lt;/li&gt;
&lt;li&gt;CAP-Bewertung: CA (nicht partitionstolerant, weil eine Mehrheit der Teilnehmer erforderlich ist)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;hier nicht betrachtet: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Byzantinischer_Fehler&amp;amp;oldid=219637933&#34;&gt;Byzantinische Fehler&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paper: &lt;a href=&#34;https://web.archive.org/web/20140124011140/research.microsoft.com/en-us/people/mickens/thesaddestmoment.pdf&#34;&gt;The Saddest Moment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Analogie zu Wahlcomputern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zum Nachlesen: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Fallacies_of_Distributed_Computing&amp;amp;oldid=223882907&#34;&gt;Irrtümer der verteilten Datenverarbeitung&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sidebar: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Volunteer-Computing&amp;amp;oldid=204027523&#34;&gt;Volunteer Computing&lt;/a&gt; (BOINC, SETI@Home, Folding@Home, etc.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;siehe &lt;a href=&#34;https://c3d2.de/news/pentacast-56-folding.html&#34;&gt;Pentacast 56&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nachtrag: geführte Visualisierung des Raft-Algorithmus (englisch): &lt;a href=&#34;https://thesecretlivesofdata.com/raft/&#34;&gt;https://thesecretlivesofdata.com/raft/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:07" title="Definition"  />
          <chapter start="00:04:06" title="Motivationen für verteilte Systeme"  />
          <chapter start="00:09:24" title="CAP-Theorem"  />
          <chapter start="00:15:00" title="Ausflug Internetregulierung und Verschlüsselung"  />
          <chapter start="00:16:52" title="Beispiele bekannter Systeme gemäß CAP-Klassifikation"  />
          <chapter start="00:30:14" title="Komplexbeispiel: Verteilte Datenbank mit Raft-Konsensalgorithmus"  />
          <chapter start="00:45:31" title="Kurz zu byzantinischen Generälen"  />
          <chapter start="00:50:00" title="Irrtümer der verteilten Datenverarbeitung"  />
          <chapter start="00:53:40" title="Volunteer Computing"  />
          <chapter start="00:56:17" title="Nachtrag: geführte Visualisierung des Raft-Algorithmus"  />
      </chapters>
      <enclosure length="56233789" url="https://dl.xyrillian.de/noises/stp-027-verteilte-systeme.mp3" type="audio/mpeg"/>
      <enclosure length="34663055" url="https://dl.xyrillian.de/noises/stp-027-verteilte-systeme.ogg" type="audio/ogg"/>
      <enclosure length="20928865" url="https://dl.xyrillian.de/noises/stp-027-verteilte-systeme.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/027-verteilte-systeme/</guid>
    <pubDate>Thu, 27 Oct 2022 00:05:00 GMT</pubDate>
    <itunes:duration>58:13</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP026: Energieeffizienz</itunes:title>
    <itunes:episode>26</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP026: Energieeffizienz</title>
    <link>https://schluesseltechnologie-podcast.de/026-energieeffizienz</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Seit der Zeit von Konrad Zuse, der seine Rechenmaschinen mit Relais baute, hat sich viel getan. Nicht nur, was die Geschwindigkeit, sondern auch, was die Effizienz betrifft. Wir beleuchten heute einige jüngere Ereignisse dieser Entwicklung.</itunes:summary>
    <description>Seit der Zeit von Konrad Zuse, der seine Rechenmaschinen mit Relais baute, hat sich viel getan. Nicht nur, was die Geschwindigkeit, sondern auch, was die Effizienz betrifft. Wir beleuchten heute einige jüngere Ereignisse dieser Entwicklung.</description>
    <content:encoded>&lt;p&gt;Seit der Zeit von Konrad Zuse, der seine Rechenmaschinen mit Relais baute, hat sich viel getan. Nicht nur, was die Geschwindigkeit, sondern auch, was die Effizienz betrifft. Wir beleuchten heute einige jüngere Ereignisse dieser Entwicklung.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Wortklärung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;effektiv&amp;quot;: die Fähigkeit besitzend, eine Aufgabe erfolgreich zu erledigen&lt;/li&gt;
&lt;li&gt;&amp;quot;effizient&amp;quot;: fähig, viel Leistung in Relation zum Aufwand zu erbringen&lt;/li&gt;
&lt;li&gt;Leitsatz: &amp;quot;Der einzige Weg, ein Programm effizienter zu machen, ist, weniger zu tun.&amp;quot; (Quelle unklar)&lt;/li&gt;
&lt;li&gt;Welche Wege gibt es, weniger zu tun?&lt;/li&gt;
&lt;li&gt;hängt vom Optimierungsziel ab: Speicherverbrauch vs. Zeitverbrauch vs. Energieverbrauch vs. Kosten bei Zugriff auf externe Systeme -&amp;gt; Analogie zum Navigationssystem im Auto&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Cache&#34;&gt;Caching&lt;/a&gt;: Ergebnisse wiederverwenden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abruf aus dem Arbeitsspeicher ist effizienter (in Zeit und Energie) als Abruf aus dem Netzwerk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Miniaturisierung&#34;&gt;Miniaturisierung&lt;/a&gt;: weniger Elektronen durch die Gegend schaufeln&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;viele Zahlen für wenig Wärme&amp;quot;&lt;/li&gt;
&lt;li&gt;Transistoren sind ähnlich wie Relais-Schalter, die durch Auffüllen und Leeren einer Elektronenfalle umschalten&lt;/li&gt;
&lt;li&gt;kleinere Transistoren = weniger Elektronen schaufeln = weniger Stromverbrauch (und weniger Abwärme)&lt;/li&gt;
&lt;li&gt;zeitlicher Verlauf der &lt;a href=&#34;https://de.wikipedia.org/wiki/Strukturgr%C3%B6%C3%9Fe&#34;&gt;Strukturgrößen&lt;/a&gt; anhand von x86-Prozessoren (mit bildlichem Vergleich zu mechanischen Schaltern im Maßstab 1.000.000:1)
&lt;ul&gt;
&lt;li&gt;1971 (Intel 4004): 10µm (vgl. 10m = nur im Cartoon, etwa 3-4 Etagen hoch)&lt;/li&gt;
&lt;li&gt;1993 (Intel Pentium): 800nm (vgl. 80cm = Weichenhebel in manuellem Stellwerk, kleiner Scherenstromabnehmer)&lt;/li&gt;
&lt;li&gt;2007 (ohne Produktbezeichnung): 65nm (vgl. 65mm = Lichtschalter)&lt;/li&gt;
&lt;li&gt;2019 (AMD Ryzen): 7nm (vgl. 7mm = Kippschalter an der Schreibtischlampe)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Heterogeneous_computing&#34;&gt;heterogene CPU-Architektur&lt;/a&gt;, z.B. &amp;quot;big.LITTLE&amp;quot; bei ARM&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kleine CPU-Kerne (mit geringem Stromverbrauch) für Routinearbeit und Hintergrundprozesse&lt;/li&gt;
&lt;li&gt;große CPU-Kerne (die meistens schlafen) für energieintensive Anwendungen (3D-Grafik bei Spielen, Enkodierung/Dekodierung bei Videoanrufen, etc.)&lt;/li&gt;
&lt;li&gt;außerdem Betrieb der kleinen Kerne sehr stoßartig: lieber kurz mit hoher Taktfrequenz und dann gleich wieder schlafen als permanent langsam laufen lassen (Randbemerkung: anders als z.B. bei Verbrennungsmotoren, aber Parallelen zu Elektromotoren)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;im Zusammenhang damit: &amp;quot;Aufwachverschmelzung&amp;quot; (z.B. systemd.timer)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: für geplante Hintergrundaktivitäten die Takte so verschieben, dass möglichst viele Aktivitäten gleichzeitig ausgeführt werden und die CPU-Kerne möglichst selten aufwachen müssen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ebenfalls im Zusammenhang damit: Push Gateways auf iOS/Android&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Netzwerkverbindungen = Energieverbrauch (für das Funken und das Verarbeiten in der CPU)&lt;/li&gt;
&lt;li&gt;Netzwerkverbindung aufhalten = Energieverbrauch (für Keepalive-Pakete)&lt;/li&gt;
&lt;li&gt;Idee: statt einer Netzwerkverbindung pro Messenger-App eine zentrale Netzwerkverbindung zu einem zentralen Relay-Server vom Betriebssystem-Anbieter&lt;/li&gt;
&lt;li&gt;aber: aus Datenschutzsicht problematisch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Xyrills Abendgedanken: Wie kann es sein, dass alles soviel effizienter ist, aber wir machen nicht mehr damit? (siehe klassische Floskel: &amp;quot;modernes Smartphone ist mächtiger als die Computer in der Apollo-Kapsel&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wir erwarten gleichzeitig immer mehr von den Geräten (z.B. Grafikqualität: gleich komplizierte App, aber früher auf 80x25-Terminal und heute auf Full-HD-Bildschirm)&lt;/li&gt;
&lt;li&gt;vgl. &lt;a href=&#34;https://de.wikipedia.org/wiki/Jevons-Paradoxon&#34;&gt;Jevons-Paradoxon&lt;/a&gt;: mehr Effizienz ermöglicht mehr Anwendungen, sodass letztlich der Energieverbrauch gleich bleibt oder sogar steigt&lt;/li&gt;
&lt;li&gt;waghalsige Prognose: viel mehr E-Ink-Displays, wenn Energieeffizienz wichtiger wird&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:58" title="Wortklärung"  />
          <chapter start="00:12:09" title="Cashing"  />
          <chapter start="00:14:28" title="Transistoren: die Kurzfassung"  />
          <chapter start="00:19:32" title="Miniaturisierung"  />
          <chapter start="00:28:34" title="heterogene CPU-Architektur"  />
          <chapter start="00:37:34" title="Aufwachverschmelzung"  />
          <chapter start="00:41:38" title="Push Gateways"  />
          <chapter start="00:48:24" title="Xyrills Abendgedanken"  />
      </chapters>
      <enclosure length="59256313" url="https://dl.xyrillian.de/noises/stp-026-energieeffizienz.mp3" type="audio/mpeg"/>
      <enclosure length="36436290" url="https://dl.xyrillian.de/noises/stp-026-energieeffizienz.ogg" type="audio/ogg"/>
      <enclosure length="22177301" url="https://dl.xyrillian.de/noises/stp-026-energieeffizienz.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/026-energieeffizienz/</guid>
    <pubDate>Thu, 06 Oct 2022 18:50:00 GMT</pubDate>
    <itunes:duration>61:22</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP025: Datenkompression</itunes:title>
    <itunes:episode>25</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP025: Datenkompression</title>
    <link>https://schluesseltechnologie-podcast.de/025-datenkompression</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Trotz des Themas haben wir es nicht geschafft, uns kurz zu fassen. Xyrill musste den Preis dafür zahlen. In dieser Sendung: Ein Einstieg mit flachen Witzen, gezinkte Münzen, naive Betrachtungsweisen und schwierige Abwägungen.</itunes:summary>
    <description>Trotz des Themas haben wir es nicht geschafft, uns kurz zu fassen. Xyrill musste den Preis dafür zahlen. In dieser Sendung: Ein Einstieg mit flachen Witzen, gezinkte Münzen, naive Betrachtungsweisen und schwierige Abwägungen.</description>
    <content:encoded>&lt;p&gt;Trotz des Themas haben wir es nicht geschafft, uns kurz zu fassen. Xyrill musste den Preis dafür zahlen. In dieser Sendung: Ein Einstieg mit flachen Witzen, gezinkte Münzen, naive Betrachtungsweisen und schwierige Abwägungen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Einführungsbeispiel: simulierte schlechte Leitung (&amp;quot;xxxxxx heute xxxxxx Podcast xxxxxx Thema xxxxxx Kompression xxxxxx&amp;quot; -&amp;gt; &amp;quot;In unserer heutigen Folge unseres Podcasts ist das Thema die Datenkompression.&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;naiver Impuls eines Erstsemester-Linguistikstudenten: &amp;quot;Warum sagt man nicht gleich &#39;heute Podcast Thema Kompression&#39;?&amp;quot;&lt;/li&gt;
&lt;li&gt;Sprache ist so gestaltet, dass auch teilweise fehlerhafte Informationen noch korrekt ankommen&lt;/li&gt;
&lt;li&gt;beim Hören intuitiver Einsatz eines Vorhersagemodells, um kommende Silben/Wörter/Phrasen vorherzusagen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;theoretische Grundlagen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bit:&lt;/strong&gt; Basiseinheit für &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Informationsgehalt&amp;amp;oldid=219708601&#34;&gt;Informationsgehalt&lt;/a&gt; (enstprechend der Auswahl aus zwei gleich wahrscheinlichen Möglichkeiten), allerdings nicht im SI-System verankert&lt;/li&gt;
&lt;li&gt;Beispiel Münzwurf:
&lt;ul&gt;
&lt;li&gt;ideale Münze (50% Kopf &#43; 50% Zahl) liefert 1 Bit pro Wurf&lt;/li&gt;
&lt;li&gt;reelle Münze liefert mehr als 1 Bit pro Wurf (z.B. 49,5% Kopf &#43; 49,5% Zahl &#43; 1% Kante -&amp;gt; 1,07 Bit pro Wurf)&lt;/li&gt;
&lt;li&gt;gezinkte Münze liefert weniger als 1 Bit pro Wurf (z.B. 10% Kopf &#43; 90% Zahl -&amp;gt; 0,469 Bit pro Wurf)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;gute Komprimierbarkeit = niedriger Informationsgehalt -&amp;gt; häufiger, als man denkt (Bsp. nebeneinanderliegende Pixel eines Bildes sind ähnlich)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Entropie&amp;amp;oldid=223480319#Geschichtlicher_%C3%9Cberblick&#34;&gt;Zusammenhang mit physikalischer Entropie:&lt;/a&gt; Systeme mit geringer Entropie (z.B. Eisblock) sind einfach vorherzusagen, Beobachtungen haben geringen Informationsgehalt; Systeme mit hoher Entropie (z.B. Wasserdampf) sind schwer vorherzusagen, Beobachtungen haben hohen Informationsgehalt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;naive&amp;quot; Kompressionsmethoden (die man auch als Mensch überblicken kann)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nutzung von Allgemeinwissen
&lt;ul&gt;
&lt;li&gt;Beispiel aus der Vorbereitung: &amp;quot;Schachbrett&amp;quot; im Kontext von Exponentialfunktionen ruft die Assoziation einer ganzen Geschichte auf&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Wörterbuchmethode für Text
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Datenkompression&amp;amp;oldid=222957700#Text&#34;&gt;Beispiel aus Wikipedia&lt;/a&gt;: &amp;quot;wenn Fliegen hinter Fliegen fliegen, fliegen Fliegen Fliegen nach&amp;quot; -&amp;gt; &amp;quot;wenn Fliegen hinter \2 fliegen, \5 \2 \2 nach&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RLE (Run-Length Encoding) z.B. in Bildern wie &lt;a href=&#34;https://xyrillian.de/res/cover-stp.png&#34;&gt;dem Coverart dieses Podcasts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Datenkompression&amp;amp;oldid=222957700#Entropiekodierung&#34;&gt;Huffman-Kodierung&lt;/a&gt; wie im &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Morsecode&amp;amp;oldid=222300739#Standard-Codetabelle&#34;&gt;Morse-Code&lt;/a&gt; (Verbindung zur Linguistik!)&lt;/li&gt;
&lt;li&gt;Minifizierung von Skripten
&lt;ul&gt;
&lt;li&gt;Beispiel: jQuery 3.6 &lt;a href=&#34;https://code.jquery.com/jquery-3.6.0.js&#34;&gt;ohne Minifizierung&lt;/a&gt; und &lt;a href=&#34;https://code.jquery.com/jquery-3.6.0.min.js&#34;&gt;mit Minifizierung&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;zwei fundamentale Abwägungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Geschwindigkeit vs. Stärke (z.B. Debian-Pakete mit zwei getrennten Bereichen, die verschiedene Kompressionsverfahren nutzen)&lt;/li&gt;
&lt;li&gt;verlustfrei vs. verlustbehaftet (Bsp. Pentaradio vom Mai 2022: Radiofassung als FLAC 271,7 MiB; Endprodukt als Opus 52,0 MiB)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kompressionsmethoden im Audio-Video-Bereich beispielhaft anhand ihres Verlustverhaltens&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Blockartefakt&amp;amp;oldid=121557554&#34;&gt;Blockartefakte&lt;/a&gt; bei JPEG&lt;/li&gt;
&lt;li&gt;Psychoakustik bei &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=MP3&amp;amp;oldid=223021491#Verfahren&#34;&gt;MP3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Datamoshing bei Videos (&lt;a href=&#34;https://www.youtube.com/watch?v=rMSsw4CZvKg&#34;&gt;Beispiel&lt;/a&gt;) illustriert Bedeutung von &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Intra-Frame&amp;amp;oldid=198265016&#34;&gt;Intra-Frames&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;siehe auch &lt;a href=&#34;https://www.youtube.com/watch?v=icruGcSsPp0&#34;&gt;dasselbe Video, 1000-mal komprimiert und dekomprimiert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Einfluss fester Bitrate auf Audio/Videos&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;theoretische Grenze: &lt;a href=&#34;https://de.wikipedia.org/w/index.php?title=Kolmogorow-Komplexit%C3%A4t&amp;amp;oldid=207581838&#34;&gt;Kolmogorow-Komplexität&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fußnoten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ttimeless fühlt sich verpflichtet, auf den &lt;a href=&#34;https://requestforcomments.de/archives/320&#34;&gt;RFC-Podcast zu verlinken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;David Kriesel: &lt;a href=&#34;https://media.ccc.de/v/31c3_-_6558_-_de_-_saal_g_-_201412282300_-_traue_keinem_scan_den_du_nicht_selbst_gefalscht_hast_-_david_kriesel&#34;&gt;&amp;quot;Traue keinem Scan, den du nicht selbst gefälscht hast&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Einleitung"  />
          <chapter start="00:02:18" title="Einführungsbeispiel"  />
          <chapter start="00:06:32" title="Theoretische Grundlagen"  />
          <chapter start="00:29:48" title="naive Kompressionsmethoden"  />
          <chapter start="00:54:40" title="fundamentale Abwägungen"  />
          <chapter start="01:06:16" title="Kompressionsmethoden im Audio-Video-Bereich beispielhaft anhand ihres Verlustverhaltens"  />
      </chapters>
      <enclosure length="78187804" url="https://dl.xyrillian.de/noises/stp-025-datenkompression.mp3" type="audio/mpeg"/>
      <enclosure length="47801952" url="https://dl.xyrillian.de/noises/stp-025-datenkompression.ogg" type="audio/ogg"/>
      <enclosure length="29130112" url="https://dl.xyrillian.de/noises/stp-025-datenkompression.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/025-datenkompression/</guid>
    <pubDate>Thu, 15 Sep 2022 19:00:00 GMT</pubDate>
    <itunes:duration>81:06</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP024: Cloud Computing</itunes:title>
    <itunes:episode>24</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP024: Cloud Computing</title>
    <link>https://schluesseltechnologie-podcast.de/024-cloud-computing</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Diese Episode beschäftigt sich mit anderer Leute Computer: warum man die überhaupt benutzen kann, und unter welchen Voraussetzungen das sinnvoll ist.</itunes:summary>
    <description>Diese Episode beschäftigt sich mit anderer Leute Computer: warum man die überhaupt benutzen kann, und unter welchen Voraussetzungen das sinnvoll ist.</description>
    <content:encoded>&lt;p&gt;Diese Episode beschäftigt sich mit anderer Leute Computer: warum man die überhaupt benutzen kann, und unter welchen Voraussetzungen das sinnvoll ist.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://blog.pragmaticworks.com/hs-fs/hubfs/Pizza_Cloud.jpg?width=1868&amp;amp;name=Pizza_Cloud.jpg&#34;&gt;Cloud Computing erklärt anhand von Pizza&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;On-Premise: kein Cloud Computing, Nutzer betreibt seine eigene Hardware und Software&lt;/li&gt;
&lt;li&gt;IaaS (Infrastructure as a Service): Cloud-Anbieter betreibt die Hardware, Nutzer bringt Betriebssystem und Software&lt;/li&gt;
&lt;li&gt;PaaS (Platform as a Service): Cloud-Anbieter betreibt die Hardware und das Betriebssystem, Nutzer bringt die Anwendung&lt;/li&gt;
&lt;li&gt;SaaS (Software as a Service): Cloud-Anbieter betreibt alles, Nutzer bedient die Anwendung nur noch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Fünf Grundanforderungen gemäß &lt;a href=&#34;http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf&#34;&gt;Definition durch NIST&lt;/a&gt; (NIST ist dem Aufgabenspektrum nach mit der PTB und dem BSI vergleichbar):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;On-Demand Self-Service:&lt;/strong&gt; Nutzer kann selber Ressourcen klicken, ohne Mitarbeiter beim Dienstanbieter zu involvieren&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bsp. SaaS-Anwendungen wie Dropbox, GitHub, Netflix, etc.&lt;/li&gt;
&lt;li&gt;Bsp. mal kurz ein dutzend VMs klicken, um eine komplizierte Server-Anwendung wie Kubernetes auszuprobieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Broad Network Access:&lt;/strong&gt; Ressourcen sind über das Netz mittels &amp;quot;Standardmethoden&amp;quot; erreichbar, ohne durch eine anbieterspezifische Zugriffstechnologie gehen zu müssen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Was soll diese Anforderung ausschließen? Xyrills Vermutung: z.B. das Telefonnetz, ttimeless&#39; Vermutung: Mainframes und Universitäts-Rechenzentren (die nur aus dem entsprechenden Intranet zu erreichen sind)&lt;/li&gt;
&lt;li&gt;zur Konfiguration und Administration jedoch meist anbieterspezifische Schnittstellen und Werkzeuge (entsprechend dem Funktionsumfang des jeweiligen Angebots) -&amp;gt; &lt;strong&gt;Vendor Lock-In&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resource Pooling:&lt;/strong&gt; Ressourcen werden unter mehreren/allen Kunden nach Bedarf aufgeteilt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sowohl zwischen mehreren Kunden (&amp;quot;Public Cloud&amp;quot;) als auch innerhalb einer Firma oder innerhalb eines Teams (&amp;quot;Private Cloud&amp;quot;)&lt;/li&gt;
&lt;li&gt;Bsp. CDN (Content Delivery Network): mehrere Kunden teilen sich ein weltweites Rechenzentrumsnetz, das jeder alleine so nicht bezahlen könnte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rapid Elasticity:&lt;/strong&gt; Ressourcen können kurzfristig zugeteilt und zurückgegeben werden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Bsp. Internet-Shop am Black Friday, Buchhaltungssystem am Quartalsende&lt;/li&gt;
&lt;li&gt;Bsp. Cloud-Gaming (Gegenbeispiel: &lt;a href=&#34;https://knowyourmeme.com/memes/error-37&#34;&gt;Error 37&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Measured Service:&lt;/strong&gt; Messung und Abrechnung der genutzten Ressourcen mindestens zeitnah oder sogar in Echtzeit&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;wie bei der Telefonrechnung früher&amp;quot;&lt;/li&gt;
&lt;li&gt;Bsp. sehr kurze Nutzung (z.B. einige Stunden) von leistungsstarker Hardware, z.B. um ein neuronales Netz zu trainieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probleme mit Cloud Computing&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zentralisierung: wenn ein Amazon-Rechenzentrum Probleme hat, ist gefühlt das halbe Internet weg&lt;/li&gt;
&lt;li&gt;Preistransparenz: siehe z.B. &lt;a href=&#34;https://www.troyhunt.com/how-i-got-pwned-by-my-cloud-costs/&#34;&gt;&amp;quot;I got pwned by my cloud costs&amp;quot;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Intro, Präludium"  />
          <chapter start="00:03:02" title="Wolken und Pizza"  />
          <chapter start="00:15:10" title="Definition durch NIST"  />
          <chapter start="00:19:23" title="On-Demand Self-Service"  />
          <chapter start="00:24:04" title="Broad Network Access"  />
          <chapter start="00:27:31" title="Resource Pooling"  />
          <chapter start="00:36:18" title="Rapid Elasticity"  />
          <chapter start="00:42:48" title="Measured Service"  />
          <chapter start="00:50:39" title="Probleme mit Cloud Computing"  />
      </chapters>
      <enclosure length="65456020" url="https://dl.xyrillian.de/noises/stp-024-cloud-computing.mp3" type="audio/mpeg"/>
      <enclosure length="40588664" url="https://dl.xyrillian.de/noises/stp-024-cloud-computing.ogg" type="audio/ogg"/>
      <enclosure length="24287187" url="https://dl.xyrillian.de/noises/stp-024-cloud-computing.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/024-cloud-computing/</guid>
    <pubDate>Thu, 25 Aug 2022 16:20:00 GMT</pubDate>
    <itunes:duration>67:50</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP023: Virtualisierung, Container, Sandboxing, Simulation/Emulation</itunes:title>
    <itunes:episode>23</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP023: Virtualisierung, Container, Sandboxing, Simulation/Emulation</title>
    <link>https://schluesseltechnologie-podcast.de/023-virtualisierung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die Sendung mit der Quersumme 5 beschäftigt sich damit, wie Computer so
tun können, als wären sie andere Computer. Außerdem beginnt Xyrill
damit, sein Mediensyndikat aufzubauen.</itunes:summary>
    <description>Die Sendung mit der Quersumme 5 beschäftigt sich damit, wie Computer so
tun können, als wären sie andere Computer. Außerdem beginnt Xyrill
damit, sein Mediensyndikat aufzubauen.</description>
    <content:encoded>&lt;p&gt;Die Sendung mit der Quersumme 5 beschäftigt sich damit, wie Computer so
tun können, als wären sie andere Computer. Außerdem beginnt Xyrill
damit, sein Mediensyndikat aufzubauen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Laut Wikipedia:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Virtualisierung_(Informatik)&#34;&gt;Virtualisierung&lt;/a&gt; bezeichnet in der Informatik die Nachbildung eines Hardware- oder Software-Objektes durch ein ähnliches Objekt vom selben Typ mithilfe einer Abstraktionsschicht.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;verschiedene Arten von Virtualisierung je nachdem, wo die Abstraktionsschicht liegt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Virtuelle Maschinen (VM): Hardware gleich, Betriebssysteme (OS) und Prozesse getrennt&lt;/li&gt;
&lt;li&gt;Container: OS gleich, Prozesse getrennt&lt;/li&gt;
&lt;li&gt;Sandboxing: getrennte Teile innerhalb eines Prozesses&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anwendungsfälle für VM (OS als Anwendung innerhalb eines anderen OS)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gleichzeitiger Betrieb von mehreren OS auf einem Computer (z.B. Linux als Hauptsystem, Windows-VM für bestimmte Anwendungen)&lt;/li&gt;
&lt;li&gt;saubere Abgrenzung von verschiedenen Programmen durch das Einsperren in VMs mit festen Ressourcen-Zuteilungen und Zugriffsschranken&lt;/li&gt;
&lt;li&gt;daraus folgend: Aufteilen einer einzelnen Server-Maschine in mehrere VMs für verschiedene Kunden&lt;/li&gt;
&lt;li&gt;Ermöglichung der Verschiebung von Programmen zwischen Maschinen im laufenden Betrieb (&amp;quot;Live-Migration&amp;quot;, z.B. bei Hardwarefehlern)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ansätze für VMs (Wie kann der Gast-Kernel seinen administrativen Aufgaben nachgehen, ohne selber vollen Zugriff auf das System zu erhalten?) anhand von Meilensteinen auf x86-CPUs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User Mode Linux (ab ca. 2000), Xen (ab 2003): &amp;quot;Paravirtualisierung&amp;quot;, Gast-Kernel ist von Anfang an so aufgebaut, dass er auch als Prozess unter einem anderen Kernel laufen kann (Hardware-Zugriff mittels Emulation, siehe unten)&lt;/li&gt;
&lt;li&gt;VMware Workstation (ab 1999), VirtualBox (ab 2007), etc.: &amp;quot;Software-Virtualisierung&amp;quot;, Gast-Kernel läuft in einem teilprivilegierten Modus (z.B. Ring 1 bei x86), sodass Hardware-Zugriff einen Fehler auslöst; der Host-Kernel erhält die Kontrolle zurück und macht den Hardwarezugriff im Namen des Gast-Kernels (Problem: Performance-Verlust gegenüber Direktzugriff auf die Hardware) (&lt;a href=&#34;https://docs.oracle.com/en/virtualization/virtualbox/6.0/admin/swvirt-details.html&#34;&gt;detaillierte Erklärung in der VirtualBox-Dokumentation&lt;/a&gt;)1&lt;/li&gt;
&lt;li&gt;Intel VT-x (ab 2005), AMD-V (ab 2006): &amp;quot;Hardware-Virtualisierung&amp;quot;, Host-Kernel richtet durch spezialisierte CPU-Instruktionen einen abgetrennten Bereich für den Gast-Kernel ein (beschränkter Speicherbereich, beschränkte CPU-Zeit, beschränkter Gerätezugriff), innerhalb dessen das System für den Gast-Kernel wie unvirtualisiert erscheint (somit so gut wie kein Performance-Unterschied zwischen nativem und virtualisiertem Kernel mehr)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Containervirtualisierung&#34;&gt;Container&lt;/a&gt;: isolierte Umgebungen innerhalb eines OS, aus denen Programme im Allgemeinen nicht ohne weiteres ausbrechen können&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vorteil gegenüber VM: ressourcenschonender (nur ein Kernel für alle), Container starten schneller als VM (kein Boot eines Gast-Kernels notwendig)&lt;/li&gt;
&lt;li&gt;Urform des Containers: &lt;a href=&#34;https://de.wikipedia.org/wiki/Chroot&#34;&gt;chroot in Unix-Systemen&lt;/a&gt; (ab 1979) modifiziert für einen Prozess das sichtbare Dateisystem so, dass nur Dateien unterhalb eines bestimmten Verzeichnisses erreicht werden können (Intention war die Bereitstellung von angepassten Dateisystemstrukturen für bestimmte Programme; chroot ist kein wirklicher Container, da die allermeisten Ressourcen nicht eingeschränkt werden und ein privilegierter Prozess das chroot jederzeit durch Neukonfiguration umgehen kann)&lt;/li&gt;
&lt;li&gt;echte Container ab ca. 2000: z.B. FreeBSD Jails ab 1999, Virtuozzo/OpenVZ ab 2000, Solaris Zones ab 2005, LXC (Linux Containers) ab 2008, Docker ab 2013&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ausführliche Besprechung von Containern unter Linux (Docker/Kubernetes) siehe &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20220524.html&#34;&gt;Pentaradio von 2022-05-24&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sandboxing: Container innerhalb einer Applikation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Webbrowser führen JavaScript-Code aus dem Internet in separaten Prozessen mit geringen Privilegien aus, um Malware das Leben schwer zu machen&lt;/li&gt;
&lt;li&gt;Begriffstrennung nicht ganz sauber; mitunter werden auch Container als eine Art von Sandboxing eingeordnet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Simulation und Emulation&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Simulation&#34;&gt;Simulation&lt;/a&gt;: Nachbildung eines realen Systems oder Szenarios mittels andersgearteter Technik (z.B. Fahrsimulation ohne echtes Auto, Militärsimulation ohne echtes Schlachtfeld, Simulation von quantenmechanischen Wellen mittels Ultraschallwellen... oder gleich mit Zahlen im Computer)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Emulator&#34;&gt;Emulation&lt;/a&gt;: Nachbildung eines Systems durch ein ähnliches, aber anderes System (z.B. Nachbildung des Verhaltens eines CPU-Typs als Programm auf einem anderen CPU-Typ)&lt;/li&gt;
&lt;li&gt;Einsatz von Emulation hauptsächlich zum Nachbilden alter Systeme (siehe Emulation von Videospielen, wie besprochen im &lt;a href=&#34;https://c3d2.de/news/pentaradio24-20220125.html&#34;&gt;Pentaradio vom Januar 2022&lt;/a&gt;) und zum Testen von Software auf besser zugänglichen Systemen (z.B. Testumgebungen für Smartphone-Apps auf PC-Betriebssystemen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Prolog"  />
          <chapter start="00:01:49" title="Xyrill und die Vergangenheit"  />
          <chapter start="00:03:21" title="Was sagt Wikipedia"  />
          <chapter start="00:05:05" title="Verschiedene Arten von Virtualisierung"  />
          <chapter start="00:06:05" title="Virtuelle Maschinen"  />
          <chapter start="00:08:18" title="Container"  />
          <chapter start="00:08:49" title="Sandboxing"  />
          <chapter start="00:09:47" title="Anwendungsfälle für VM"  />
          <chapter start="00:24:02" title="Zeitliche Entwicklung von VMs"  />
          <chapter start="00:34:06" title="Container"  />
          <chapter start="00:47:42" title="Sandboxing"  />
          <chapter start="00:50:52" title="Simulation und Emulation"  />
      </chapters>
      <enclosure length="60241887" url="https://dl.xyrillian.de/noises/stp-023-virtualisierung.mp3" type="audio/mpeg"/>
      <enclosure length="36427392" url="https://dl.xyrillian.de/noises/stp-023-virtualisierung.ogg" type="audio/ogg"/>
      <enclosure length="22671509" url="https://dl.xyrillian.de/noises/stp-023-virtualisierung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/023-virtualisierung/</guid>
    <pubDate>Thu, 04 Aug 2022 18:15:00 GMT</pubDate>
    <itunes:duration>62:24</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP022: Das Web ist nicht das Internet</itunes:title>
    <itunes:episode>22</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP022: Das Web ist nicht das Internet</title>
    <link>https://schluesseltechnologie-podcast.de/022-das-web-ist-nicht-das-internet</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute geht es um das allseits bekannte und beliebte Interweb.
Oder nicht, denn Web und Internet sind beileibe nicht dasselbe.
Oder doch, oder nicht, denn sie werden erst dazu.
Egal, Xyrill kann das besser erklären!</itunes:summary>
    <description>Heute geht es um das allseits bekannte und beliebte Interweb.
Oder nicht, denn Web und Internet sind beileibe nicht dasselbe.
Oder doch, oder nicht, denn sie werden erst dazu.
Egal, Xyrill kann das besser erklären!</description>
    <content:encoded>&lt;p&gt;Heute geht es um das allseits bekannte und beliebte Interweb.
Oder nicht, denn Web und Internet sind beileibe nicht dasselbe.
Oder doch, oder nicht, denn sie werden erst dazu.
Egal, Xyrill kann das besser erklären!&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Geschichte des &lt;a href=&#34;https://de.wikipedia.org/wiki/Internet&#34;&gt;Internets&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1989-1991 initiale Entwicklung des World Wide Web&lt;/li&gt;
&lt;li&gt;Internet aber bereits seit 1969 als Darpanet, ab 1981 bis 1983 Umstellung auf TCP/IP&lt;/li&gt;
&lt;li&gt;über 20 Jahre Internet ohne Web -&amp;gt; das Web ist nur eine von vielen Anwendungen für das Internet&lt;/li&gt;
&lt;li&gt;Internet vs. Web: Netzwerk von Computern vs. Netzwerk von Dokumenten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS: seit 1984, ausführlich siehe STP018&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/E-Mail&#34;&gt;E-Mail&lt;/a&gt;: seit 1971&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ablage von Mails in Mailboxen mittels &lt;a href=&#34;https://de.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol&#34;&gt;SMTP (Simple Mail Transfer Protocol)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Abruf von Mails aus Mailboxen zuerst durch direkten Login auf dem Zielsystem, ab 1984 mittels &lt;a href=&#34;https://de.wikipedia.org/wiki/Post_Office_Protocol&#34;&gt;POP3 (Post Office Protocol)&lt;/a&gt;, ab 1994 mittels &lt;a href=&#34;https://de.wikipedia.org/wiki/Internet_Message_Access_Protocol&#34;&gt;IMAP (Internet Message Access Protocol)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: asynchrone Zustellung (siehe &lt;a href=&#34;https://de.wikipedia.org/wiki/E-Mail#Geschichte&#34;&gt;Wikipedia zur ersten E-Mail nach Deutschland&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Network_Time_Protocol&#34;&gt;NTP (Network Time Protocol)&lt;/a&gt;: seit 1985&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Synchronisation der Computeruhr mit der Uhr eines Servers und damit indirekt mit einer Atomuhr&lt;/li&gt;
&lt;li&gt;Zeitdifferenzen werden (bei Nachgehen) durch Vorstellen oder (bei Vorgehen) durch Verlangsamen der lokalen Uhr korrigiert&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: nicht dokumentenbasiert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Telnet&#34;&gt;Telnet&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Remote_Shell&#34;&gt;RSH (Remote Shell)&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/wiki/Secure_Shell&#34;&gt;SSH (Secure Shell)&lt;/a&gt;: seit 1974/1977/1995&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Telnet: Klartextaustausch mit einem entfernten Rechner&lt;/li&gt;
&lt;li&gt;RSH/SSH: Abwicklung einer Kommandozeilen-Sitzung auf dem entfernten Rechner&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: bidirektionaler Datenstrom&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Internet_Relay_Chat&#34;&gt;IRC (Internet Relay Chat)&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol&#34;&gt;XMPP (Extensible Messaging and Presence Protocol)&lt;/a&gt;: seit 1988/1998&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IRC: textbasiertes Chatprotokoll zwischen vielen nutzerseitigen Clients und einigen untereinander vernetzten Servern&lt;/li&gt;
&lt;li&gt;XMPP: ähnlich, statt Plain Text mittels Strömen von XML-Nachrichten&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: ebenfalls ein kontinuierlicher bidirektionaler Datenstrom&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Session_Initiation_Protocol&#34;&gt;SIP (Session Initiation Protocol)&lt;/a&gt;: seit 1999&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;und darauf folgend ein ganzer Zoo von Telefonie-Protokollen... ITU-Standards sind unser blinder Fleck :)&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: ebenfalls ein kontinuierlicher bidirektionaler Datenstrom&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/File_Transfer_Protocol&#34;&gt;FTP (File Transfer Protocol)&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Network_File_System&#34;&gt;NFS (Network File System)&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Server_Message_Block&#34;&gt;SMB (Server Message Block)&lt;/a&gt;: seit 1985/1984/1996&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zugriff (FTP) bzw. Einbindung (NFS/SMB) eines entfernten Dateisystem auf dem lokalen Rechner&lt;/li&gt;
&lt;li&gt;Protokollbefehle wie &amp;quot;Dateien in Ordner auflisten&amp;quot; oder &amp;quot;Dateiinhalt lesen&amp;quot; oder &amp;quot;Datei löschen&amp;quot;&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: keine Dokumente mit Verweise untereinander, &amp;quot;nur&amp;quot; eine Struktur aus Dateien ohne bestimmte Anforderungen an den Dateiinhalt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol&#34;&gt;LDAP (Lightweight Directory Access Protocol)&lt;/a&gt;: seit 1993&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wenn DNS das Telefonbuch des Internets ist, dann sollte LDAP das Benutzerverzeichnis des Internets sein.&lt;/li&gt;
&lt;li&gt;nicht dasselbe wie das Web: nicht dokumentenbasiert, sondern datensatzbasiert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;und dann natürlich &lt;a href=&#34;https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol&#34;&gt;HTTP (Hypertext Transfer Protocol)&lt;/a&gt;: seit 1991&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zunächst fokussiert auf Abruf von Hypertext-Dokumenten in HTML sowie der darin enthaltenen Ressourcen (zunächst vor allem Bilder)&lt;/li&gt;
&lt;li&gt;dann erweitert um Hochladen von Daten zum Ausfüllen von Formularen&lt;/li&gt;
&lt;li&gt;dann erweitert um Verwaltung von Sitzungsdaten mittels Cookies&lt;/li&gt;
&lt;li&gt;dann erweitert um Methoden zum Durchlaufen von Dateisystemen (WebDAV, CalDAV, CardDAV, GroupDAV)&lt;/li&gt;
&lt;li&gt;dann erweitert durch eine komplette Client-Server-Programmierumgebung (JavaScript, XHR)&lt;/li&gt;
&lt;li&gt;dann erweitert durch serverseitige Benachrichtigungen (WebSockets, Server Sent Events)&lt;/li&gt;
&lt;li&gt;dann erweitert... und erweitert... und erweitert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plot-Twist: Web ist nur ein Teil des Internets, aber &lt;a href=&#34;https://twitter.com/fluepke/status/1504188393378430988&#34;&gt;alle anderen Teile des Internets werden immer webbiger&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jedes einzelne Protokoll profitiert tendenziell davon, wenn es auf HTTP aufsetzt:
&lt;ul&gt;
&lt;li&gt;Webbrowser können direkt HTTP verstehen&lt;/li&gt;
&lt;li&gt;die meisten Entwickler kennen HTTP gut (auf jeden Fall besser als die ganzen anderen Protokolle)&lt;/li&gt;
&lt;li&gt;in HTTP sind häufige Probleme wie Verschlüsselung/Caching/etc. schon gelöst (und die Lösungen sind milliardenfach getestet)&lt;/li&gt;
&lt;li&gt;HTTP kommt am besten durch Firewalls durch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;quasi ein Netzwerkeffekt (&amp;quot;es ist populär, weil es alle benutzen, und alle benutzen es, weil es populär ist&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie sieht es mit den vorgenannten Protokollen aus?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DNS -&amp;gt; DoH (DNS over HTTPS), um Verschlüsselung hinzuzufügen&lt;/li&gt;
&lt;li&gt;IRC, XMPP -&amp;gt; meist HTTP-basierte app-spezifische Chatprotokolle (z.B. Matrix)&lt;/li&gt;
&lt;li&gt;LDAP -&amp;gt; &lt;a href=&#34;https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language&#34;&gt;SAML&lt;/a&gt; (Authentifizierung mittels Umleitungskette im Webbrowser)&lt;/li&gt;
&lt;li&gt;SMTP, SSH, SIP, NFS, SMB: gibt&#39;s so noch, aber als Webapplikation ist die letzte Meile über HTTPS oder das eigentliche Protokoll ist in HTTPS-Websockets eingewickelt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Prolog"  />
          <chapter start="00:02:20" title="Geschichte des Internets"  />
          <chapter start="00:07:37" title="DNS: Heute nicht"  />
          <chapter start="00:08:24" title="E-Mail"  />
          <chapter start="00:15:36" title="NTP (Network Time Protocol)"  />
          <chapter start="00:19:27" title="Telnet, RSH, SSH"  />
          <chapter start="00:24:56" title="IRC, XMPP"  />
          <chapter start="00:30:15" title="SIP (Session Initiation Protocol)"  />
          <chapter start="00:32:35" title="FTP, NFS, SMB"  />
          <chapter start="00:39:21" title="LDAP (Lightweight Directory Access Protocol)"  />
          <chapter start="00:47:09" title="HTTP (Hypertext Transfer Protocol)"  />
          <chapter start="00:55:14" title="Wie sieht es mit den vorgenannten Protokollen aus?"  />
      </chapters>
      <enclosure length="60285729" url="https://dl.xyrillian.de/noises/stp-022-das-web-ist-nicht-das-internet.mp3" type="audio/mpeg"/>
      <enclosure length="38064990" url="https://dl.xyrillian.de/noises/stp-022-das-web-ist-nicht-das-internet.ogg" type="audio/ogg"/>
      <enclosure length="22928296" url="https://dl.xyrillian.de/noises/stp-022-das-web-ist-nicht-das-internet.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/022-das-web-ist-nicht-das-internet/</guid>
    <pubDate>Thu, 14 Jul 2022 00:00:00 GMT</pubDate>
    <itunes:duration>62:27</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP021: Reguläre Ausdrücke</itunes:title>
    <itunes:episode>21</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP021: Reguläre Ausdrücke</title>
    <link>https://schluesseltechnologie-podcast.de/021-regulaere-ausdruecke</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>ttimeless hat sich ein Thema gewünscht und mit Beginn von Xyrills Recherchen angefangen, es zu bereuen.
Es stellt sich heraus, dass das Thema zwar abstrakt, aber dennoch spannend ist. Außerdem gibt es im zweiten Teil der Sendung noch praktische Dinge zu lernen.</itunes:summary>
    <description>ttimeless hat sich ein Thema gewünscht und mit Beginn von Xyrills Recherchen angefangen, es zu bereuen.
Es stellt sich heraus, dass das Thema zwar abstrakt, aber dennoch spannend ist. Außerdem gibt es im zweiten Teil der Sendung noch praktische Dinge zu lernen.</description>
    <content:encoded>&lt;p&gt;ttimeless hat sich ein Thema gewünscht und mit Beginn von Xyrills Recherchen angefangen, es zu bereuen.
Es stellt sich heraus, dass das Thema zwar abstrakt, aber dennoch spannend ist. Außerdem gibt es im zweiten Teil der Sendung noch praktische Dinge zu lernen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Motivation: reguläre Ausdrücke verstehen
&lt;ul&gt;
&lt;li&gt;etwas Theorie ist notwendig, um die Eigenschaften und Grenzen von regulären Ausdrücken zu verstehen&lt;/li&gt;
&lt;li&gt;quasi eine Erstsemestervorlesung -&amp;gt; Anekdote Xyrill: Büchlein &amp;quot;Einblick ins Studium&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Grammatik&#34;&gt;Siehe Wikipedia&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Grammatik bezeichnet in der Linguistik jede Form einer systematischen Sprachbeschreibung. Dabei steht der Begriff der Grammatik einmal für das Regelwerk selbst, auf der anderen Seite aber auch für die Theorie über eine bestimmte Sprache oder Sprachfamilie.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;im Kontext der Informatik: &lt;strong&gt;formale Grammatiken&lt;/strong&gt; für &lt;strong&gt;formale Sprachen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;formale Sprache: Menge von Symbolketten (&amp;quot;Wörter&amp;quot;), die aus Symbolen (&amp;quot;Alphabet&amp;quot;) zusammengesetzt werden&lt;/li&gt;
&lt;li&gt;formale Grammatik: endlich große Beschreibung einer (im Allgemeinen unendlich großen) formalen Sprache&lt;/li&gt;
&lt;li&gt;Beispiele: Programmiersprachen, Tastenkombos in Videospielen, Münzeinwurf in Verkaufsautomat&lt;/li&gt;
&lt;li&gt;Abwägung: komplexere Grammatiken sind flexibler, aber auch aufwändiger (z.B. Tastatureingaben vs. Sprachsteuerung)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Chomsky-Hierarchie#%C3%9Cbersicht&#34;&gt;Chomsky-Hierarchie&lt;/a&gt;: Klassifikation von formalen Grammatiken in aufsteigender Striktheit und absteigender Flexibilität&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beschreibung der entsprechenden formalen Grammatiken: hier nicht, zu technisch&lt;/li&gt;
&lt;li&gt;zu jeder Ebene der Chomsky-Hierarchie gehört ein Maschinenmodell, dass entsprechende Grammatiken akzeptieren kann&lt;/li&gt;
&lt;li&gt;Typ 3: reguläre Grammatiken mittels endlichem Zustandsautomat (Beispiel: Münzeinwurf in Verkaufsautomat)&lt;/li&gt;
&lt;li&gt;Typ 2: kontextfreie Grammatiken mittels Kellerautomat (Beispiel: balancierte Klammerpaare)&lt;/li&gt;
&lt;li&gt;Typ 1 und 0 mittels Turingmaschinen (erst mit beschränktem, dann mit unbeschränktem Speicher)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel für grafische Repräsentation von Grammatiken: &lt;a href=&#34;https://sqlite.org/lang_select.html&#34;&gt;siehe SQLite-Dokumentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;reguläre Grammatiken im Alltag: &lt;a href=&#34;https://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck&#34;&gt;reguläre Ausdrücke&lt;/a&gt;; formale Definition mit vier Grundbausteinen&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Grundbaustein&lt;/th&gt;
&lt;th&gt;Beispielausdruck&lt;/th&gt;
&lt;th&gt;Findet z.B.&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zeichen(folge)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdruck&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdruck&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alternative&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdruck|Ausdrücke&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdruck&lt;/code&gt; und &lt;code&gt;Ausdrücke&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gruppierung&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdr(uck|ücke)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Ausdruck&lt;/code&gt; und &lt;code&gt;Ausdrücke&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sternquantor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;to*ll&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tll&lt;/code&gt;, &lt;code&gt;toll&lt;/code&gt;, &lt;code&gt;tooll&lt;/code&gt;, &lt;code&gt;toooll&lt;/code&gt;, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;in der Praxis weitere Bausteine, um häufige Anwendungen zu vereinfachen&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Zusatzbaustein&lt;/th&gt;
&lt;th&gt;Definition&lt;/th&gt;
&lt;th&gt;Beispielausdruck&lt;/th&gt;
&lt;th&gt;Findet z.B.&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Zeichenklasse&lt;/td&gt;
&lt;td&gt;&lt;code&gt;[ABC...] = A|B|C|...&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;positive Ganzzahl: &lt;code&gt;0|[1-9][0-9]*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;, &lt;code&gt;42&lt;/code&gt;, &lt;code&gt;900&lt;/code&gt;, aber nicht &lt;code&gt;0815&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;feste Zeichenklasse&lt;/td&gt;
&lt;td&gt;&lt;code&gt;\s&lt;/code&gt; für Whitespace, &lt;code&gt;\d = [0-9]&lt;/code&gt; für Ziffern, etc.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;beliebiges Zeichen&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Klammerausdruck: &lt;code&gt;(.*)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;(2 &#43; 4)&lt;/code&gt;, &lt;code&gt;(siehe oben)&lt;/code&gt;, aber auch &lt;code&gt;(siehe oben (oder nicht)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fragezeichenquantor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A? = (|A)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ganzzahl mit Vorzeichen: &lt;code&gt;[&#43;-]?(0|[1-9][0-9]*)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&#43;0&lt;/code&gt;, &lt;code&gt;-42&lt;/code&gt;, &lt;code&gt;23&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixquantor&lt;/td&gt;
&lt;td&gt;z.B. &lt;code&gt;A{3} = AAA&lt;/code&gt;, &lt;code&gt;A{2,4} = AAA?A?&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Postleitzahl: &lt;code&gt;[0-9]{5}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;01127&lt;/code&gt;, &lt;code&gt;50616&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plusquantor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;A&#43; = AA*&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Domainname: &lt;code&gt;([a-zA-Z0-9-]&#43;\.)*[a-zA-Z0-9-]&#43;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;www.example.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anker&lt;/td&gt;
&lt;td&gt;&lt;code&gt;^&lt;/code&gt; für Zeilenanfang, &lt;code&gt;$&lt;/code&gt; für Zeilenende, &lt;code&gt;\b&lt;/code&gt; für Wortgrenze&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Schulz\b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Schulz&lt;/code&gt;, aber nicht &lt;code&gt;Schulze&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Problem in der Praxis: &lt;strong&gt;Escaping&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Klammern sind Teil der Syntax; um eine Klammer im Eingabetext darzustellen, schreibt man &amp;quot;\(&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regexen lernen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Online
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://regexlearn.com/learn/regex101&#34;&gt;LearnRegex&lt;/a&gt; ist ein interaktives Tutorial zum Erlernen von regulären Ausdrücken, in englischer Sprache.&lt;/li&gt;
&lt;li&gt;Mit &lt;a href=&#34;https://regexcrossword.com&#34;&gt;Regex Crossword&lt;/a&gt; kann man spielerisch besonders das Lesen regulärer Ausdrücke üben.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Apps
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://f-droid.org/en/packages/de.chagemann.regexcrossword/&#34;&gt;Regex-Kreuzworträtsel auf dem Mobiltelefon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://f-droid.org/en/packages/com.phikal.regex/&#34;&gt;Mehrere Ausdrücke mit regulären Ausdrücken erfassen bzw. ausschließen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:03:00" title="Definition von Grammatik"  />
          <chapter start="00:03:57" title="Grammatik in der Informatik"  />
          <chapter start="00:18:26" title="Chomsky-Hierarchie"  />
          <chapter start="00:22:16" title="Typ 3: reguläre Grammatiken"  />
          <chapter start="00:24:08" title="Exkurs: menschliche Sprache und hidden Markov model"  />
          <chapter start="00:27:39" title="Münzautomaten und Softwaretester"  />
          <chapter start="00:33:10" title="Typ 2: kontextfreie Grammatiken"  />
          <chapter start="00:44:01" title="Typ 1 und 0"  />
          <chapter start="00:47:36" title="Dinge wegwerfen und Zeitsouveränität"  />
          <chapter start="00:49:50" title="Beispiel für grafische Repräsentation von Grammatiken"  />
          <chapter start="00:54:42" title="Praxisteil: Reguläre Ausdrücke"  />
          <chapter start="01:06:41" title="Erweiterte Reguläre Ausdrücke"  />
          <chapter start="01:30:18" title="Problem in der Praxis: **Escaping**"  />
      </chapters>
      <enclosure length="93238529" url="https://dl.xyrillian.de/noises/stp-021-regulaere-ausdruecke.mp3" type="audio/mpeg"/>
      <enclosure length="58473028" url="https://dl.xyrillian.de/noises/stp-021-regulaere-ausdruecke.ogg" type="audio/ogg"/>
      <enclosure length="35121828" url="https://dl.xyrillian.de/noises/stp-021-regulaere-ausdruecke.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/021-regulaere-ausdruecke/</guid>
    <pubDate>Thu, 23 Jun 2022 17:45:00 GMT</pubDate>
    <itunes:duration>96:46</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP020: Bootstrap</itunes:title>
    <itunes:episode>20</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP020: Bootstrap</title>
    <link>https://schluesseltechnologie-podcast.de/020-bootstrap</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Strom an und Ohren auf! In dieser Episode nähern wir uns Computern im Dornröschenschlaf.
Genauer sehen wir uns an, was beim Erwachen geschieht.</itunes:summary>
    <description>Strom an und Ohren auf! In dieser Episode nähern wir uns Computern im Dornröschenschlaf.
Genauer sehen wir uns an, was beim Erwachen geschieht.</description>
    <content:encoded>&lt;p&gt;Strom an und Ohren auf! In dieser Episode nähern wir uns Computern im Dornröschenschlaf.
Genauer sehen wir uns an, was beim Erwachen geschieht.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Zustand bei frühen Rechenmaschinen und Computern&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kein Bootstrap: Strom an -&amp;gt; Programm starten, Programm beenden -&amp;gt; Strom aus (siehe &lt;a href=&#34;https://www.youtube.com/watch?v=n8Yo-wD-QTo&#34;&gt;Konrad-Zuse-Clip&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Programme waren spezifisch für die Hardware, auf der sie laufen&lt;/li&gt;
&lt;li&gt;siehe auch: &lt;a href=&#34;https://damals-tm-podcast.de/&#34;&gt;damals (TM) Podcast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;und &lt;a href=&#34;https://cre.fm/cre193-old-school-computing&#34;&gt;ChaosRadioExpress193 Old School Computing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zustand bei heutigen Computern&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programme benötigen Funktionen des Betriebssystems, Betriebssystem muss sich mit der Hardware vertraut machen -&amp;gt; separate Startphase notwendig&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bootstrap&lt;/strong&gt; (oder kurz &lt;strong&gt;Boot&lt;/strong&gt;): sich selbst an den Schnürsenkeln aus dem Sumpf ziehen; aus einem einfachen System heraus ein komplexeres System aktivieren&lt;/li&gt;
&lt;li&gt;Konzept taucht mehrmals in verschiedenen Kontexten auf (&amp;quot;Wie stellt man einen Hobel her, wenn man keinen Hobel hat?&amp;quot;), siehe z.B. Bootstrapping von Programmiersprachen&lt;/li&gt;
&lt;li&gt;Hardware-Bootvorgang meist in mehreren aufeinanderfolgenden Phasen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 1: Firmware&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;minimales Startprogramm&lt;/li&gt;
&lt;li&gt;in einen separaten &lt;a href=&#34;https://de.wikipedia.org/wiki/Flash-Speicher&#34;&gt;Flash-Speicher&lt;/a&gt; im Chip fest verbaut&lt;/li&gt;
&lt;li&gt;Aufgabe: Hardware in einen definierten Zustand bringen (z.B. interne Speicher initialisieren), nächste Stufe finden und laden&lt;/li&gt;
&lt;li&gt;heute mitunter alles andere als minimal: siehe &lt;a href=&#34;https://de.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface&#34;&gt;UEFI&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/wiki/Intel#Intel_Management_Engine_seit_2008&#34;&gt;Intel ME&lt;/a&gt;/&lt;a href=&#34;https://de.wikipedia.org/wiki/AMD_Security_Processor&#34;&gt;AMD PSP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bei x86 früher &lt;a href=&#34;https://de.wikipedia.org/wiki/BIOS&#34;&gt;BIOS&lt;/a&gt;; heute ersetzt durch UEFI, dessen definierter Endzustand modernen Konventionen folgt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 2: Bootloader&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;immer noch ziemlich minimal&lt;/li&gt;
&lt;li&gt;liegt auf einem Massenspeicher (Festplatte, USB-Stick)&lt;/li&gt;
&lt;li&gt;Aufgabe: Massenspeicher nach Betriebssystemen durchsuchen, Auswahldialog anbieten, gewähltes Betriebssystem starten&lt;/li&gt;
&lt;li&gt;unter Linux meistens &lt;a href=&#34;https://de.wikipedia.org/wiki/Grand_Unified_Bootloader&#34;&gt;GRUB&lt;/a&gt; oder &lt;a href=&#34;https://en.wikipedia.org/wiki/Systemd-boot&#34;&gt;systemd-boot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternativen zum klassischen Bootloader&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UEFI-Firmware kann direkt das Betriebssystem starten, sofern keine interaktive Auswahl erforderlich ist&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Netzboot&#34;&gt;Netzwerk-Boot&lt;/a&gt; (entweder durch die Firmware oder als Option in Bootloadern wie GRUB)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 3: Betriebssystem&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Erinnerung (siehe STP019): Kernel = Betriebssystemteile in höchster Privilegenstufe, Userspace = alle Programme in niedrigerer Privilegienstufe&lt;/li&gt;
&lt;li&gt;Bootloader lädt und startet den Basisteil des Kernels&lt;/li&gt;
&lt;li&gt;Kernel erkennt die verfügbare Hardware, lädt von der Festplatte die benötigten Kernel-Module nach und startet den System-Manager&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 4: System-Manager&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;unter Unix meist als &amp;quot;PID 1&amp;quot; benannt, weil dieser erste Prozess mit der Prozess-ID (PID) 1 läuft&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;klassischerweise &lt;a href=&#34;https://de.wikipedia.org/wiki/SysVinit&#34;&gt;sysvinit&lt;/a&gt;, heute unter Linux meist &lt;a href=&#34;https://de.wikipedia.org/wiki/Systemd&#34;&gt;systemd&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;startet alle Userspace-Programme, die als Teil des Betriebssystems aufgefasst werden können (im Unix-Sprech &amp;quot;Daemons&amp;quot;: Disk And Execution MONitors)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;auf Systemebene z.B. Druckwarteschlange, Bluetooth-Dienst, Netzwerk-Konfigurationsdienst, Zeitsynchronisation&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;auf der Ebene einer grafischen Sitzung z.B. Dienste zum Auswählen von Tastaturlayout/Netzwerk, Einstellen der Lautstärke, Screen-Reader&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://cre.fm/cre209-das-linux-system&#34;&gt;ChaosRadioExpress209 Das Linux System&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 5: Display-Manager&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bietet auf grafischen Systemen den Anmeldedialog&lt;/li&gt;
&lt;li&gt;im Prinzip selbst eine komplette grafische Sitzung (Anekdote: GDM vs. LightDM)&lt;/li&gt;
&lt;li&gt;startet nach erfolgreicher Anmeldung die entsprechende grafische Sitzung&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 6: grafische Sitzung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Strukturierung je nach Desktopoberfläche&lt;/li&gt;
&lt;li&gt;immer mit dabei: ein Window-Manager, der die einzelnen Fenster in ein Gesamtbild zusammensetzt (heutzutage auf der GPU, dann heißt der Window-Manager &amp;quot;Compositor&amp;quot;)&lt;/li&gt;
&lt;li&gt;unter Windows ist der Window-Manager aus historischen Gründen Teil von &lt;code&gt;explorer.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;wie besprochen: unter Linux Bootvorgang visualisieren mit &lt;code&gt;systemd-analyze plot &amp;gt; output.svg&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:42" title="Frühe Rechenmaschinen und Computer"  />
          <chapter start="00:05:45" title="Zustand bei heutigen Computern"  />
          <chapter start="00:11:53" title="Phase 1: Firmware"  />
          <chapter start="00:23:55" title="Phase 2: Bootloader"  />
          <chapter start="00:32:49" title="Netzwerkboot"  />
          <chapter start="00:35:55" title="Phase 3: Betriebssystem"  />
          <chapter start="00:49:28" title="Phase 4: System-Manager"  />
          <chapter start="00:56:59" title="Phase 5: Display-Manager"  />
          <chapter start="01:01:13" title="Phase 6: grafische Sitzung"  />
      </chapters>
      <enclosure length="65087457" url="https://dl.xyrillian.de/noises/stp-020-bootstrap.mp3" type="audio/mpeg"/>
      <enclosure length="40234830" url="https://dl.xyrillian.de/noises/stp-020-bootstrap.ogg" type="audio/ogg"/>
      <enclosure length="24536752" url="https://dl.xyrillian.de/noises/stp-020-bootstrap.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/020-bootstrap/</guid>
    <pubDate>Thu, 02 Jun 2022 17:10:00 GMT</pubDate>
    <itunes:duration>67:27</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP019: Speicherschutz</itunes:title>
    <itunes:episode>19</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP019: Speicherschutz</title>
    <link>https://schluesseltechnologie-podcast.de/019-speicherschutz</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nach einem glorreichen Intro mit perfekter Vorbereitung befassen Xyrill und ttimeless sich mit Speicherschutz.
Wie und warum und welchen Speicher überhaupt? Hört selbst.</itunes:summary>
    <description>Nach einem glorreichen Intro mit perfekter Vorbereitung befassen Xyrill und ttimeless sich mit Speicherschutz.
Wie und warum und welchen Speicher überhaupt? Hört selbst.</description>
    <content:encoded>&lt;p&gt;Nach einem glorreichen Intro mit perfekter Vorbereitung befassen Xyrill und ttimeless sich mit Speicherschutz.
Wie und warum und welchen Speicher überhaupt? Hört selbst.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&amp;quot;Welchen Speicher müssen wir eigentlich schützen?&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;hier nur Arbeitsspeicher und Gerätespeicher&lt;/li&gt;
&lt;li&gt;andere Speicherarten (z.B. Festplatten) geschützt durch die Betriebssystem-Abstraktionen, siehe zukünftige Folge zu Privilegienkontrolle&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aufgaben des Betriebssystems: Prozessisolation und Vermittlung des Hardwarezugriffs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: das Betriebssystem ist auch nur &amp;quot;ein Programm&amp;quot;&lt;/li&gt;
&lt;li&gt;Frage 1: Wie wird sichergestellt, dass das Betriebssystem die finale Kontrolle über Hardwarezugriffe hat?&lt;/li&gt;
&lt;li&gt;Frage 2: Wie wird verhindert, dass ein Speicherbereich, den Prozess A verwendet, von Prozess B überschrieben (oder unberechtigterweise ausgelesen) wird?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Antwort auf Frage 1: &lt;a href=&#34;https://de.wikipedia.org/wiki/Ring_(CPU)&#34;&gt;Prozessor-Ringe&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Standardfunktion auf allen CPUs, die auf Mehrprozess-Betrieb ausgelegt sind (nicht immer im Embedded-Bereich)&lt;/li&gt;
&lt;li&gt;zu jedem Zeitpunkt läuft der Prozess in einem von mehreren Ringen&lt;/li&gt;
&lt;li&gt;sensible Operationen (v.a. Hardwarezugriff) sind nur in den höheren Ringen erlaubt und damit den Betriebssystemprozessen vorbehalten&lt;/li&gt;
&lt;li&gt;Wechsel in einen niedrigeren Ring jederzeit möglich (z.B. Aktivierung eines Userspace-Prozesses durch das Betriebssystem)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie kommen wir von einem niedrigeren Ring wieder in einen höheren Ring?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interrupts (siehe STP015): Eintreten eines Hardware-Ereignisses (z.B. ankommendes Netzwerk-Paket oder abgelaufener Hardware-Timer), das durch das Betriebssystem behandelt werden muss&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Syscalls&lt;/strong&gt;: niedrigprivilegierter Prozess fragt eine definierte Schnittstelle des Betriebssystems an, um eine höherprivilegierte Operation auszuführen&lt;/li&gt;
&lt;li&gt;z.B. Dateisystem-Zugriff, Hardware-Zugriff, Ändern der Betriebssystem-Konfiguration, Starten von neuen Prozessen, Nachrichtenübermittlung an andere Prozesse&lt;/li&gt;
&lt;li&gt;dadurch Realisierung der Prozessisolation, weil das Betriebssystem die Kontrolle über alle privilegierten Operationen hat&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Antwort auf Frage 2: &lt;a href=&#34;https://de.wikipedia.org/wiki/Virtuelle_Speicherverwaltung&#34;&gt;Virtuelle Speicherverwaltung&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;wenn Prozesse auf Speicher zugreifen, verwenden sie nur &amp;quot;virtuelle&amp;quot; Speicheradressen: z.B. Adresse 0x42 für Prozess A ist nicht unbedingt derselbe Speicher wie Adresse 0x42 für Prozess B&lt;/li&gt;
&lt;li&gt;Abbildung auf physische Speicheradressen innerhalb der CPU durch eine &lt;strong&gt;Memory Management Unit&lt;/strong&gt; (MMU)&lt;/li&gt;
&lt;li&gt;Konfiguration der MMU durch das Betriebssystem immer kurz vor der Übergabe der CPU an einen anderen Prozess&lt;/li&gt;
&lt;li&gt;Aufteilung des physischen/virtuellen Speichers in Seiten (&lt;strong&gt;Pages&lt;/strong&gt;), z.B. bei x86-64 wahlweise 4 KiB oder 2 MiB oder 1 GiB&lt;/li&gt;
&lt;li&gt;pro Page verschiedene Zugriffsberechtigungen möglich, z.B. zur Verhinderung des Schreibens in ausführbare Programmteile, oder für &lt;strong&gt;Shared Memory&lt;/strong&gt; als Kommunikationsweg zwischen Prozessen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Paging der MMU ermöglicht &lt;strong&gt;Swapping&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pages müssen nicht unbedingt im tatsächlichen Arbeitsspeicher gehalten werden, sondern können bei Nichtverwendung in eine Swap-Datei auf der Festplatte ausgelagert werden&lt;/li&gt;
&lt;li&gt;dadurch über alle Programme summiert meist deutlich mehr virtueller Speicher zugewiesen, als tatsächlich physischer Speicher vorhanden ist&lt;/li&gt;
&lt;li&gt;wenn ein Programm auf eine im Arbeitsspeicher fehlende Seite zugreift, erzeugt die MMU einen Interrupt (&lt;strong&gt;Page Fault&lt;/strong&gt;), sodass das Betriebssystem die fehlende Seite transparent nachladen kann&lt;/li&gt;
&lt;li&gt;analog dazu: &lt;strong&gt;Memory-Mapping&lt;/strong&gt; von Dateiinhalten direkt in den Arbeitsspeicher&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;wenn wir schon mal über Speicheradressen reden: &lt;a href=&#34;https://de.wikipedia.org/wiki/Direct_Memory_Access&#34;&gt;Direct Memory Access&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abbildung eines Arbeitsspeicher-Addressbereiches auf einen Speicher eines angeschlossenen Gerätes, zum Beispiel den Arbeitsspeicher der Grafikkarte oder eines Netzwerkadapters&lt;/li&gt;
&lt;li&gt;dadurch direkter Transfer von Daten zwischen niedrigprivilegierten Prozessen und Hardware möglich, z.B. schnelles Hochladen von Texturen in die Grafikkarte durch ein 3D-Spiel&lt;/li&gt;
&lt;li&gt;DMA braucht nicht unbedingt eine MMU (siehe &lt;a href=&#34;https://wiki.osdev.org/Printing_to_Screen&#34;&gt;VGA-Buffer bei &lt;code&gt;0xB8000&lt;/code&gt;&lt;/a&gt; in DOS-Ära-Betriebssystemen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:13" title="Welchen Speicher müssen wir eigentlich schützen?"  />
          <chapter start="00:04:30" title="Aufgaben des Betriebssystems: Prozessisolation und Vermittlung des Hardwarezugriffs"  />
          <chapter start="00:07:33" title="Antwort auf Frage 1: Prozessor-Ringe"  />
          <chapter start="00:12:48" title="Wie kommen wir von einem niedrigeren in einen höheren Ring?"  />
          <chapter start="00:21:45" title="Antwort auf Frage 2: Virtuelle Speicherverwaltung"  />
          <chapter start="00:28:03" title="Paging"  />
          <chapter start="00:30:22" title="Swapping"  />
          <chapter start="00:44:48" title="Memory-Mapping"  />
          <chapter start="00:46:36" title="Direct Memory Access"  />
          <chapter start="00:50:05" title="Warum das alles? und Gesellschaftliche Indikationen"  />
      </chapters>
      <enclosure length="53718592" url="https://dl.xyrillian.de/noises/stp-019-speicherschutz.mp3" type="audio/mpeg"/>
      <enclosure length="31359591" url="https://dl.xyrillian.de/noises/stp-019-speicherschutz.ogg" type="audio/ogg"/>
      <enclosure length="19931270" url="https://dl.xyrillian.de/noises/stp-019-speicherschutz.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/019-speicherschutz/</guid>
    <pubDate>Thu, 12 May 2022 16:50:00 GMT</pubDate>
    <itunes:duration>55:36</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP018: DNS im Detail</itunes:title>
    <itunes:episode>18</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP018: DNS im Detail</title>
    <link>https://schluesseltechnologie-podcast.de/018-dns-im-detail</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Nachdem wir das Thema in STP002 schon einmal gestreift haben, wollen wir in dieser Episode genauer darauf eingehen.
Woher weiß unser Computer eigentlich, welche IP-Adresse er aufrufen muss, um uns all die schönen Katzenvideos zu zeigen?</itunes:summary>
    <description>Nachdem wir das Thema in STP002 schon einmal gestreift haben, wollen wir in dieser Episode genauer darauf eingehen.
Woher weiß unser Computer eigentlich, welche IP-Adresse er aufrufen muss, um uns all die schönen Katzenvideos zu zeigen?</description>
    <content:encoded>&lt;p&gt;Nachdem wir das Thema in STP002 schon einmal gestreift haben, wollen wir in dieser Episode genauer darauf eingehen.
Woher weiß unser Computer eigentlich, welche IP-Adresse er aufrufen muss, um uns all die schönen Katzenvideos zu zeigen?&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Nicht die Desoxyribonukleinsäure, sondern das &lt;a href=&#34;https://de.wikipedia.org/wiki/Domain_Name_System&#34;&gt;Domain Name System&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezüge&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;zu STP002 (Aufruf einer Webseite): Webserver haben Domain-Namen, die aufgelöst werden müssen&lt;/li&gt;
&lt;li&gt;zu STP012 (Datenbanken): DNS ist eine globale, verteilte (aber nicht dezentrale!), hierarchische Datenbank&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundaufgabe: Namensauflösung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;menschenlesbare und stabile Server-Namen anstatt unlesbarer und möglicherweise wechselnder IP-Adressen&lt;/li&gt;
&lt;li&gt;aber auch andere Abfragen möglich, siehe unten&lt;/li&gt;
&lt;li&gt;historischer Vorgänger: &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aufteilung des Internet in &lt;strong&gt;Domains&lt;/strong&gt; (Domänen) und verschachtelte &lt;strong&gt;Subdomains&lt;/strong&gt; (Unterdomänen)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Dns-raum.svg&#34;&gt;Beispiel:&lt;/a&gt; Wurzeldomain &amp;quot;.&amp;quot; enthält Domain &amp;quot;org&amp;quot; enthält Domain &amp;quot;wikipedia.org&amp;quot; enthält Domain &amp;quot;de.wikipedia.org&amp;quot; -&amp;gt; deswegen &lt;em&gt;hierarchische&lt;/em&gt; Datenbank&lt;/li&gt;
&lt;li&gt;wenn die Subdomain einer anderen Person oder Organisation gehört als die Domain darüber, hat man eine neue &lt;strong&gt;Zone&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;jeder Inhaber einer Zone hält auf einem (oder mehreren) Webserver(n) die Inhalte seiner Zone (also Domain-Daten und Zonenreferenzen) in einem &lt;strong&gt;Nameserver&lt;/strong&gt; -&amp;gt; deswegen &lt;em&gt;verteilte&lt;/em&gt; Datenbank&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wurzelzone ist unter der Kontrolle der &lt;a href=&#34;https://de.wikipedia.org/wiki/Internet_Corporation_for_Assigned_Names_and_Numbers&#34;&gt;ICANN&lt;/a&gt; -&amp;gt; deswegen &lt;em&gt;nicht dezentrale&lt;/em&gt; Datenbank&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verteilung der Wurzelzone durch die &lt;a href=&#34;https://de.wikipedia.org/wiki/Root-Nameserver&#34;&gt;Root-Nameserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;finanzieller Anreiz zum Erlauben von immer mehr Top-Level-Domains (TLD)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einträge in einer DNS-Zone heißen &lt;strong&gt;Records&lt;/strong&gt; (Datensätze), mehrere Record Types möglich:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A, AAAA: IP-Adresse zu einer Domain (A = IPv4, AAAA = IPv6)&lt;/li&gt;
&lt;li&gt;CNAME: Domain-Alias (anstatt direkt eine IP zu erhalten, erhält man eine andere Domain, die man stattdessen nach der finalen IP fragen muss)&lt;/li&gt;
&lt;li&gt;PTR: Rückwärtsabfrage, Domain zu einer IP-Adresse&lt;/li&gt;
&lt;li&gt;MX: Mail-Server zu einer Domain&lt;/li&gt;
&lt;li&gt;SRV: ähnlich wie MX, aber für beliebige Dienste (z.B. XMPP)&lt;/li&gt;
&lt;li&gt;TXT: beliebige Textinformationen (wird zum Beispiel für Mail-Empfangsregeln verwendet)&lt;/li&gt;
&lt;li&gt;NS: Zonendelegation, die entsprechende Domain ist der Ausgangspunkt einer Unterzone und der Record enthält den autoritativen Nameserver für diese Zone&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abfrage einer bestimmten Domain&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grundidee: zuerst Root-Nameserver fragen, der delegiert an den Nameserver der TLD, der delegiert an den Nameserver der Second-Level-Domain, etc.&lt;/li&gt;
&lt;li&gt;Problem: absurd hohe Last auf die Root-Nameserver&lt;/li&gt;
&lt;li&gt;Lösung 1: jeder Eintrag in einer Nameserver-Datenbank hat eine TTL (&amp;quot;Time to Live&amp;quot;)&lt;/li&gt;
&lt;li&gt;Lösung 2: Endnutzer reden nicht direkt mit den autoritativen Nameservern, sondern mit Vermittlern (&lt;strong&gt;Resolver&lt;/strong&gt;), die sie sich mit anderen Endnutzern teilen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Komplexbeispiel: Abfrage von &lt;code&gt;de.wikipedia.org&lt;/code&gt; über die Root-Nameserver mit dem Unix-Tool &lt;code&gt;dig&lt;/code&gt; (Ausgaben stark gekürzt)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$ dig A de.wikipedia.org @m.root-servers.net

;; QUESTION SECTION:
;de.wikipedia.org.              IN      A
;; AUTHORITY SECTION:
org.                    172800  IN      NS      a0.org.afilias-nst.info.
...
;; ADDITIONAL SECTION:
a0.org.afilias-nst.info. 172800 IN      A       199.19.56.1
...

$ dig A de.wikipedia.org @199.19.56.1

;; QUESTION SECTION:
;de.wikipedia.org.              IN      A
;; AUTHORITY SECTION:
wikipedia.org.          86400   IN      NS      ns0.wikimedia.org.
...
;; ADDITIONAL SECTION:
ns0.wikimedia.org.      86400   IN      A       208.80.154.238
...

$ dig A de.wikipedia.org @208.80.154.238

;; QUESTION SECTION:
;de.wikipedia.org.              IN      A
;; ANSWER SECTION:
de.wikipedia.org.       86400   IN      CNAME   dyna.wikimedia.org.

$ dig A dyna.wikimedia.org @199.19.56.1

;; QUESTION SECTION:
;dyna.wikimedia.org.            IN      A
;; AUTHORITY SECTION:
wikimedia.org.          86400   IN      NS      ns0.wikimedia.org.
...
;; ADDITIONAL SECTION:
ns0.wikimedia.org.      86400   IN      A       208.80.154.238
...

$ dig A dyna.wikimedia.org @208.80.154.238

;; QUESTION SECTION:
;dyna.wikimedia.org.            IN      A
;; ANSWER SECTION:
dyna.wikimedia.org.     600     IN      A       91.198.174.192
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;zum Vergleich: Abfrage von &lt;code&gt;de.wikipedia.org&lt;/code&gt; über einen öffentlichen Resolver (beachte die unterschiedlichen TTL-Werte)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;$ dig A de.wikipedia.org @9.9.9.9

;; QUESTION SECTION:
;de.wikipedia.org.              IN      A
;; ANSWER SECTION:
de.wikipedia.org.       32533   IN      CNAME   dyna.wikimedia.org.
dyna.wikimedia.org.     227     IN      A       91.198.174.192
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Beispiel: Rückwärtsabfrage der so erhaltenen IP mittels PTR-Record unter der Pseudo-Domain &lt;code&gt;in-addr.arpa&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;dig PTR 192.174.198.91.in-addr.arpa
;; QUESTION SECTION:
;192.174.198.91.in-addr.arpa.   IN      PTR

;; ANSWER SECTION:
192.174.198.91.in-addr.arpa. 1104 IN    PTR     text-lb.esams.wikimedia.org.
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Woher kommt der Resolver?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;normalerweise über DHCP (auf demselben Wege, über den das eigene Gerät eine IP-Adresse vom Router bekommt; oder über den der Router eine IP-Adresse vom ISP bekommt), unter Unix siehe &lt;code&gt;/etc/resolv.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;somit meist ein Resolver unter Kontrolle des ISP&lt;/li&gt;
&lt;li&gt;alternative Resolver: z.B. &lt;code&gt;1.1.1.1&lt;/code&gt; (Cloudflare), &lt;code&gt;8.8.8.8&lt;/code&gt; (Google), &lt;code&gt;9.9.9.{9,10,11}&lt;/code&gt; (&lt;a href=&#34;https://de.wikipedia.org/wiki/Quad9&#34;&gt;Quad9&lt;/a&gt;), &lt;code&gt;5.9.164.112&lt;/code&gt; (&lt;a href=&#34;https://digitalcourage.de/support/zensurfreier-dns-server&#34;&gt;Digitalcourage&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Resolverwahl: Implikationen für Privatsphäre und für Vertrauenswürdigkeit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DNS selbst ist unverschlüsselt -&amp;gt; neuere Entwicklung: DNS-over-TLS und DNS-over-HTTP&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eigentlich würde DNS-over-TLS reichen, aber kann dann vom ISP geblockt werden; HTTP hingegen ist aus praktischen Gründen quasi unblockbar&lt;/li&gt;
&lt;li&gt;Unterstützung in Betriebssystemen noch lückenhaft, aber Browser können DoT und DoH am Betriebssystem vorbei machen (Browsereinstellungen prüfen!)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;alternative DNS-Roots: meist in privaten Netzen (z.B. Firmen-Intranet mit &lt;code&gt;.corp&lt;/code&gt;-Domains), aber es gibt auch alternative Roots mit globalem Anspruch (z.B. &lt;a href=&#34;https://en.wikipedia.org/wiki/Namecoin&#34;&gt;Namecoin&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Einführung"  />
          <chapter start="00:03:22" title="Grundaufgabe: Namensauflösung"  />
          <chapter start="00:14:06" title="Domains und Subdomains"  />
          <chapter start="00:24:38" title="Die Wurzelzone"  />
          <chapter start="00:30:41" title="DNS-Records"  />
          <chapter start="00:49:32" title="Abfrage einer bestimmten Domain"  />
          <chapter start="01:08:37" title="Woher kommt der Resolver?"  />
          <chapter start="01:14:19" title="DNS und Sicherheit"  />
          <chapter start="01:20:15" title="Alternative DNS-Roots"  />
      </chapters>
      <enclosure length="81856672" url="https://dl.xyrillian.de/noises/stp-018-dns-im-detail.mp3" type="audio/mpeg"/>
      <enclosure length="50548306" url="https://dl.xyrillian.de/noises/stp-018-dns-im-detail.ogg" type="audio/ogg"/>
      <enclosure length="30817292" url="https://dl.xyrillian.de/noises/stp-018-dns-im-detail.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/018-dns-im-detail/</guid>
    <pubDate>Thu, 21 Apr 2022 16:15:00 GMT</pubDate>
    <itunes:duration>84:55</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP017: Lokalisierung</itunes:title>
    <itunes:episode>17</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP017: Lokalisierung</title>
    <link>https://schluesseltechnologie-podcast.de/017-lokalisierung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Mit den Eigenheiten verschiedener Kultur- und Sprachräume hat wohl jeder schon so seine Erfahrungen gesammelt.
In der aktuellen Episode soll es um die ortsbezogenen Einstellungen von Computersystemen gehen.
Und natürlich gibt uns das ein weiteres Mal die Möglichkeit, abschätzig über imperiale Einheiten zu sprechen.</itunes:summary>
    <description>Mit den Eigenheiten verschiedener Kultur- und Sprachräume hat wohl jeder schon so seine Erfahrungen gesammelt.
In der aktuellen Episode soll es um die ortsbezogenen Einstellungen von Computersystemen gehen.
Und natürlich gibt uns das ein weiteres Mal die Möglichkeit, abschätzig über imperiale Einheiten zu sprechen.</description>
    <content:encoded>&lt;p&gt;Mit den Eigenheiten verschiedener Kultur- und Sprachräume hat wohl jeder schon so seine Erfahrungen gesammelt.
In der aktuellen Episode soll es um die ortsbezogenen Einstellungen von Computersystemen gehen.
Und natürlich gibt uns das ein weiteres Mal die Möglichkeit, abschätzig über imperiale Einheiten zu sprechen.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Letztes Mal hatten wir Komplikationen wegen der Zeit, diesmal wegen des Raumes. :)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;vergleiche: &lt;a href=&#34;https://de.wikipedia.org/wiki/Multimedialokalisierung&#34;&gt;Lokalisierung bei Filmen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Übersetzung als Untertitel, Voice-Over oder Synchronisation&lt;/li&gt;
&lt;li&gt;viele Schwierigkeiten der Medienlokalisierung spiegeln sich im Softwarefall
&lt;ul&gt;
&lt;li&gt;Beispiel: Formulierung der Übersetzung muss sich an die verfügbare Zeit im Film anpassen&lt;/li&gt;
&lt;li&gt;in Software müssen übersetzte Beschriftungen in das ursprüngliche Layout reinpassen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Softwarelokalisierung: zwei getrennte Schritte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Internationalisierung_(Softwareentwicklung)&#34;&gt;Internationalisierung&lt;/a&gt; (&lt;strong&gt;i18n&lt;/strong&gt;): Gestaltung des Programms derart, dass es einfach an verschiedene Sprachen und Kulturen angepasst werden kann -&amp;gt; Aufgabe für den Entwickler&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Lokalisierung_(Softwareentwicklung)&#34;&gt;Lokalisierung&lt;/a&gt; (&lt;strong&gt;l10n&lt;/strong&gt;): der Akt der Anpassung an eine Zielsprache -&amp;gt; Aufgabe für den Übersetzer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aspekte von Internationalisierung anhand der Locale-Einstellungen in Unix-Systemen (siehe &lt;a href=&#34;https://de.wikipedia.org/wiki/Alphabetische_Sortierung#Sortierregeln_nach_Sprachen&#34;&gt;&lt;code&gt;man 7 locale&lt;/code&gt;&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LC_MESSAGES&lt;/strong&gt;: Sprache für übersetzte Texte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_TIME&lt;/strong&gt;, &lt;strong&gt;LC_DATE&lt;/strong&gt;: Darstellung von Datums- und Zeitangaben (siehe &lt;a href=&#34;https://xkcd.com/2562/&#34;&gt;XKCD 2562&lt;/a&gt; und &lt;a href=&#34;https://xkcd.com/1179/&#34;&gt;XKCD 1179&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_COLLATE&lt;/strong&gt;: alphabetische Sortierreihenfolge (&lt;a href=&#34;https://de.wikipedia.org/wiki/Alphabetische_Sortierung#Sortierregeln_nach_Sprachen&#34;&gt;siehe Wikipedia&lt;/a&gt;, z.B. Deutsch sortiert &amp;quot;ä&amp;quot; wie &amp;quot;a&amp;quot;, aber Dänisch sortiert &amp;quot;ä&amp;quot; hinter &amp;quot;z&amp;quot;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_NUMERIC&lt;/strong&gt;, &lt;strong&gt;LC_MONETARY&lt;/strong&gt;: Darstellung von Zahlen und Währungsangaben (z.B. Dezimalpunkt vs. Komma, Tausendertrennzeichen, Währungszeichen vor oder hinter dem Wert)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_NAME&lt;/strong&gt;: Anreden (z.B. &amp;quot;Herr&amp;quot; und &amp;quot;Frau&amp;quot; im Deutschen)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_MEASUREMENT&lt;/strong&gt;: Größenangaben in imperialen oder metrischen Einheiten&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_PAPER&lt;/strong&gt;: Standard-Papierformat für Dokumente (z.B. DIN A4 in Deutschland, aber Letter in USA)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LC_CTYPE&lt;/strong&gt; (&lt;em&gt;character type&lt;/em&gt;): Standard-Zeichensatz für Dateien&lt;/li&gt;
&lt;li&gt;usw.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;mögliche Werte für eine Locale-Wahl in Unix&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;klassisch: &lt;code&gt;de_DE&lt;/code&gt;, &lt;code&gt;de_AT&lt;/code&gt;, &lt;code&gt;de_CH&lt;/code&gt;, &lt;code&gt;en_US&lt;/code&gt;, &lt;code&gt;en_GB&lt;/code&gt; usw.&lt;/li&gt;
&lt;li&gt;mit UTF-8-Präferenz: &lt;code&gt;de_DE.UTF-8&lt;/code&gt;, &lt;code&gt;en_US.UTF-8&lt;/code&gt; usw.&lt;/li&gt;
&lt;li&gt;Spezialfall: &lt;code&gt;LC_MESSAGES=C&lt;/code&gt; zeigt Texte, wie sie im originalen Quelltext stehen&lt;/li&gt;
&lt;li&gt;gemischte Konfiguration möglich, z.B. &lt;a href=&#34;https://github.com/majewsky/system-configuration/blob/c42f3e38d6d84a10b69ada6eb59d7617065b3bfc/hologram-base.pkg.toml#L63-L68&#34;&gt;Xyrill hat fast überall &lt;code&gt;de_DE.UTF-8&lt;/code&gt;, aber &lt;code&gt;LC_MESSAGES=C&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aufgaben des Softwareentwicklers bei i18n&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verwendung von internationalisierbaren Betriebssystemfunktionen oder Programmbibliotheken, wann immer Ein- und Ausgaben lokalitätsabhängig sind&lt;/li&gt;
&lt;li&gt;Testen von grafischen Oberflächen im Right-to-Left-Modus (in Sprachen mit RTL-Schrift läuft auch das GUI-Layout von rechts nach links, siehe z.B. &lt;a href=&#34;https://ar.wikipedia.org/&#34;&gt;arabische Wikipedia&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Formulierung von übersetzbaren Texten derart, dass die Übersetzer möglichst gut arbeiten können
&lt;ul&gt;
&lt;li&gt;Angabe von Kontext (z.B. Beschriftungstext &amp;quot;Match&amp;quot; -&amp;gt; Ist das das Verb &amp;quot;Abgleichen&amp;quot; oder das Substantiv &amp;quot;Treffer&amp;quot;? Oder gar &amp;quot;Streichholz&amp;quot;?)&lt;/li&gt;
&lt;li&gt;bei Textbaustein mit Zahlenparameter Berücksichtigung sprachabhängiger Pluralformen (im meist englischen Original wird ein Singulartext und ein Pluraltext bereitgestellt, z.B. &lt;code&gt;1 match&lt;/code&gt; und &lt;code&gt;%d matches&lt;/code&gt;; die Übersetzer können je nach Notwendigkeit beliebig viele Formen angeben)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arbeitsablauf für Übersetzung am Beispiel &lt;a href=&#34;https://www.gnu.org/software/gettext/manual/gettext.html&#34;&gt;GNU gettext&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programmierer fügt Textmeldungen (&amp;quot;Nachrichten&amp;quot;) im englischen Original in den Quelltext ein&lt;/li&gt;
&lt;li&gt;Maintainer erstellt mittels Hilfsprogramm aus dem Quelltext einen Nachrichtenkatalog für jede gewünschte Zielsprache (meist automatisiert, z.B. täglich oder wöchentlich)&lt;/li&gt;
&lt;li&gt;Übersetzer erhält den Nachrichtenkatalog und füllt die Übersetzungen ein&lt;/li&gt;
&lt;li&gt;zukünftige Änderungen der Originalnachrichten werden mit den bestehenden Nachrichtenkatalogen zusammengeführt&lt;/li&gt;
&lt;li&gt;Anekdote: &lt;code&gt;x-test&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fundstück: &lt;a href=&#34;https://de.wikipedia.org/wiki/Amtssprachen_der_Europ%C3%A4ischen_Union&#34;&gt;Amtssprachen der Europäischen Union&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Hallo"  />
          <chapter start="00:01:51" title="Lokalisierung bei Filmen"  />
          <chapter start="00:04:57" title="Softwarelokalisierung: zwei getrennte Schritte"  />
          <chapter start="00:08:40" title="Aspekte von Internationalisierung"  />
          <chapter start="00:25:21" title="mögliche Werte für eine Locale-Wahl in Unix"  />
          <chapter start="00:34:23" title="Aufgaben des Softwareentwicklers bei i18n"  />
          <chapter start="00:48:56" title="Arbeitsablauf für Übersetzung"  />
      </chapters>
      <enclosure length="55408234" url="https://dl.xyrillian.de/noises/stp-017-lokalisierung.mp3" type="audio/mpeg"/>
      <enclosure length="33956132" url="https://dl.xyrillian.de/noises/stp-017-lokalisierung.ogg" type="audio/ogg"/>
      <enclosure length="20705097" url="https://dl.xyrillian.de/noises/stp-017-lokalisierung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/017-lokalisierung/</guid>
    <pubDate>Thu, 31 Mar 2022 16:30:00 GMT</pubDate>
    <itunes:duration>57:22</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP016: Zeitdarstellung</itunes:title>
    <itunes:episode>16</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP016: Zeitdarstellung</title>
    <link>https://schluesseltechnologie-podcast.de/016-zeitdarstellung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute brechen wir das fünfte Bit an.
Das tun wir mit einem Thema, das scheinbar einfach ist, sich allerdings bei genauerer Betrachtung als tückisch herausstellt.
Es geht um Zeit und ihre Darstellung. Und darum, dass es nicht immer sinnvoll ist, sich seinen eigenen Kalender auzudenken.
Außerdem überzeugt ttimeless duch überragende Excel-Kentnisse.</itunes:summary>
    <description>Heute brechen wir das fünfte Bit an.
Das tun wir mit einem Thema, das scheinbar einfach ist, sich allerdings bei genauerer Betrachtung als tückisch herausstellt.
Es geht um Zeit und ihre Darstellung. Und darum, dass es nicht immer sinnvoll ist, sich seinen eigenen Kalender auzudenken.
Außerdem überzeugt ttimeless duch überragende Excel-Kentnisse.</description>
    <content:encoded>&lt;p&gt;Heute brechen wir das fünfte Bit an.
Das tun wir mit einem Thema, das scheinbar einfach ist, sich allerdings bei genauerer Betrachtung als tückisch herausstellt.
Es geht um Zeit und ihre Darstellung. Und darum, dass es nicht immer sinnvoll ist, sich seinen eigenen Kalender auzudenken.
Außerdem überzeugt ttimeless duch überragende Excel-Kentnisse.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Zeiteinteilung ist ganz schön unhandlich
&lt;ul&gt;
&lt;li&gt;Kalender orientieren sich an astronomischen Fakten, die leider keine schönen ganzzahligen Einteilungen erlauben (1 Sonnenjahr = 365,242... Tage, 1 Mondmonat = 29.530... Tage, etc.)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Atomuhr&#34;&gt;präzise Definition von kleinen Zeiteinheiten wie Sekunden&lt;/a&gt; zeigt, dass die astronomischen Fakten schwanken -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/wiki/Schaltsekunde&#34;&gt;Schaltsekunden&lt;/a&gt;; später mehr&lt;/li&gt;
&lt;li&gt;Zielkonflikt: möglichst gleichmäßige Zeitentwicklung oder möglichst intuitive Handhabung&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Internationale_Atomzeit&#34;&gt;Internationale Atomzeit (TAI)&lt;/a&gt;: exakt gleichmäßig (im Rahmen der Genauigkeit der Atomuhr), berücksichtigt nicht Schwankungen in der Tageslänge durch Änderungen der Erdrotationsgeschwindigkeit&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Koordinierte_Weltzeit&#34;&gt;Koordinierte Weltzeit (UTC)&lt;/a&gt;: TAI zuzüglich Schaltsekunden (zurzeit TAI = UTC &#43; 37s), sodass der Tagesbeginn am nullten Breitengrad immer bei 00:00:00 Uhr UTC bleibt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wie können Computer Zeit darstellen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Option 1: separate Zahlen für Jahr, Monat, Tag, Stunde, Minute, Sekunde&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Verwendung vor allem an Stellen, wo der Nutzer es sehen kann (Zeitanzeigen, Zeitstempel in Dateinamen etc.)&lt;/li&gt;
&lt;li&gt;Vorteil: sofort menschenlesbar&lt;/li&gt;
&lt;li&gt;Nachteil: muss für Eindeutigkeit immer mit Zeitzoneninformation verknüpft sein; Gültigkeit von zukünftigen Zeitangaben evtl. durch nicht vorhergesehene Zeitzonenänderungen beeinträchtigt&lt;/li&gt;
&lt;li&gt;Nachteil: textuelle Darstellung je nach Kulturkreis uneindeutig (z.B. &amp;quot;4/7/2021&amp;quot; kann entweder für den 4. Juli oder den 7. April stehen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Option 2: eine einzelne Zahl, die die vergangene Zeit in einer bestimmten Einheit (z.B. Sekunden oder Tage) seit einem Startzeitpunkt (der &lt;a href=&#34;https://de.wikipedia.org/wiki/Epoche_(Chronologie)&#34;&gt;Epoche&lt;/a&gt;) angibt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Unix: Sekunden seit 1. Januar 1970 00:00:00 Uhr UTC (bzw. 01:00:00 Uhr deutscher Zeit)&lt;/li&gt;
&lt;li&gt;z.B. &lt;a href=&#34;https://de.wikipedia.org/wiki/Julianisches_Datum&#34;&gt;julianisches Datum&lt;/a&gt;: Tage seit 1. Januar 4713 v.u.Z.&lt;/li&gt;
&lt;li&gt;z.B. Excel, LibreOffice Calc, etc.: Tage seit 1. Januar 1900, mit Nachkommastellen für Zeitpunkte innerhalb eines Tages&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probleme durch Überlauf in Datumsfeldern&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Jahr-2000-Problem&#34;&gt;Y2K-Problem&lt;/a&gt;: Überlauf in der Jahreszahl, die damals zweistellig angegeben war (z.B. &amp;quot;76&amp;quot; für 1976)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Jahr-2038-Problem&#34;&gt;Y2038-Problem&lt;/a&gt;: Überlauf in einem 32-Bit-Unix-Zeitstempel (am Dienstag, dem 19. Januar 2038 um 04:14:07 Uhr deutscher Zeit)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/GPS-Woche&#34;&gt;GPS-Wochen-Rollover&lt;/a&gt;: Überlauf in der Wochenzahl des Zeitstempel-Formats von GPS; erstmals 1999, zuletzt 2019, nächstes Mal 2038&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probleme durch astronomische/politische Fakten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Berechnungen wie &amp;quot;10 Tage dazuaddieren&amp;quot; mühselig aufgrund Kalenderregeln (Monatswechsel, Schalttage etc.)
&lt;ul&gt;
&lt;li&gt;Beispiel: in einer Terminserie wie &amp;quot;täglich um 15 Uhr&amp;quot; hat wegen Sommerzeitwechsel nicht jeder Termin genau 24 Stunden Abstand zueinander&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/wiki/Sommerzeit#%C3%96ffentliche_Verkehrsmittel&#34;&gt;Sommerzeitumstellung bei der Eisenbahn&lt;/a&gt; (diesen Abschnitt können wir im Prinzip direkt vorlesen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schaltsekunden lassen UTC springen und erzeugen unerwartete Zeitzustände wie &amp;quot;23:59:60&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Zeitzonen-Datenbank&#34;&gt;Zeitzonendefinitionen&lt;/a&gt; folgen politischen Entscheidungen
&lt;ul&gt;
&lt;li&gt;z.B. Deutschland besteht in tzdata aus zwei Zeitzonen&lt;/li&gt;
&lt;li&gt;z.B. 2015 &lt;a href=&#34;https://codeofmatt.com/on-the-timing-of-time-zone-changes/&#34;&gt;Chaos in der Türkei&lt;/a&gt; durch eine Änderung der Sommerzeitregel mit zu wenig Vorlauf&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probleme durch technische Einflüsse&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hardware-Uhren sind nicht hinreichend genau und driften mit der Zeit: in verteilten Systemen mögliche Verwirrung über die Reihenfolge von Aktionen&lt;/li&gt;
&lt;li&gt;Zeitsynchronisation mittels NTP (Network Time Protocol): im Moment der Richtigstellung der Uhr mögliche Verwirrung durch einen kleinen Sprung rückwärts in der Zeit&lt;/li&gt;
&lt;li&gt;Suspend/Standby: im Moment des Wiederanschaltens mögliche Verwirrung durch einen drastischen Sprung vorwärts in der Zeit&lt;/li&gt;
&lt;li&gt;monotonische Uhren: zählen die Zeit, die der Computer seit Systemstart gelaufen sind (z.B. mittels &lt;a href=&#34;https://en.wikipedia.org/wiki/Time_Stamp_Counter&#34;&gt;TSC&lt;/a&gt;; damit zuverlässige Messung von Laufzeitspannen etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;positiver Ausblick: Es könnte noch viel schlimmer sein!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;gregorianischer Kalender hat sich weltweit für den Geschäftsverkehr durchgesetzt&lt;/li&gt;
&lt;li&gt;Beispiel für einen alternativen Kalender: &lt;a href=&#34;https://de.wikipedia.org/wiki/Japanische_Zeitrechnung&#34;&gt;Japanische Zeitrechnung&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;kryptografisch abgesicherte Zeitstempel: &lt;a href=&#34;https://requestforcomments.de/archives/559?t=07%3A55&#34;&gt;RFC Podcast #15 Crypto for the Masses&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Begrüßung"  />
          <chapter start="00:02:16" title="Unhandliche Zeitdarstellung"  />
          <chapter start="00:18:04" title="Wie können Computer Zeit darstellen?"  />
          <chapter start="00:18:43" title="Option 1: separate Zahlen"  />
          <chapter start="00:29:38" title="Option 2: eine einzelne Zahl"  />
          <chapter start="00:40:10" title="Probleme durch Überlauf in Datumsfeldern"  />
          <chapter start="00:54:10" title="Probleme durch astronomische/politische Fakten"  />
          <chapter start="01:05:19" title="Probleme durch technische Einflüsse"  />
          <chapter start="01:13:10" title="Ausblick: Es könnte schlimmer sein"  />
      </chapters>
      <enclosure length="76537224" url="https://dl.xyrillian.de/noises/stp-016-zeitdarstellung.mp3" type="audio/mpeg"/>
      <enclosure length="48010134" url="https://dl.xyrillian.de/noises/stp-016-zeitdarstellung.ogg" type="audio/ogg"/>
      <enclosure length="29230312" url="https://dl.xyrillian.de/noises/stp-016-zeitdarstellung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/016-zeitdarstellung/</guid>
    <pubDate>Thu, 10 Mar 2022 18:00:00 GMT</pubDate>
    <itunes:duration>79:22</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP015: Multitasking in Betriebssystemen</itunes:title>
    <itunes:episode>15</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP015: Multitasking in Betriebssystemen</title>
    <link>https://schluesseltechnologie-podcast.de/015-multitasking-in-betriebssystemen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Um viele Dinge gefühlt gleichzeitig tun zu können, ist die Computertechnik einen weiten Weg gegangen. In der heutigen Folge halten wir viele lose Fäden in der Hand und ständig merkt Xyrill, dass dies und jenes ja auch noch notwendig ist, um zum Ziel zu kommen: Zu Multitasking.</itunes:summary>
    <description>Um viele Dinge gefühlt gleichzeitig tun zu können, ist die Computertechnik einen weiten Weg gegangen. In der heutigen Folge halten wir viele lose Fäden in der Hand und ständig merkt Xyrill, dass dies und jenes ja auch noch notwendig ist, um zum Ziel zu kommen: Zu Multitasking.</description>
    <content:encoded>&lt;p&gt;Um viele Dinge gefühlt gleichzeitig tun zu können, ist die Computertechnik einen weiten Weg gegangen. In der heutigen Folge halten wir viele lose Fäden in der Hand und ständig merkt Xyrill, dass dies und jenes ja auch noch notwendig ist, um zum Ziel zu kommen: Zu Multitasking.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vorbemerkung: Begriffsklärung Programm vs. Prozess&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programm: ein bestimmtes Stück Maschinencode, das zumeist auf der Festplatte vorgehalten wird&lt;/li&gt;
&lt;li&gt;Prozess: eine bestimmte Laufzeitinstanz eines Programms&lt;/li&gt;
&lt;li&gt;Prozess = Programm &#43; zugehörige Daten im Speicher &#43; zugehörige Berechtigungen etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Multitasking&#34;&gt;Multitasking&lt;/a&gt;: Ausführung mehrerer Aufgaben zur selben Zeit oder abwechselnd in kurzen Zeitabschnitten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;konkurrente Ausführung: abwechselnd in kurzen Zeitabschnitten&lt;/li&gt;
&lt;li&gt;parallelle Ausführung: zur selben Zeit (z.B. Parallelbearbeitung mehrerer Daten in der GPU, Parallelität in mehreren CPU-Kernen); heute nicht so sehr im Fokus&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Analogie: Multitasking &lt;a href=&#34;https://de.wikipedia.org/wiki/Multitasking_(Psychologie)&#34;&gt;beim Menschen&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee 1: tatsächlich parallele Ausführung, z.B. gehen und gleichzeitig sprechen&lt;/li&gt;
&lt;li&gt;Idee 2: Teilaufgaben an einer jeweils sinnvollen Stelle unterbrechen und während der Wartezeiten etwas anderes machen, z.B. Kochen/Backen (entspricht dem kooperativen Multitasking)&lt;/li&gt;
&lt;li&gt;Idee 3: Teilaufgaben nach einer bestimmten Zeit oder bei äußeren Ereignissen unterbrechen, z.B. Büroarbeit (entspricht dem präemptiven Multitasking)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;kooperatives Multitasking: Prozesse unterbrechen sich selbst, wenn sich abzeichnet, dass sie warten müssen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. auf das Lesen von Daten von der Festplatte oder eine Antwort aus dem Netzwerk&lt;/li&gt;
&lt;li&gt;Problem 1: jedes Programm muss Unterbrechungspunkte enthalten&lt;/li&gt;
&lt;li&gt;Problem 2: unkooperative Programme (z.B. fehlerhafte oder Schadsoftware) können das gesamte System blockieren&lt;/li&gt;
&lt;li&gt;weit verbreitet in der Ära der frühen Heimcomputer (C64, DOS-PCs, Macs bis Mac OS 9)&lt;/li&gt;
&lt;li&gt;heute nicht mehr im Einsatz, da moderne Prozessoren interruptfähig sind und somit präemptives Multitasking möglich ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;präemptives Multitasking: Prozesse werden nach dem Ablauf ihrer zugeteilten Zeitscheibe unterbrochen, damit jemand anderes drankommen kann&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bevor der Prozess drankommt, stellt das Betriebssystem einen Hardware-Timer in der CPU&lt;/li&gt;
&lt;li&gt;nach Ablauf des Timers löst die CPU einen &lt;strong&gt;Interrupt&lt;/strong&gt; (eine Unterbrechung) aus&lt;/li&gt;
&lt;li&gt;CPU unterbricht die Arbeit am Prozess und führt eine vom Betriebssystem definierte ISR (&lt;strong&gt;Interrupt Service Routine&lt;/strong&gt;) aus&lt;/li&gt;
&lt;li&gt;ISR speichert den Zustand des Prozesses (insb. die Inhalte aller Prozessor-Register) und gibt die Ausführung zurück an den Scheduler&lt;/li&gt;
&lt;li&gt;um Prozess später wiederherzustellen, werden im Prinzip einfach alle Prozessor-Register auf die gesicherten Werte zurückgesetzt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scheduler&lt;/strong&gt; (Zeitplaner): Komponente des Betriebssystems, die den jeweils nächsten Prozess wählt, der laufen darf&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;interne Buchführung des Schedulers unterscheidet zwischen lauffähigen und nicht lauffähigen Prozessen&lt;/li&gt;
&lt;li&gt;ist ein laufender Prozess nicht mehr lauffähig (weil auf I/O gewartet werden muss), kann er auch selbst einen Interrupt auslösen und wird dann im Scheduler als nicht lauffähig markiert&lt;/li&gt;
&lt;li&gt;nächster Prozess wird immer aus der Liste der lauffähigen Prozesse gewählt, nach Kriterien wie Priorität (z.B. Audio-Prozesse)&lt;/li&gt;
&lt;li&gt;gibt es keinen lauffähigen Prozess, kann die CPU bis zum nächsten Interrupt angehalten werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wie werden Prozesse wieder lauffähig?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eingabe von der Hardwareseite (z.B. Netzwerk, Festplatte) erzeugt ebenfalls Interrupts, auf die das Betriebssystem reagiert&lt;/li&gt;
&lt;li&gt;Eingabe von anderen Prozessen (z.B. via Pipes) landet direkt beim Betriebssystem&lt;/li&gt;
&lt;li&gt;Betriebssystem stellt die Daten dem entsprechenden Prozess bereit und markiert diesen wieder als lauffähig&lt;/li&gt;
&lt;li&gt;analog bei vollgelaufenen Ausgabepuffern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:40" title="Vorbemerkung Programm vs. Prozess"  />
          <chapter start="00:04:44" title="Einleitung: Von der Lockarte zum Betriebssystem"  />
          <chapter start="00:07:26" title="Definition von Multitasking"  />
          <chapter start="00:10:00" title="Analogie: Multitasking beim Menschen"  />
          <chapter start="00:14:21" title="kooperatives Multitasking"  />
          <chapter start="00:21:58" title="präemptives Multitasking"  />
          <chapter start="00:31:26" title="Scheduler"  />
          <chapter start="00:41:42" title="Wie werden Prozesse wieder lauffähig?"  />
      </chapters>
      <enclosure length="67993380" url="https://dl.xyrillian.de/noises/stp-015-multitasking-in-betriebssystemen.mp3" type="audio/mpeg"/>
      <enclosure length="43738148" url="https://dl.xyrillian.de/noises/stp-015-multitasking-in-betriebssystemen.ogg" type="audio/ogg"/>
      <enclosure length="25665039" url="https://dl.xyrillian.de/noises/stp-015-multitasking-in-betriebssystemen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/015-multitasking-in-betriebssystemen/</guid>
    <pubDate>Thu, 17 Feb 2022 17:40:00 GMT</pubDate>
    <itunes:duration>70:30</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP014: Textdarstellung</itunes:title>
    <itunes:episode>14</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP014: Textdarstellung</title>
    <link>https://schluesseltechnologie-podcast.de/014-textdarstellung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In dieser Folge unterhalten wir uns über allerlei Detailwissen zu verschiedenen Schriftarten, werfen mit schlecht vorbereiteten Beispielen um uns und haben starke Meinungen zu verschiedenen Dingen. Um Textdarstellung geht es dabei nebenbei auch.</itunes:summary>
    <description>In dieser Folge unterhalten wir uns über allerlei Detailwissen zu verschiedenen Schriftarten, werfen mit schlecht vorbereiteten Beispielen um uns und haben starke Meinungen zu verschiedenen Dingen. Um Textdarstellung geht es dabei nebenbei auch.</description>
    <content:encoded>&lt;p&gt;In dieser Folge unterhalten wir uns über allerlei Detailwissen zu verschiedenen Schriftarten, werfen mit schlecht vorbereiteten Beispielen um uns und haben starke Meinungen zu verschiedenen Dingen. Um Textdarstellung geht es dabei nebenbei auch.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Nachbemerkungen zum letzten Mal: bidirektionaler Text&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mischung aus LTR-Schrift (&lt;em&gt;left to right&lt;/em&gt;) und RTL-Schrift (&lt;em&gt;right to left&lt;/em&gt;), z.B. hebräische oder arabische Zitate in lateinischer Schrift&lt;/li&gt;
&lt;li&gt;in der Zeichenkette entsprechend der logischen Reihenfolge&lt;/li&gt;
&lt;li&gt;in der Darstellung: Zeichen können (aber müssen nicht) eine präferierte Schreibrichtung haben, explizite Umschaltung der Schreibrichtung mit Steuerzeichen möglich&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundbegriffe&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Zeichen&amp;quot;: wird im Bereich von Unicode kaum verwendet, da nicht klar definiert&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Graphem&#34;&gt;Graphem&lt;/a&gt;: die kleinste bedeutungsunterscheidende (aber nicht bedeutungstragende) Einheit eines Schriftsystems (z.B. lateinische Schrift: Buchstaben, Ziffern, Sonderzeichen, Leerzeichen); in Unicode ungefähr gleichsetzbar mit einem Codepunkt (abgesehen von Steuerzeichen)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Glyphe&#34;&gt;Glyphe&lt;/a&gt;: die grafische Darstellung eines Graphems&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Schriftart&#34;&gt;Schriftart/Font&lt;/a&gt;: ein vollständiger Satz von Glyphen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unterschiede zwischen Schriftarten&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Serife&#34;&gt;Serifenschriften&lt;/a&gt; vs. serifenlose, insb. &lt;a href=&#34;https://de.wikipedia.org/wiki/Grotesk_(Schrift)&#34;&gt;Groteskschriften&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Proportionale_Schriftart&#34;&gt;Proportionalschriften&lt;/a&gt; vs. &lt;a href=&#34;https://de.wikipedia.org/wiki/Nichtproportionale_Schriftart&#34;&gt;Monospace-Schriften&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Spezialanwendungen: &lt;a href=&#34;https://de.wikipedia.org/wiki/OCR-A&#34;&gt;OCR-A&lt;/a&gt;, &lt;a href=&#34;https://en.wikipedia.org/wiki/FE-Schrift&#34;&gt;FE-Schrift&lt;/a&gt;, Schriften zur Unterstützung von Analphabeten (unter den bekannten Schriften insbesondere &lt;a href=&#34;https://de.wikipedia.org/wiki/Comic_Sans_MS&#34;&gt;Comic Sans&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Beispiel aus Asien: &lt;a href=&#34;https://de.wikipedia.org/wiki/Ming_(Schrift)&#34;&gt;Ming&lt;/a&gt; vs. &lt;a href=&#34;https://en.wikipedia.org/wiki/East_Asian_Gothic_typeface&#34;&gt;Gothic&lt;/a&gt; vs. &lt;a href=&#34;https://de.wikipedia.org/wiki/Chinesische_Kalligrafie&#34;&gt;Kalligrafie&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 1: Textlayout&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Segmentierung in Wörter, Zeilen, Absätze, evtl. Seiten&lt;/li&gt;
&lt;li&gt;abhängig von den Regeln der verwendeten Schriftsysteme, siehe z.B. &lt;a href=&#34;https://www.unicode.org/reports/tr14/&#34;&gt;UAX 14: Unicode Line Breaking Algorithm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;abhängig von der Schreibrichtung, interessant insbesondere bei bidirektionalem Text
&lt;ul&gt;
&lt;li&gt;Unicode beschreibt fast ausschließlich zeilenweises Layout mit LTR oder RTL&lt;/li&gt;
&lt;li&gt;im Japanischen ist auch spaltenweises Layout mit TTB (&lt;em&gt;top to bottom&lt;/em&gt;) gängig, siehe &lt;a href=&#34;https://www.unicode.org/reports/tr50/&#34;&gt;UTR 50: Unicode Vertical Text Layout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Ruby_Annotation&#34;&gt;Ruby&lt;/a&gt;: Ausspracheannotationen an CJK-Schriftzeichen, außerhalb der eigentlichen Textzeile (in LTR darüber, in TTB rechts daneben)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 2: Schriftwahl&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;kaum ein Font deckt alle Grapheme ab -&amp;gt; im Allgemeinen Auswahl verschiedener Fonts je nach Schriftsystem notwendig (&lt;strong&gt;Font Stack&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;in europäischen Texten früher kaum relevant, heute wichtig wegen separater Emoji-Fonts&lt;/li&gt;
&lt;li&gt;Schriftgröße früher wichtig, da manche Fonts nur als Bitmaps in festen Größen vorlagen; heute durch Vektorschriftarten kein Problem mehr&lt;/li&gt;
&lt;li&gt;Schriftwahl beeinflusst Phase 1: verschiedene Schriften laufen unterschiedlich weit und ergeben somit andere Zeilenumbruchspunkte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 3: Glyphenwahl&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;einfacher Fall: eine Glyphe für ein Graphem&lt;/li&gt;
&lt;li&gt;allgemeiner Fall: Bildung von &lt;strong&gt;Graphem-Clustern&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Ligaturen: &amp;quot;f&amp;quot; &#43; &amp;quot;l&amp;quot; = &amp;quot;ﬂ&amp;quot;&lt;/li&gt;
&lt;li&gt;z.B. kombinierende diakritische Zeichen: &amp;quot;a&amp;quot; &#43; &amp;quot;◌́&amp;quot; = &amp;quot;á&amp;quot;&lt;/li&gt;
&lt;li&gt;z.B. Emoji-Hautfarben: &amp;quot;👨&amp;quot; &#43; &lt;a href=&#34;https://de.wikipedia.org/wiki/Hauttyp#Hauttypen_nach_Fitzpatrick&#34;&gt;Fitzpatrick&lt;/a&gt; Modifier 1-2 = &amp;quot;👨🏻&amp;quot;&lt;/li&gt;
&lt;li&gt;z.B. Emoji-Flaggen: &amp;quot;🇩&amp;quot; &#43; &amp;quot;🇪&amp;quot; = &amp;quot;🇩🇪&amp;quot;&lt;/li&gt;
&lt;li&gt;z.B. Fonts mit kreativer Verwendung von Ligaturen: &lt;a href=&#34;https://www.sansbullshitsans.com/&#34;&gt;Sans Bullshit Sans&lt;/a&gt;, &lt;a href=&#34;https://github.com/tonsky/FiraCode&#34;&gt;Fira Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;anspruchsvollster Fall: &lt;a href=&#34;https://en.wikipedia.org/wiki/Complex_text_layout&#34;&gt;Complex text layout&lt;/a&gt;, sprich: Anpassung von Glyphen an ihre Nachbarglyphen
&lt;ul&gt;
&lt;li&gt;v.a. im Arabischen und in indischen Schriften, aber auch z.B. in handschriftartigen Fonts&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;auch Glyphenwahl beeinflusst Phase 1, aus demselben Grund wie oben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Phase 4: Darstellung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Glyphen aus &lt;a href=&#34;https://de.wikipedia.org/wiki/Vektorfont&#34;&gt;Vektorschriftarten&lt;/a&gt; werden in den gewünschten Schriftgrößen gerendert und vorgehalten&lt;/li&gt;
&lt;li&gt;dann &amp;quot;einfach&amp;quot; Zusammensetzen der Glyphen zu einem Gesamtbild unter Anwendung der gewünschten Textfarbe&lt;/li&gt;
&lt;li&gt;Ausnahme: Emoji-Glyphen folgen meist nicht der Schriftfarbe&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quelle: &lt;a href=&#34;https://www.unicode.org/faq/specifications.html&#34;&gt;Spezifikationen und Reports des Unicode Consortium&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hörempfehlung: &lt;a href=&#34;https://cre.fm/cre080-geschichte-der-typographie&#34;&gt;CRE080 Geschichte der Typografie&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:00:53" title="Nachbemerkung zur letzten Folge"  />
          <chapter start="00:10:57" title="Grundbegriffe"  />
          <chapter start="00:13:02" title="Graphem"  />
          <chapter start="00:17:40" title="Glyphe"  />
          <chapter start="00:18:49" title="Schriftart/Font"  />
          <chapter start="00:23:00" title="Unterschiede zwischen Schriftarten"  />
          <chapter start="00:23:39" title="Serifenschriften"  />
          <chapter start="00:25:23" title="Groteskschriften"  />
          <chapter start="00:27:07" title="Proportionalschriften"  />
          <chapter start="00:27:34" title="Monospace-Schriften"  />
          <chapter start="00:28:56" title="OCR-A"  />
          <chapter start="00:32:09" title="CJK-Schriften"  />
          <chapter start="00:33:42" title="Ming-Schriften"  />
          <chapter start="00:35:19" title="Gothic"  />
          <chapter start="00:35:45" title="FE-Schriften"  />
          <chapter start="00:37:39" title="Comic Sans"  />
          <chapter start="00:39:48" title="Bildschirmanzeige vs. Druck"  />
          <chapter start="00:43:51" title="Phase 1: Textlayout"  />
          <chapter start="00:51:53" title="Ruby Annotation"  />
          <chapter start="00:55:28" title="Phase 2: Schriftwahl"  />
          <chapter start="01:01:31" title="Phase 3: Glyphenwahl"  />
          <chapter start="01:18:16" title="Phase 4: Darstellung"  />
      </chapters>
      <enclosure length="78400582" url="https://dl.xyrillian.de/noises/stp-014-textdarstellung.mp3" type="audio/mpeg"/>
      <enclosure length="47442845" url="https://dl.xyrillian.de/noises/stp-014-textdarstellung.ogg" type="audio/ogg"/>
      <enclosure length="28686899" url="https://dl.xyrillian.de/noises/stp-014-textdarstellung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/014-textdarstellung/</guid>
    <pubDate>Thu, 27 Jan 2022 02:00:00 GMT</pubDate>
    <itunes:duration>81:20</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP013: Textkodierung</itunes:title>
    <itunes:episode>13</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP013: Textkodierung</title>
    <link>https://schluesseltechnologie-podcast.de/013-textkodierung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Dies ist ein Text. Für den Computer besteht er nur aus Zahlen. Xyrill erklärt diesmal, wie es kommt, dass wir ihn trotzdem lesen können.
Und jedes andere geschriebene Wort, das je existiert hat… natürlich nur idealtypisch.</itunes:summary>
    <description>Dies ist ein Text. Für den Computer besteht er nur aus Zahlen. Xyrill erklärt diesmal, wie es kommt, dass wir ihn trotzdem lesen können.
Und jedes andere geschriebene Wort, das je existiert hat… natürlich nur idealtypisch.</description>
    <content:encoded>&lt;p&gt;Dies ist ein Text. Für den Computer besteht er nur aus Zahlen. Xyrill erklärt diesmal, wie es kommt, dass wir ihn trotzdem lesen können.
Und jedes andere geschriebene Wort, das je existiert hat… natürlich nur idealtypisch.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;Laut Wiktionary:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Text&lt;/strong&gt; ist eine] mündliche oder schriftliche Folge von Sätzen, die miteinander syntaktisch und semantisch verbunden sind (Kohärenz, Kohäsion), eine abgeschlossene Einheit bilden (Kompletion) und eine bestimmte kommunikative Funktion (Textfunktion) erfüllen.&lt;/p&gt;
&lt;p&gt;[Von] lateinisch &lt;em&gt;textus&lt;/em&gt; für &amp;quot;Inhalt&amp;quot; oder &amp;quot;Gewebe der Rede&amp;quot;, &amp;quot;Text&amp;quot;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;zur Definition&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wiktionary geht vom linguistischen Blickwinkel aus&lt;/li&gt;
&lt;li&gt;in der Informatik: Zeichenketten (oder synonym &amp;quot;Zeichenfolgen&amp;quot;), in Programmiersprachen meist als &lt;a href=&#34;https://de.wikipedia.org/wiki/Zeichenkette&#34;&gt;String&lt;/a&gt; bezeichnet&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Problem: Computer können nur Zahlen! Wie bilden wir Zeichenketten als Zahlenfolgen ab?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee 1: jedes Zeichen als eine Zahl einer bestimmten Größe, z.B. 1 Byte oder 2 Byte (&lt;em&gt;fixed-length code&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;primitives Beispiel: alle Buchstaben des Alphabets durch ihre Position darstellen, z.B. &amp;quot;hallo&amp;quot; -&amp;gt; &amp;quot;08 01 12 12 15&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Idee 2: häufige Zeichen mit kurzen Bytefolgen darstellen, seltene Zeichen mit längeren Bytefolgen (&lt;em&gt;variable-length code&lt;/em&gt;, siehe &lt;a href=&#34;https://de.wikipedia.org/wiki/Entropiekodierung&#34;&gt;Entropiekodierung&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel: &lt;a href=&#34;https://de.wikipedia.org/wiki/Morsezeichen&#34;&gt;Morse-Code&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;variable Länge: z.B. &amp;quot;e&amp;quot; ist am häufigsten und deswegen nur 1 Ton kurz, &amp;quot;q&amp;quot; ist sehr selten und deswegen 4 Töne lang&lt;/li&gt;
&lt;li&gt;Kodiertabelle enthält nicht nur Buchstaben und Ziffern, sondern auch Sonderzeichen (Punkt, Komma, etc.) und Spezialzeichen wie &amp;quot;Spruchende&amp;quot; oder &amp;quot;Fehler, Wiederholung ab letztem vollständigem Wort&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;in der frühen Informatik (bis in die 1990er Jahre): &lt;strong&gt;Codepages&lt;/strong&gt; (Zeichentabellen)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Codes mit fester Länge von meist 1 Byte (7 oder 8 Bit) pro Zeichen&lt;/li&gt;
&lt;li&gt;Beispiel mit 7 Bit: &lt;a href=&#34;https://de.wikipedia.org/wiki/ASCII&#34;&gt;ASCII&lt;/a&gt;, unter Linux siehe &lt;code&gt;man ascii&lt;/code&gt; (&lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc20&#34;&gt;RFC 20&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Beispiel mit 8 Bit: &lt;a href=&#34;https://de.wikipedia.org/wiki/Codepage_437&#34;&gt;Codepage 437&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Standardisierung als &lt;a href=&#34;https://en.wikipedia.org/wiki/ISO/IEC_8859&#34;&gt;ISO/IEC 8859&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Problem: 8 Bit (256 Zeichen) sind zu wenig für alle in europäischen Sprachen verwendeten Zeichen, insb. wegen &lt;a href=&#34;https://de.wikipedia.org/wiki/Diakritisches_Zeichen&#34;&gt;diakritischer Zeichen&lt;/a&gt; -&amp;gt; verschiedene Codepages für verschiedene Sprachen -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/wiki/Zeichensalat&#34;&gt;Mojibake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;spätestens mit zunehmend globaler Kommunikation im Internetzeitalter musste eine bessere Lösung her&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Unicode&#34;&gt;Unicode&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keine Textkodierung im engeren Sinne, sondern erstmal nur eine durchnummerierte Liste aller möglichen Zeichen (die Nummer zu einem Zeichen heißt &lt;strong&gt;Codepunkt&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Anspruch: wenn ein Zeichen in tatsächlichen Textdokumenten verwendet wird oder wurde, gehört es in Unicode (von Buchstaben über Redigierungssymbole mittelalterlicher Typografen bis zu Hieroglyphen und Keilschrift)&lt;/li&gt;
&lt;li&gt;Größe: 17 Ebenen (&lt;em&gt;Planes&lt;/em&gt;) zu je 65536 Codepunkten = 1.114.112 Codepunkte; davon sind 2048 Codepunkte aus technischen Gründen (für die Kodierung von Surrogatpaaren) unbelegbar, somit maximal möglich 1.112.064 Codepunkte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ebenen in Unicode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ebene 0: &lt;strong&gt;Basic Multilingual Plane&lt;/strong&gt; mit allen zeitgenössischen und weitverbreiteten Schriftsystemen (&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Roadmap_to_Unicode_BMP_multilingual.svg&#34;&gt;Übersichtskarte&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ebene 1: &lt;strong&gt;Supplementary Multilingual Plane&lt;/strong&gt; mit historischen Schriftsystemen und Obskuritäten wie Domino/Mahjongg-Steinen und 😍 Emoji 😍&lt;/li&gt;
&lt;li&gt;Ebene 2: &lt;strong&gt;Supplementary Ideographic Plane&lt;/strong&gt; mit selten benutzten CJK-Schriftzeichen&lt;/li&gt;
&lt;li&gt;Ebene 3-13: noch frei&lt;/li&gt;
&lt;li&gt;Ebene 14: &lt;strong&gt;Supplementary Special-purpose Plane&lt;/strong&gt; mit Steuerzeichen zur Selektion alternativer Schriftzeichenformen&lt;/li&gt;
&lt;li&gt;Ebene 15/16: für private Verwendung reserviert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kodierungen für Unicode mit fixer Länge&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UCS-2: eine 16-Bit-Zahl pro Zeichen -&amp;gt; kann nur die BMP kodieren (UCS-2 stammt aus der Zeit, bevor Unicode mehrere Planes hatte)&lt;/li&gt;
&lt;li&gt;UCS-4/UTF-32: eine 32-Bit-Zahl pro Zeichen -&amp;gt; extrem verschwenderisch&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kodierungen für Unicode mit variabler Länge&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;UTF-16: BMP-Zeichen als eine 16-Bit-Zahl, andere Zeichen als zwei 16-Bit-Zahlen -&amp;gt; Probleme mit Endianness&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/UTF-8&#34;&gt;UTF-8&lt;/a&gt;: jedes ASCII-Zeichen als ein Byte, alle anderen Zeichen als eine Folge von 2-5 Bytes (unter Linux siehe &lt;code&gt;man utf-8&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;UTF-8 ist spektakulär: sehr kompakt, selbstsynchronisierend, einfach zu implementieren (auch in Hardware), sortierungserhaltend, ASCII-abwärtskompatibel, Nicht-ASCII-Zeichen enthalten niemals ASCII-Bytes; und wurde buchstäblich in einem Abend von Ken Thompson und Rob Pike auf einer Serviette entworfen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Probleme von Unicode&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anspruch: jeder bestehende Kodierungsstandard soll Zeichen für Zeichen in Unicode abbildbar sein -&amp;gt; dadurch unnötig viele Codepunkte insb. für diakritische Zeichen und Probleme mit Normalisierung&lt;/li&gt;
&lt;li&gt;allgemeiner: Was ist eigentlich ein Zeichen im Sinne von &amp;quot;ein Codepunkt&amp;quot;? (mehr dazu in der nächsten Folge) -&amp;gt; Unicode übernimmt hier oftmals teils kontroverse Klassifikationen aus nationalen Standards z.B. für indische und thailändische Schriften&lt;/li&gt;
&lt;li&gt;am signifikantesten hier: &lt;a href=&#34;https://de.wikipedia.org/wiki/Han-Vereinheitlichung&#34;&gt;Han-Vereinheitlichung&lt;/a&gt; (&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Source_Han_Sans_Version_Difference.svg&#34;&gt;Beispiel&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Für die historische Herleitung von Schriftkodierung empfehlen wir wieder den großartigen Podcast &lt;a href=&#34;https://requestforcomments.de/&#34;&gt;Request for Comments&lt;/a&gt;. Diesmal &lt;a href=&#34;https://requestforcomments.de/archives/400&#34;&gt;die Folge über RFC 20 ASCII&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Das nächste Mal geht es dann um T̪͙̪̻̹̩̠͔͑͋ͥ͘ę̥͔̝̘ͦͬx̨̜̩̜͙̦̻̗̳̒̊͆t̯̳̓ͥ͐ͣ́d͔̱̗̯̪̭́͛͜ͅa̵͕̯͕̻̜ͮ͒ͭȓ̜͚͚̯͎͓̋̎̈́͘s̥̯̠̬̆̿͡t̫̱̺͉̱̓͒͑͐͢e̸͖̮̙̺̠̗̬̅ͅl̝͉͚ͪ͋ͤ͜l̵̦̪͔͈̉͑u̴̝̲̠̳̖̘͚̔n͙̹̍̆͊̈͢g̨͍̣̝̣͇̯̮̠̏.</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:00:52" title="Vorgeplänkel"  />
          <chapter start="00:01:41" title="Was ist Text"  />
          <chapter start="00:03:36" title="Das Problem mit den Zahlen"  />
          <chapter start="00:06:22" title="Morse-Code"  />
          <chapter start="00:10:04" title="Codepages"  />
          <chapter start="00:26:17" title="Unicode"  />
          <chapter start="00:32:46" title="Ebenen in Unicode"  />
          <chapter start="00:40:39" title="Kodierungen für Unicode mit fixer Länge"  />
          <chapter start="00:43:00" title="Kodierungen für Unicode mit variabler Länge"  />
          <chapter start="00:45:13" title="UTF-8"  />
          <chapter start="00:54:56" title="Probleme von Unicode"  />
      </chapters>
      <enclosure length="67905153" url="https://dl.xyrillian.de/noises/stp-013-textkodierung.mp3" type="audio/mpeg"/>
      <enclosure length="43351750" url="https://dl.xyrillian.de/noises/stp-013-textkodierung.ogg" type="audio/ogg"/>
      <enclosure length="25827684" url="https://dl.xyrillian.de/noises/stp-013-textkodierung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/013-textkodierung/</guid>
    <pubDate>Thu, 06 Jan 2022 00:00:00 GMT</pubDate>
    <itunes:duration>70:24</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP012: Datenbanken</itunes:title>
    <itunes:episode>12</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP012: Datenbanken</title>
    <link>https://schluesseltechnologie-podcast.de/012-datenbanken</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wenn Sie diese Folge sehen, dann, weil sie in der Datenbank Ihrer Podcast-App gelandet ist.
Datenbanken sind überall, denn ohne sichere und effiziente Datenhaltung kommt kein technisches System zurecht.
Deswegen erklärt Xyrill uns heute, warum Biologen sich über Excel aufregen und was gute Datenspeicher mit Säure zu tun haben.</itunes:summary>
    <description>Wenn Sie diese Folge sehen, dann, weil sie in der Datenbank Ihrer Podcast-App gelandet ist.
Datenbanken sind überall, denn ohne sichere und effiziente Datenhaltung kommt kein technisches System zurecht.
Deswegen erklärt Xyrill uns heute, warum Biologen sich über Excel aufregen und was gute Datenspeicher mit Säure zu tun haben.</description>
    <content:encoded>&lt;p&gt;Wenn Sie diese Folge sehen, dann, weil sie in der Datenbank Ihrer Podcast-App gelandet ist.
Datenbanken sind überall, denn ohne sichere und effiziente Datenhaltung kommt kein technisches System zurecht.
Deswegen erklärt Xyrill uns heute, warum Biologen sich über Excel aufregen und was gute Datenspeicher mit Säure zu tun haben.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Datenbank&#34;&gt;Laut Wikipedia:&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Eine &lt;strong&gt;Datenbank&lt;/strong&gt;, auch &lt;strong&gt;Datenbanksystem&lt;/strong&gt; genannt, ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe einer Datenbank ist es, große Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen, bedarfsgerechten Darstellungsformen für Benutzer und Anwendungsprogramme bereitzustellen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Beispiele für Datenbanken &lt;em&gt;im weitesten Sinne&lt;/em&gt;: Passen diese mit der Definition oben zusammen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spreadsheets (Excel etc.)
&lt;ul&gt;
&lt;li&gt;was funktioniert: unterschiedliche, bedarfsgerechte Darstellungsformen&lt;/li&gt;
&lt;li&gt;keine widerspruchsfreie Speicherung: &lt;a href=&#34;https://www.heise.de/-6165902&#34;&gt;Beispiel Gen-Namen-Fehlformatierung&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;keine großen Datenmengen: &lt;a href=&#34;https://www.theguardian.com/politics/2020/oct/05/how-excel-may-have-caused-loss-of-16000-covid-tests-in-england&#34;&gt;Beispiel verlorene Covid-Patienten aufgrund Beschränkung auf 1 Mio. Zeilen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dateisystem
&lt;ul&gt;
&lt;li&gt;was funktioniert: große Datenmengen effizient und dauerhaft speichern&lt;/li&gt;
&lt;li&gt;keine widerspruchsfreie Speicherung, da keine Beziehungen zwischen Dateiinhalten möglich&lt;/li&gt;
&lt;li&gt;keine Unterstützung für bedarfsgerechte Darstellungsformen: jede Datei hat genau ein Format&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dateisysteme sind eine besondere Form von &lt;strong&gt;Key-Value-Datenbank&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datenbasis = ein großer Haufen von &lt;strong&gt;Values&lt;/strong&gt; (Werte, im allgemeinen Fall beliebige Dateien), die alle einen Namen (&lt;strong&gt;Key&lt;/strong&gt;) haben&lt;/li&gt;
&lt;li&gt;keine Datenbank im engeren Sinne (keine Sicherstellung von Widerspruchsfreiheit, keine Unterstützung für bedarfsgerechte Darstellungsformen)&lt;/li&gt;
&lt;li&gt;aber in der Praxis eine sinnvolle Ergänzung zu stark strukturierten Datenbanken, da die einfache Datenstruktur es ermöglicht, sehr groß zu skalieren (bis Milliarden/Billionen von individuellen Objekten)&lt;/li&gt;
&lt;li&gt;Praxisbeispiel: Cache für vorgerenderte Wikipedia-Seiten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Datenbanken im engeren Sinne: &lt;a href=&#34;https://de.wikipedia.org/wiki/Relationale_Datenbank&#34;&gt;relationale Datenbanken&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Daten liegen in einer bestimmten Struktur vor: gleichartige Objekte sind jeweils als &lt;strong&gt;Zeilen&lt;/strong&gt; in &lt;strong&gt;Tabellen&lt;/strong&gt; abgelegt, deren &lt;strong&gt;Spalten&lt;/strong&gt; im Voraus definiert sind (diese Grundstruktur nennt man &lt;strong&gt;Schema&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&amp;quot;relational&amp;quot;: Kreuzreferenzen zwischen Tabellenspalten (Beispiel: wenn die Tabelle &amp;quot;Mitarbeiter&amp;quot; eine Spalte &amp;quot;Abteilungsnummer&amp;quot; hat, muss es für jeden Wert in dieser Spalte eine entsprechende Zeile in der Tabelle &amp;quot;Abteilungen&amp;quot; geben), unter anderem dadurch Sicherstellung der Widerspruchsfreiheit&lt;/li&gt;
&lt;li&gt;strukturierte Datenhaltung ermöglicht komplexe Abfragen (z.B. &amp;quot;Wieviele Mitarbeiter in der Abteilung 172 haben ein Monatsgehalt über 3000€?&amp;quot;), typischerweise mittels &lt;a href=&#34;https://de.wikipedia.org/wiki/SQL&#34;&gt;SQL (Structured Query Language)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grundkriterien für das Verhalten von relationalen Datenbanken: &lt;a href=&#34;https://de.wikipedia.org/wiki/ACID&#34;&gt;ACID&lt;/a&gt; am Beispiel &amp;quot;Überweisung zwischen zwei Bankkonten&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Atomarität (Abgeschlossenheit)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Änderungen werden entweder ganz oder gar nicht vorgenommen&lt;/li&gt;
&lt;li&gt;am Beispiel: Überweisung muss immer beide Bankkonten anfassen (oder komplett fehlschlagen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Konsistenzerhaltung&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;wie oben besprochen: Prüfung von Kreuzreferenzen oder Randbedingungen&lt;/li&gt;
&lt;li&gt;am Beispiel: Überweisung darf nur durchgehen, wenn das Quellkonto genug Füllstand hat&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Isolation (Abgrenzung)&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;parallel laufende Änderungen dürfen nicht dieselbe Zeile anfassen&lt;/li&gt;
&lt;li&gt;im Zweifelsfall muss eine Änderung warten, bis die andere fertig ist&lt;/li&gt;
&lt;li&gt;am Beispiel: Deckungsprüfung im Quellkonto muss alle vorherigen Überweisungen einbeziehen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dauerhaftigkeit&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;wird eine Änderung als abgeschlossen gemeldet, darf auch ein Systemfehler (z.B. Systemabsturz oder Stromausfall) nicht zum Verlust der Änderung führen&lt;/li&gt;
&lt;li&gt;Garantierung der Dauerhaftigkeit ist nichttrivial aufgrund der vielen Schichten der Speicherhierarchie (siehe STP007)&lt;/li&gt;
&lt;li&gt;Sicherstellung meist in der Datenbanksoftware selbst mittels &lt;strong&gt;Write-Ahead Log&lt;/strong&gt; und drumherum mittels Betriebsprozeduren (Backups, Replikation)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;klassisches Problem mit relationalen Datenbanken: Wie klassifiziert man die Welt? Welche Attribute kann man bei Objekten voraussetzen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Welche Spalten kann man voraussetzen? z.B. Tabelle &amp;quot;Personen&amp;quot; mit Spalten &amp;quot;Name&amp;quot;, &amp;quot;Adresse&amp;quot;, &amp;quot;Geburtsdatum&amp;quot;, &amp;quot;Geburtsort&amp;quot; -&amp;gt; für alle diese Attribute gibt es Menschen, bei denen dieses Attribut nicht existiert oder unbekannt ist&lt;/li&gt;
&lt;li&gt;Welche Datentypen haben Spalten? z.B. wird die Postleitzahl oft als Nummer abgelegt, sodass dann &amp;quot;01069 Dresden&amp;quot; als &amp;quot;1069 Dresden&amp;quot; fehlverarbeitet wird&lt;/li&gt;
&lt;li&gt;allgemein: Entwurf des Datenbankschemas ist einer dieser Punkte, wo man sich manchmal als Programmierer bewusst wird, wie wenig man das Problemfeld eigentlich verstanden hat&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;abseits von relationalen Datenbanken und SQL: &lt;a href=&#34;https://de.wikipedia.org/wiki/NoSQL&#34;&gt;NoSQL&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;großer Hype in den 2010ern vor allem aufgrund der Hoffnung, die lästige Schemaentwurf-Phase los zu werden&lt;/li&gt;
&lt;li&gt;aber: Speichern von unstruktierten oder wenig strukturierten Daten verlagert das Problem nur in die Zukunft&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arten von NoSQL-Datenbanken, die tatsächlich nützlich sind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Key-Value-Datenbanken (siehe oben)&lt;/li&gt;
&lt;li&gt;Dokumentendatenbanken für Volltextsuche (z.B. Suchmaschinen)&lt;/li&gt;
&lt;li&gt;Graphdatenbanken (z.B. soziale Graphen)&lt;/li&gt;
&lt;li&gt;Datenströme (Darstellung der Welt als ein zeitlich geordneter Strom von Ereignissen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Prolog"  />
          <chapter start="00:02:39" title="Was ist eine Datenbank?"  />
          <chapter start="00:03:51" title="Beispiele für Datenbanken im weitesten Sinne"  />
          <chapter start="00:14:43" title="Key-Value-Datenbanken"  />
          <chapter start="00:27:09" title="Datenbanken im engeren Sinne: relationale Datenbanken"  />
          <chapter start="00:42:23" title="ACID"  />
          <chapter start="00:55:01" title="Probleme beim Design vom Datenbanken"  />
          <chapter start="00:59:42" title="NoSQL"  />
      </chapters>
      <enclosure length="67288244" url="https://dl.xyrillian.de/noises/stp-012-datenbanken.mp3" type="audio/mpeg"/>
      <enclosure length="42118845" url="https://dl.xyrillian.de/noises/stp-012-datenbanken.ogg" type="audio/ogg"/>
      <enclosure length="25037941" url="https://dl.xyrillian.de/noises/stp-012-datenbanken.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/012-datenbanken/</guid>
    <pubDate>Thu, 16 Dec 2021 16:50:00 GMT</pubDate>
    <itunes:duration>69:45</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP011: Programmsteuerung im Prozessor</itunes:title>
    <itunes:episode>11</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP011: Programmsteuerung im Prozessor</title>
    <link>https://schluesseltechnologie-podcast.de/011-programmsteuerung</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die CPU ist als der zentrale Baustein praktisch aller Computer bekannt.
Nachdem wir schon einen kleinen Blick in ihren Speicher geworfen haben, soll es heute darum gehen, wie dieser Baustein dazu gebracht wird, das Richtige zur rechten Zeit zu tun.</itunes:summary>
    <description>Die CPU ist als der zentrale Baustein praktisch aller Computer bekannt.
Nachdem wir schon einen kleinen Blick in ihren Speicher geworfen haben, soll es heute darum gehen, wie dieser Baustein dazu gebracht wird, das Richtige zur rechten Zeit zu tun.</description>
    <content:encoded>&lt;p&gt;Die CPU ist als der zentrale Baustein praktisch aller Computer bekannt.
Nachdem wir schon einen kleinen Blick in ihren Speicher geworfen haben, soll es heute darum gehen, wie dieser Baustein dazu gebracht wird, das Richtige zur rechten Zeit zu tun.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückblick: Logikgatter (STP003)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;aus Gattern lassen sich Schaltkreise bilden, die konkrete Einzelberechnungen anstellen
&lt;ul&gt;
&lt;li&gt;hauptsächlich einfache Rechenoperationen wie &amp;quot;zwei 16-Bit-Zahlen addieren&amp;quot;&lt;/li&gt;
&lt;li&gt;aber auch teils sehr komplexe Einzeloperationen, z.B. Teilschritte einer bestimmten Hashfunktion (siehe STP004) oder eines bestimmten Audio/Video-Codecs (heißt in Produktbeschreibungen meist &lt;strong&gt;Hardware-Beschleunigung&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Frage 1: Wie kann man mehrere Operationen nacheinander ausführen?&lt;/li&gt;
&lt;li&gt;Frage 2: Wie kann man in einem einzelnen Taktschritt aus verschiedenen möglichen Operationen wählen?&lt;/li&gt;
&lt;li&gt;Frage 3: Wie entsteht daraus ein ganzes Programm, also eine bestimmte Folge von verschiedenen Operationen?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Antwort auf Frage 1: &lt;a href=&#34;https://de.wikipedia.org/wiki/Taktgenerator_(Computer)&#34;&gt;Taktgenerator&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analog zum Taktgeber in einer Uhr (Unruh bei mechanischen Uhren, Quartzoszillator bei elektronischen Uhren), aber als mikroeletronische Schaltung realisiert&lt;/li&gt;
&lt;li&gt;Geschwindigkeitsvergleich: bei Quartzuhren hat der Oszillator meist 32768 Hz&lt;/li&gt;
&lt;li&gt;heutzutage ist die Taktfrequenz meistens regelbar
&lt;ul&gt;
&lt;li&gt;1990er: Turbo-Schalter am Gehäuse zum Verdoppeln (bzw. in der anderen Richtung Halbieren) der Taktfrequenz&lt;/li&gt;
&lt;li&gt;seit den 2000ern: &lt;a href=&#34;https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface&#34;&gt;ACPI&lt;/a&gt; und Co., Energiesparen durch bedarfsgerechtes Heruntertakten der CPU-Kerne&lt;/li&gt;
&lt;li&gt;Heruntertakten als Schutz vor Überhitzung (nach Überlastung oder beim Versagen der Kühlung)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;unter Linux: aktuelle Taktfrequenz auslesen mittels &lt;code&gt;grep &#39;^cpu MHz&#39; /proc/cpuinfo&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Antwort auf Frage 2: &lt;a href=&#34;https://de.wikipedia.org/wiki/Arithmetisch-logische_Einheit&#34;&gt;Arithmetisch-logische Einheit&lt;/a&gt; (ALU)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee: neben 2N Eingängen für zwei N-Bit-Eingabezahlen noch weitere Eingänge, die einen &lt;strong&gt;Opcode&lt;/strong&gt; darstellen, also eine fortlaufende Nummer für die gewünschte Rechenoperation&lt;/li&gt;
&lt;li&gt;Opcode bestimmt, von welchem Teilschaltkreis das Ergebnis nach außen durchgereicht wird&lt;/li&gt;
&lt;li&gt;hierzu zusätzliche Logikschaltung am Ende: &lt;code&gt;Ausgabe = ((Opcode = 1) AND Ausgabe1) OR ((Opcode = 2) AND Ausgabe2) OR ...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;analog zur ALU gibt es meist noch eine FPU für Fließkommazahl-Operationen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Antwort auf Frage 3: &lt;a href=&#34;https://de.wikipedia.org/wiki/Steuerwerk&#34;&gt;Steuerwerk&lt;/a&gt; in der CPU (oder GPU)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Programmdatei besteht aus einer Folge von Befehlen, die im Arbeitsspeicher vorliegen&lt;/li&gt;
&lt;li&gt;Steuerwerk hat einen &lt;strong&gt;Befehlszeiger&lt;/strong&gt; (Instruction Pointer), der auf den jeweils nächsten Befehl zeigt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Befehle sind in &lt;strong&gt;Maschinensprache&lt;/strong&gt; kodiert&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meist 16/32/64 Bit groß (je nach Prozessorarchitektur)&lt;/li&gt;
&lt;li&gt;für Rechenbefehle wie &amp;quot;Addition&amp;quot; oder &amp;quot;Multiplikation&amp;quot;
&lt;ul&gt;
&lt;li&gt;den Opcode (welche Berechnung auszuführen ist)&lt;/li&gt;
&lt;li&gt;aus welchen Prozessorregister die Eingabe kommt (evtl. ist ein Eingabewert eine Konstante wie &amp;quot;0&amp;quot; oder &amp;quot;1&amp;quot; und steckt direkt im Befehl drin)&lt;/li&gt;
&lt;li&gt;in welches Prozessorregister die Ausgabe geht&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;andere Befehlsarten:
&lt;ul&gt;
&lt;li&gt;Load: aus dem Hauptspeicher einen Wert in ein Prozessorregister holen (Parameter: Quelladresse und Zielregister)&lt;/li&gt;
&lt;li&gt;Store: genau andersherum (Parameter: Quellregister und Zieladresse)&lt;/li&gt;
&lt;li&gt;Compare: schickt zwei Zahlen aus Registern an die ALU, aber statt einer Ergebniszahl gibt es einen Satz von &lt;strong&gt;Flags&lt;/strong&gt; wie &amp;quot;A ist gleich B&amp;quot; oder &amp;quot;A ist kleiner als B&amp;quot; zurück&lt;/li&gt;
&lt;li&gt;Jump: aktualisiert den Befehlszeiger, evtl. nur wenn ein bestimmtes Flag gesetzt ist (zum Beispiel Gleichheits-Flag aus einem vorherigen Compare oder Überlauf-Flag aus einer vorherigen Addition)&lt;/li&gt;
&lt;li&gt;Call/Return: Call macht einen Sprung, aber speichert vorher die aktuelle Position in einen designierten Teil des Arbeitsspeichers; Return springt an den Ursprung des letzten Call zurück (damit verschachtelbare Unterprogramme realisierbar)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ausführung eines Befehls ist unterteilt in mehrere Schritte&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grobe Skizze der Abarbeitung eines einzelnen Befehls (Schritt 2-5 jeweils nur, sofern für den entsprechenden Befehl zutreffend)
&lt;ul&gt;
&lt;li&gt;Schritt 1: Auslesen und Dekodieren des Befehls&lt;/li&gt;
&lt;li&gt;Schritt 2: Laden der Eingabewerte aus den entsprechenden Registern&lt;/li&gt;
&lt;li&gt;Schritt 3: Ausführen des Befehls (z.B. bei Rechenbefehlen mittels der ALU oder FPU)&lt;/li&gt;
&lt;li&gt;Schritt 4: Speichern des Ausgabewertes im entsprechenden Zielregister&lt;/li&gt;
&lt;li&gt;Schritt 5: Verschieben des Befehlszeigers auf den Folgebefehl&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;in der Praxis meist noch viel mehr Teilschritte (z.B. moderne x86-CPUs: über 40 Pipeline-Schritte)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pipelining&lt;/strong&gt;: wenn ein Befehl einen bestimmten Schritt durchlaufen hat, kann hier meist schon mit dem nächsten Befehl begonnen werden, auch wenn der vorherige Befehl noch nicht komplett abgearbeitet war&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;spekulative Ausführung&lt;/strong&gt; (&lt;em&gt;Speculative Execution&lt;/em&gt;): nachfolgende Befehle rechnen mit den Daten, von denen die CPU glaubt, dass sie wahrscheinlich aktuell sein werden, sobald derjenige Befehl tatsächlich an der Reihe ist&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sprungvorhersage&lt;/strong&gt; (&lt;em&gt;Branch Prediction&lt;/em&gt;): bei einem Sprungbefehl mit Vorbedingung muss die CPU möglichst gut abschätzen, ob die Vorbedingung eintritt und der Sprung vollzogen wird, um die nächsten Befehle vorhersagen zu können&lt;/li&gt;
&lt;li&gt;Verbesserungen in spekulativer Ausführung und Sprungvorhersage sind einer der Hauptgründe, warum Desktop-CPUs auch ohne höhere Taktfrequenzen immer schneller geworden sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Überlegungen für schnelle Programme&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sprungbefehle sind für schnelle Programme ein Problem: wenn die CPU einen Sprung falsch vorhersagt, muss nach dem Ausführen des Sprungs die gesamte Pipeline verworfen und neu gefüllt werden&lt;/li&gt;
&lt;li&gt;verschiedene Befehle dauern unterschiedlich lange in der Berechnung (z.B. Multiplikation ist langsamer als Addition ist langsamer als Bit-Shift); entsprechende Austauschungen finden in Compilern meist automatisch statt, z.B. &lt;code&gt;2 * x -&amp;gt; x &#43; x&lt;/code&gt; oder &lt;code&gt;8 * x -&amp;gt; x &amp;lt;&amp;lt; 3&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:31" title="Rückblick auf Logikgatter (STP003)"  />
          <chapter start="00:07:14" title="Taktgenerator"  />
          <chapter start="00:21:30" title="Arithmetisch-logische Einheit"  />
          <chapter start="00:30:37" title="Steuerwerk"  />
          <chapter start="00:36:56" title="Maschinensprache"  />
          <chapter start="00:50:57" title="Schrittweise Befehlsausführung"  />
          <chapter start="01:08:20" title="Überlegungen zu Codeoptimierung"  />
      </chapters>
      <enclosure length="71835930" url="https://dl.xyrillian.de/noises/stp-011-programmsteuerung.mp3" type="audio/mpeg"/>
      <enclosure length="44216224" url="https://dl.xyrillian.de/noises/stp-011-programmsteuerung.ogg" type="audio/ogg"/>
      <enclosure length="27392651" url="https://dl.xyrillian.de/noises/stp-011-programmsteuerung.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/011-programmsteuerung/</guid>
    <pubDate>Thu, 25 Nov 2021 00:00:00 GMT</pubDate>
    <itunes:duration>74:30</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP010: 3D-Grafik</itunes:title>
    <itunes:episode>10</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP010: 3D-Grafik</title>
    <link>https://schluesseltechnologie-podcast.de/010-3d-grafik</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute geht es viel um Spiele. Denn anscheinend sind diese fast das Einzige, das Xyrill und ttimeless einfällt, wenn es um 3D-Grafik geht.
Allgemeiner dreht sich diese Folge darum, was es alles braucht, um Körper in virtuellen Welten darzustellen.
Der Abschluss der vierteiligen Reihe über Grafik, und was dazu notwendig ist.</itunes:summary>
    <description>Heute geht es viel um Spiele. Denn anscheinend sind diese fast das Einzige, das Xyrill und ttimeless einfällt, wenn es um 3D-Grafik geht.
Allgemeiner dreht sich diese Folge darum, was es alles braucht, um Körper in virtuellen Welten darzustellen.
Der Abschluss der vierteiligen Reihe über Grafik, und was dazu notwendig ist.</description>
    <content:encoded>&lt;p&gt;Heute geht es viel um Spiele. Denn anscheinend sind diese fast das Einzige, das Xyrill und ttimeless einfällt, wenn es um 3D-Grafik geht.
Allgemeiner dreht sich diese Folge darum, was es alles braucht, um Körper in virtuellen Welten darzustellen.
Der Abschluss der vierteiligen Reihe über Grafik, und was dazu notwendig ist.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vergleich zu 2D-Desktop-Grafik (STP008)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Zeichenreihenfolge ist nicht so offensichtlich (Was ist vorne? Was ist hinten?)&lt;/li&gt;
&lt;li&gt;höherer Anspruch an Realismus: dynamische Beleuchtung, Texturierung, etc.&lt;/li&gt;
&lt;li&gt;Randbemerkung: auch 2D-Spiele werden heute meist in einer 3D-Szene aufgebaut&lt;/li&gt;
&lt;li&gt;Grundeinheit für 3D-Modelle: nicht der Pixel, sondern das Polygon (deswegen kommen wir um Fließkommazahlen nicht herum)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vorbemerkungen zu den folgenden Schritten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;all dies passiert für jedes Einzelbild von vorne (also bei 60Hz 60-mal pro Sekunde)&lt;/li&gt;
&lt;li&gt;zur Illustration verlinken wir auf Beispielbilder aus den &lt;a href=&#34;https://github.com/ssloy/tinyrenderer/wiki/Lesson-0:-getting-started&#34;&gt;Übungsunterlagen für einen Kurs in 3D-Rendering-Grundlagen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 1: 3D-Modell mit Polygonen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Polygon heißt wörtlich &amp;quot;Vieleck&amp;quot;, aber 3D-Modelle bestehen meist nur aus Dreiecken&lt;/li&gt;
&lt;li&gt;Polygone mit vier und mehr Ecken können mittels &lt;a href=&#34;https://de.wikipedia.org/wiki/Triangulation_(Fl%C3%A4che)&#34;&gt;Triangulation&lt;/a&gt; in Dreiecke zerlegt werden&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/01-bresenham/5da6818190.png&#34;&gt;Darstellung eines 3D-Modells als Gitternetz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 2: Kamera&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grundsätzlich ein Paar aus Blickpunkt und Blickrichtung, aber mit einigen weiteren Parametern&lt;/li&gt;
&lt;li&gt;mathematische Grundlage: &lt;a href=&#34;https://de.wikipedia.org/wiki/Quaternion&#34;&gt;Quaternionen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Sichtfeld&#34;&gt;Sichtfeld&lt;/a&gt; (&lt;strong&gt;Field of View&lt;/strong&gt;): beim Menschen 130°; bei Videospielen meist weniger, je nachdem, wieviel Platz der Bildschirm im Sichtfeld einnimmt (z.B. 90° am PC, 60° an Konsolen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 3: Ausmalen der Polygone (Rasterisierung)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backface Culling&lt;/strong&gt; (Rückseiten-Auslese): wir werfen alle Polygone weg, die von uns wegzeigen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/02-triangle/d5223f9b93.png&#34;&gt;Beispiel mit ausgemalten Polygonen nach Backface Culling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Z-Buffer&lt;/strong&gt;: wenn wir Polygone ausmalen, dann malen wir nur die Pixel aus, bei denen wir nicht schon Polygone gemalt haben, die näher an der Kamera dran sind&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/03-zbuffer/f93a1fc1cbaebb9c4670ae0003e62947.png&#34;&gt;Beispiel mit ausgemalten Polygonen unter Verwendung des Z-Buffers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 4: Texturen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bis jetzt war jedes Polygon einfarbig, jetzt kleben wir Bilder auf (analog zu Modellbausätzen)&lt;/li&gt;
&lt;li&gt;in der Praxis ein großes Bild für das ganze Modell&lt;/li&gt;
&lt;li&gt;jede Ecke jedes Polygons wird zu einem Punkt in der Textur zugeordnet&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/03-zbuffer/73714966ad4a4377b8c4df60bef03777.png&#34;&gt;Beispiel mit Polygonen, die mit ihrer Textur ausgemalt sind&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Einwurf: Was unterscheidet einen Grafikprozessor (GPU) von einem Hauptprozessor (CPU)?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU-Kerne führen einzelne Befehle auf einzelnen Daten aus&lt;/li&gt;
&lt;li&gt;GPU führt einzelne Befehle auf vielen Daten gleichzeitig aus, z.B. Rasterisierung von 10000 Polygonen gleichzeitig oder Z-Buffer-Prüfung für 10000 Pixel gleichzeitig&lt;/li&gt;
&lt;li&gt;dadurch auch für andere massiv parallelisierbare Operationen interessant (&amp;quot;GPGPU&amp;quot;, General Purpose GPU), z.B. wissenschaftliche Simulationen, maschinelles Lernen, Passwortknacken&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 5: Shader&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bis jetzt haben wir die &lt;strong&gt;Fixed Function Pipeline&lt;/strong&gt; beschrieben, eine im GPU-Treiber fest vorgegebene Kette von Rendering-Schritten&lt;/li&gt;
&lt;li&gt;neuere GPU (seit den frühen 2000ern) erlauben das Einbetten von eigenen Programmen (&lt;strong&gt;Shadern&lt;/strong&gt;) in die Pipeline&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vertex Shader&lt;/strong&gt;: wird einmal pro Vertex (Ecke eines Polygons) aufgerufen, um die 2D-Position auf dem Bildschirm zu berechnen (ansonsten normale Berechnung anhand der konfigurierten Kameraposition)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fragment Shader&lt;/strong&gt;: wird einmal pro Pixel aufgerufen, um gegebenenfalls die Farbe des Pixels zu modifizieren&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/06-shaders/f2bf83c5994b9051aaba499cb05e65bf.png&#34;&gt;Beispiel eines Fragment-Shaders, der eine Farbtextur auf 6 feste Farbstufen reduziert&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 6: Beleuchtung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bei traditionallen 2D-Spielen mit Sprites war Beleuchtung meist global (z.B. jedes Objekt hat 2 Sprites, einmal für dunkle und einmal für helle Szenen)&lt;/li&gt;
&lt;li&gt;dynamische Beleuchtung: heute meist als Teil des Fragment Shaders&lt;/li&gt;
&lt;li&gt;Beispiel: &lt;a href=&#34;https://raw.githubusercontent.com/ssloy/tinyrenderer/gh-pages/img/06-shaders/e3720a5dfedc49edb0bf70f8bc64204a.png&#34;&gt;Phong&#39;s Approximation einer natürlichen Beleuchtung&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Anteil: ambiente Beleuchtung (überall gleich stark, Grundausleuchtung wie in einem Fernsehstudio)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Anteil: diffuse Beleuchtung (abhängig davon, wie sehr die beleuchtete Fläche zur Lichtquelle hingewendet ist)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Anteil: spekulare Beleuchtung (Glänzen; stark überbetont auf Flächen, die fast exakt zur Lichtquelle hingewendet sind)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;es gibt noch so viel mehr: Kantenglättung (Antialiasing), lineares und anisotropisches Filtern, Normal Mapping, Raytracing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro, Begrüßung, Vorbemerkungen"  />
          <chapter start="00:13:37" title="Schritt 1: 3D-Modell mit Polygonen"  />
          <chapter start="00:17:25" title="Schritt 2: Kamera"  />
          <chapter start="00:27:00" title="Schritt 3: Ausmalen der Polygone (Rasterisierung)"  />
          <chapter start="00:40:20" title="Schritt 4: Texturen"  />
          <chapter start="00:47:26" title="Einwurf: Was unterscheidet einen Grafikprozessor (GPU) von einem Hauptprozessor (CPU)?"  />
          <chapter start="00:51:58" title="Schritt 5: Shader"  />
      </chapters>
      <enclosure length="66558263" url="https://dl.xyrillian.de/noises/stp-010-3d-grafik.mp3" type="audio/mpeg"/>
      <enclosure length="41584820" url="https://dl.xyrillian.de/noises/stp-010-3d-grafik.ogg" type="audio/ogg"/>
      <enclosure length="25502287" url="https://dl.xyrillian.de/noises/stp-010-3d-grafik.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/010-3d-grafik/</guid>
    <pubDate>Thu, 04 Nov 2021 00:00:00 GMT</pubDate>
    <itunes:duration>69:00</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP009: Fließkommazahlen</itunes:title>
    <itunes:episode>9</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP009: Fließkommazahlen</title>
    <link>https://schluesseltechnologie-podcast.de/009-fliesskommazahlen</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>„Wir nehmen diese Ausrede Grafik, um in diesen Grundlagenfolgen Dinge zu erklären, die überhaupt nichts mit Grafik zu tun zu haben scheinen, aber dann machen wir den Bogen doch wieder zurück.“
Damit schafft Xyrill die passende Einleitung dieser dritten Folge unserer vierteiligen Reihe.</itunes:summary>
    <description>„Wir nehmen diese Ausrede Grafik, um in diesen Grundlagenfolgen Dinge zu erklären, die überhaupt nichts mit Grafik zu tun zu haben scheinen, aber dann machen wir den Bogen doch wieder zurück.“
Damit schafft Xyrill die passende Einleitung dieser dritten Folge unserer vierteiligen Reihe.</description>
    <content:encoded>&lt;p&gt;„Wir nehmen diese Ausrede Grafik, um in diesen Grundlagenfolgen Dinge zu erklären, die überhaupt nichts mit Grafik zu tun zu haben scheinen, aber dann machen wir den Bogen doch wieder zurück.“
Damit schafft Xyrill die passende Einleitung dieser dritten Folge unserer vierteiligen Reihe.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP001: Ganzzahlen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. 8-Bit-Zahlen: ohne Vorzeichen 0 bis 255 oder mit Vorzeichen -128 bis 127&lt;/li&gt;
&lt;li&gt;Problem 1: Wie stellt man Zahlen mit Nachkommastellen dar?&lt;/li&gt;
&lt;li&gt;Problem 2: Wie stellt man sehr große Zahlen effizient dar?&lt;/li&gt;
&lt;li&gt;zwei Optionen: Festkommazahlen und Fließkommazahlen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Festkommazahlen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;im Prinzip dasselbe wie Ganzzahlen, aber zählt in Schritten von 0,1 oder 0,01 etc.&lt;/li&gt;
&lt;li&gt;Beispiel: Währungsrechnungen oft mit 4 Nachkommastellen (also auf 0,01 Eurocent genau)&lt;/li&gt;
&lt;li&gt;gegenüber Fließkommazahlen: schneller und genauer, aber nicht so flexibel (löst nur Problem 1, nicht Problem 2)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fließkommazahlen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;grundsätzliche Idee: analog zur &lt;a href=&#34;https://de.wikipedia.org/wiki/Wissenschaftliche_Notation&#34;&gt;wissenschaftlichen Zahlennotation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;z.B. &amp;quot;1,2 Milliarden&amp;quot;: nicht als &lt;code&gt;1.200.000.000&lt;/code&gt;, sondern &lt;code&gt;1,2 x 10^9&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;z.B. &amp;quot;2 Hunderttausendstel&amp;quot;: nicht als &lt;code&gt;0,000002&lt;/code&gt;, sondern &lt;code&gt;2 x 10^-6&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vorteil: unabhängig von der Größenordnung kann immer die gleiche Zahl an Ziffern dargestellt werden&lt;/li&gt;
&lt;li&gt;in Computern natürlich nicht zur Basis 10, sondern zur Basis 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bestandteile einer Fließkommazahl&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Exponent&lt;/strong&gt; (E): die Anzahl der Zweierpotenzen&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mantisse&lt;/strong&gt; (M): der Teil der Zahl, der nicht in der Potenz steht&lt;/li&gt;
&lt;li&gt;insgesamt also &lt;code&gt;M * 2^E&lt;/code&gt; für positive oder &lt;code&gt;-M * 2^E&lt;/code&gt; für negative Zahlen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rechenoperationen ungefähr analog zum Rechenschieber&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Addition: erst die Exponenten angleichen, dann die Mantissen addieren, dann eventuell nochmal den Exponenten anpassen, damit die finale Darstellung wieder schön kompakt ist&lt;/li&gt;
&lt;li&gt;hier kommt das Überlaufbit aus STP003 wieder ins Spiel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kodierung: fast immer gemäß &lt;a href=&#34;https://de.wikipedia.org/wiki/IEEE_754&#34;&gt;IEEE-754-Standard&lt;/a&gt;
* &lt;a href=&#34;https://de.wikipedia.org/wiki/Institute_of_Electrical_and_Electronics_Engineers&#34;&gt;IEEE&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problem: wir wollen uns nicht merken müssen, wo in der Mantisse das Komma steht&lt;/li&gt;
&lt;li&gt;Trick: wir schieben das Komma so hin, dass die Mantisse mit &lt;code&gt;1,&lt;/code&gt; anfängt, und speichern dann nur den Teil dahinter (&lt;strong&gt;normalisierte Zahlen&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Ausnahme: beim kleinsten Wert des Exponenten fängt die Mantisse mit &lt;code&gt;0,&lt;/code&gt; an, damit wir auch die Zahl 0 und sehr kleine Zahlen nahe 0 darstellen können (&lt;strong&gt;subnormale Zahlen&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;z.B. für 32 Bit: &lt;a href=&#34;https://de.wikipedia.org/wiki/Einfache_Genauigkeit&#34;&gt;einfache Genauigkeit&lt;/a&gt; (&amp;quot;Single Precision&amp;quot;)
&lt;ul&gt;
&lt;li&gt;1 Bit Vorzeichen&lt;/li&gt;
&lt;li&gt;8 Bit Exponent (Ganzzahl zwischen -127 und 128)&lt;/li&gt;
&lt;li&gt;23 Bit Signifikand (Mantisse ohne das führende &lt;code&gt;1,&lt;/code&gt; oder &lt;code&gt;0,&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Werte je nach Exponent:
&lt;ul&gt;
&lt;li&gt;Exponent = -127 -&amp;gt; subnormale Zahlen&lt;/li&gt;
&lt;li&gt;Exponent = 128 -&amp;gt; spezielle Werte&lt;/li&gt;
&lt;li&gt;ansonsten -&amp;gt; normalisierte Zahlen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;im Exponent 128 werden einige spezielle Werte kodiert, die man braucht, damit jede Rechenoperation immer eine gültige Fließkommazahl erzeugt:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;plus Unendlich&lt;/strong&gt;: z.B. &lt;code&gt;1 / 0 = &#43;∞&lt;/code&gt; oder &lt;code&gt;∞ &#43; ∞ = ∞&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;minus Unendlich&lt;/strong&gt;: z.B. &lt;code&gt;-1 / 0 = -∞&lt;/code&gt; oder &lt;code&gt;log2(0) = -∞&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;keine Zahl&lt;/strong&gt; (not a number, NaN): z.B. &lt;code&gt;∞ - ∞ = NaN&lt;/code&gt; oder &lt;code&gt;0 / 0 = NaN&lt;/code&gt; oder &lt;code&gt;log2(-1) = NaN&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Implementation von Fließkommarechnungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;initial in Software auf Basis von Ganzzahlen&lt;/li&gt;
&lt;li&gt;seit den 1980ern zunehmend in Hardware (seit den 1990ern auch in PCs)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fallstricke bei Fließkommarechnungen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nicht alle kompakten Dezimalzahlen sind kompakte Binärzahlen: z.B. &lt;code&gt;0.3/0.2 = 1.4999999999999998&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;bei komplexen Berechnungen können sich kleine Rundungsfehler zu großen Fehlern aufschaukeln, siehe zum Beispiel &lt;a href=&#34;https://en.wikipedia.org/wiki/Kahan_summation_algorithm&#34;&gt;Kahan-Summenalgorithmus&lt;/a&gt; (leider in Wikipedia nur auf englisch)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Anwendungsbereiche üblicher Fließkommaformate&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;doppelte Genauigkeit (64 Bit): für wissenschaftliche Berechnungen&lt;/li&gt;
&lt;li&gt;einfache Genauigkeit (32 Bit): für 3D-Grafik (siehe nächste Folge)&lt;/li&gt;
&lt;li&gt;halbe Genauigkeit (16 Bit), Viertelgenauigkeit (8 Bit): für Training von neuronalen Netzwerken&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Vorrede"  />
          <chapter start="00:02:19" title="Festkommazahlen"  />
          <chapter start="00:04:28" title="Wissenschaftliche Zahlennotation"  />
          <chapter start="00:09:25" title="Bestandteile einer Fließkommazahl"  />
          <chapter start="00:10:29" title="Rechnen mit Fließkommazahlen"  />
          <chapter start="00:14:03" title="Kodierung von Fließkommazahlen"  />
          <chapter start="00:34:28" title="Implementation von Fließkommarechnungen"  />
          <chapter start="00:38:26" title="Fallstricke bei Fließkommazahlen"  />
          <chapter start="00:43:20" title="Anwendungsbereiche üblicher Fließkommaformate"  />
      </chapters>
      <enclosure length="24102965" url="https://dl.xyrillian.de/noises/stp-009-fliesskommazahlen.mp3" type="audio/mpeg"/>
      <enclosure length="31214808" url="https://dl.xyrillian.de/noises/stp-009-fliesskommazahlen.ogg" type="audio/ogg"/>
      <enclosure length="17970217" url="https://dl.xyrillian.de/noises/stp-009-fliesskommazahlen.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/009-fliesskommazahlen/</guid>
    <pubDate>Thu, 14 Oct 2021 16:40:00 GMT</pubDate>
    <itunes:duration>49:33</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP008: 2D-Grafik</itunes:title>
    <itunes:episode>8</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP008: 2D-Grafik</title>
    <link>https://schluesseltechnologie-podcast.de/008-2d-grafik</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Hier nun der zweite Teil unserer Reihe über die Herkunft und Darstellung von Grafik.
Genießen sie heute Funfacts und Kaufberatung auf mittelmäßigem Niveau.</itunes:summary>
    <description>Hier nun der zweite Teil unserer Reihe über die Herkunft und Darstellung von Grafik.
Genießen sie heute Funfacts und Kaufberatung auf mittelmäßigem Niveau.</description>
    <content:encoded>&lt;p&gt;Hier nun der zweite Teil unserer Reihe über die Herkunft und Darstellung von Grafik.
Genießen sie heute Funfacts und Kaufberatung auf mittelmäßigem Niveau.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;computergenerierte Bilder sind &lt;strong&gt;rasterisiert&lt;/strong&gt; (in Bildpunkte unterteilt)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jeder Bildpunkt hat genau eine Farbe&lt;/li&gt;
&lt;li&gt;generell sind verschiedene Rasterisierungen möglich (z.B. bei Facettenaugen von Insekten meist hexagonale Rasterung)&lt;/li&gt;
&lt;li&gt;bei Computern meist quadratische Pixelraster: vereinfacht Speicherabbildung und bestimmte Berechnungen, die Nachbarpixel einbeziehen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Farbe ist nicht eine einzige Zahl, sondern ein Punkt in einem mehrdimensionalen &lt;strong&gt;Farbraum&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;verschiedene Farbräume/Farbmodelle je nach Anwendung
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/RGB-Farbraum&#34;&gt;RGB&lt;/a&gt; (Rot-Grün-Blau): für selbstleuchtende Monitore mit drei verschiedenen Grundfarben (&lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Lochmaske_makro.jpg&#34;&gt;Beispiel aus einem CRT-Monitor&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/YUV-Farbmodell&#34;&gt;YUV&lt;/a&gt; (Y-Luminanz, UV-Chrominanz) etc.: für Fernsehbildschirme (abwärtskompatibel zu Schwarzweißfernsehern, die UV ignorieren und nur Y anzeigen)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/HSV-Farbraum&#34;&gt;HSV&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/wiki/Lab-Farbraum&#34;&gt;CIELAB&lt;/a&gt;: modellieren die natürliche Farbwahrnehmung des Menschen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/CMYK-Farbmodell&#34;&gt;CMYK&lt;/a&gt; (Cyan-Magenta-Yellow-Black): für Druckprozesse mit vier Standardtinten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Farbräume sind meistens dreidimensional, weil wir drei Arten von Farbrezeptoren im Auge haben (zum Vergleich: Fangschreckenkrebse haben bis zu 12 Rezeptorarten und bräuchten also einen zwölfdimensionalen Farbraum)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispielrechnung: Wie groß ist der Datenstrom zu einem normalen Computermonitor?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;angenommen 4K-Auflösung: 3840x2160 Pixel&lt;/li&gt;
&lt;li&gt;angenommen 8 Bit Farbtiefe: 8 Bit pro Pixel und Farbe, also 3 Byte pro Pixel (es gibt auch schon Monitore mit 10 Bit oder 12 Bit Farbtiefe)&lt;/li&gt;
&lt;li&gt;angenommen 60 Hz, also 60 Bilder pro Sekunde&lt;/li&gt;
&lt;li&gt;Ergebnis (ohne Datenkompression): 3840 * 2160 Pixel / Bild * 3 Byte / Pixel * 60 Bilder / Sekunde = 1.39 GiB/s bzw. 11.1 Gib/s&lt;/li&gt;
&lt;li&gt;zum Vergleich: komprimiertes 4K-Video typischerweise 2 MiB/s (16 Mib/s), Kompressionsfaktor ~700&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bildaufbau in traditionellen Systemen mit 2D-Grafik (z.B. Spielkonsolen der 80er und frühen 90er) erfolgt meist mittels &lt;strong&gt;Sprites&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sprites: einzelne vorgefertigte Bilder (z.B. Glyphen einer Terminal-Schriftart oder einzelne Objekte in einem Videospiel)
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Pixel_art&#34;&gt;Pixel-Art&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Grafikprozessor erhält eine Liste von Sprites mit den entsprechenden Positionen, an denen diese eingefügt werden sollen&lt;/li&gt;
&lt;li&gt;Bild entsteht als Überlagerung aller Sprites in ein Gesamtbild&lt;/li&gt;
&lt;li&gt;Gesamtbild liegt somit im Videospeicher vor (einem separaten Speicher des Grafikprozessors) und kann dann zum Monitor geschickt werden (siehe auch &lt;a href=&#34;https://de.wikipedia.org/wiki/Doppelpufferung&#34;&gt;Double Buffering&lt;/a&gt; und &lt;a href=&#34;https://de.wikipedia.org/wiki/Vertikale_Synchronisation&#34;&gt;V-Sync&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;in Abgrenzung dazu: &lt;strong&gt;Vektorgrafik&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beschreibung eines Bildes mittels grafischer Primitiven (Rechtecke, Kreise, Linien, Kurven)&lt;/li&gt;
&lt;li&gt;Bildaufbau durch &lt;strong&gt;Rasterisierung&lt;/strong&gt; dieser Primitiven, z.B. mittels des &lt;a href=&#34;https://de.wikipedia.org/wiki/Bresenham-Algorithmus&#34;&gt;Bresenham-Algorithmus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;bis Ende der 90er oft mittels separater Koprozessoren (z.B. &lt;a href=&#34;https://de.wikipedia.org/wiki/Super_FX&#34;&gt;Super FX&lt;/a&gt;), da die normalen Prozessoren nicht schnell genug waren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bildaufbau in traditionellen Desktopsystemen (z.B. Windows 95 bis XP) ist eine Mischung aus beiden&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fensterrahmen, Knöpfe etc. als Vektorgrafik (teilweise in Sprites vorgerendert)&lt;/li&gt;
&lt;li&gt;Textsatz ebenfalls auf Basis vorgerenderter Sprites für die einzelnen Zeichen, die wiederum als Vektorgrafik definiert sind&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;seit den 2000er-Jahren werden auch 2D-Bilder zunehmend auf der Grafikkarte berechnet, denn:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Grafikkarten bzw. Grafikprozessoren (GPUs) sind seit diesem Punkt hinreichend allgegenwärtig&lt;/li&gt;
&lt;li&gt;GPUs sind für diese Aufgabe deutlich effizienter (sowohl in Geschwindigkeit als auch Energieverbrauch)&lt;/li&gt;
&lt;li&gt;GPUs können auch fortgeschrittene Effekte wie Schattierungen oder Animationen effizient berechnen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und einführende Worte"  />
          <chapter start="00:01:41" title="Rasterisierung und Bildwahrnehmung"  />
          <chapter start="00:10:06" title="Farbräume"  />
          <chapter start="00:14:33" title="RGB-Farbraum"  />
          <chapter start="00:17:31" title="YUV-Farbraum"  />
          <chapter start="00:23:21" title="HSV- und CIELAB-Farbräume"  />
          <chapter start="00:28:04" title="CMYK-Farbraum"  />
          <chapter start="00:31:03" title="Der Datenstrom zum Monitor"  />
          <chapter start="00:42:41" title="Bildaufbau mittels Sprites"  />
          <chapter start="00:59:37" title="Vektorgrafik"  />
          <chapter start="01:11:53" title="Bildaufbau in traditionellen Desktopsystemen"  />
      </chapters>
      <enclosure length="39780588" url="https://dl.xyrillian.de/noises/stp-008-2d-grafik.mp3" type="audio/mpeg"/>
      <enclosure length="52702252" url="https://dl.xyrillian.de/noises/stp-008-2d-grafik.ogg" type="audio/ogg"/>
      <enclosure length="30239041" url="https://dl.xyrillian.de/noises/stp-008-2d-grafik.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/008-2d-grafik/</guid>
    <pubDate>Thu, 23 Sep 2021 16:45:00 GMT</pubDate>
    <itunes:duration>82:13</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP007: Speicherhierarchie</itunes:title>
    <itunes:episode>7</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP007: Speicherhierarchie</title>
    <link>https://schluesseltechnologie-podcast.de/007-speicherhierarchie</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Für große Teile der Anwender liegt sie im Verborgenen. Versteckt unter Plastik- und Metallgehäusen ist die Welt der Speicher ein ebenso fremder wie faszinierender Ort. Doch auch hier herscht eine strenge Rangordnung, bestimmt allein von Geschwindigkeit und Ausdauer. Hört selbst, welch beschwerlicher Weg sich auftut, wenn Bits sich auf die Reise machen, um verarbeitet zu werden.</itunes:summary>
    <description>Für große Teile der Anwender liegt sie im Verborgenen. Versteckt unter Plastik- und Metallgehäusen ist die Welt der Speicher ein ebenso fremder wie faszinierender Ort. Doch auch hier herscht eine strenge Rangordnung, bestimmt allein von Geschwindigkeit und Ausdauer. Hört selbst, welch beschwerlicher Weg sich auftut, wenn Bits sich auf die Reise machen, um verarbeitet zu werden.</description>
    <content:encoded>&lt;p&gt;Für große Teile der Anwender liegt sie im Verborgenen. Versteckt unter Plastik- und Metallgehäusen ist die Welt der Speicher ein ebenso fremder wie faszinierender Ort. Doch auch hier herscht eine strenge Rangordnung, bestimmt allein von Geschwindigkeit und Ausdauer. Hört selbst, welch beschwerlicher Weg sich auftut, wenn Bits sich auf die Reise machen, um verarbeitet zu werden.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückbezug zu STP003: Logikgatter&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;damit Rechnen möglich&lt;/li&gt;
&lt;li&gt;für Eingabewerte und Ausgabewerte ist ein Speicher erforderlich&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kurzabriss zum Thema &lt;a href=&#34;https://de.wikipedia.org/wiki/Harvard-Architektur&#34;&gt;Harvard-Architektur&lt;/a&gt; vs. &lt;a href=&#34;https://de.wikipedia.org/wiki/Von-Neumann-Architektur&#34;&gt;Von-Neumann-Architektur&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;grundsätzliche Arten von Speichern&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;flüchtiger Speicher: braucht Strom zum Halten von Daten&lt;/li&gt;
&lt;li&gt;nichtflüchtiger Speicher: behält Daten auch im ausgeschalteten Zustand&lt;/li&gt;
&lt;li&gt;Der ideale Speicher wäre groß, schnell, nichtflüchtig, und beliebig oft wiederbeschreibbar.&lt;/li&gt;
&lt;li&gt;da wir keinen idealen Speicher haben: &lt;strong&gt;Speicherhierarchie&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In der folgenden Liste der verschiedenen Hierarchiestufen sind alle konkreten Zahlenwerte nur illustrative Beispielwerte für Hardware der aktuellen Generation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Stufe 1: &lt;a href=&#34;https://de.wikipedia.org/wiki/Festplattenlaufwerk&#34;&gt;Festplatte&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;nichtflüchtig, groß und günstig (ab etwa 25 Euro pro TiB)&lt;/li&gt;
&lt;li&gt;Zugriffsgeschwindigkeit: 2.5 bis 10 ms (bei 3 GHz: 7,5 bis 30 Millionen Takte) plus Übertragungszeit&lt;/li&gt;
&lt;li&gt;Zugriff immer mindestens in Blöcken zu 4 KiB, besonders effizient beim Zugriff auf Sequenzen aufeinanderfolgender Blöcke&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stufe 2: &lt;a href=&#34;https://de.wikipedia.org/wiki/Solid-State-Drive&#34;&gt;SSD&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;etwas teurer als Festplatten (ab etwa 90 Euro pro TiB)&lt;/li&gt;
&lt;li&gt;aber Zugriffsgeschwindigkeit: 0.05 ms (bei 3 GHz: 150.000 Takte)&lt;/li&gt;
&lt;li&gt;anders als bei Festplatten schneller Wahlzugriff&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stufe 3: &lt;a href=&#34;https://de.wikipedia.org/wiki/Random-Access_Memory&#34;&gt;Arbeitsspeicher (RAM)&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ab hier flüchtig (Vorteil: öfter wiederbeschreibbar ohne Qualitätsverlust)&lt;/li&gt;
&lt;li&gt;deutlich teurer (ab etwa 4 Euro pro &lt;strong&gt;GiB&lt;/strong&gt;, entspr. ~4000 Euro pro TiB)&lt;/li&gt;
&lt;li&gt;gerade deswegen meist kleiner als die nichtflüchtigen Speicher
&lt;ul&gt;
&lt;li&gt;übliche Größen: von 2-4 GiB bei Smartphones oder kleinen Notebooks bis mehrere TiB bei Servern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zugriffsgeschwindigkeit: 15 ns Latenz plus Übertragungszeit, insgesamt z.B. 65 ns (bei 3 GHz: 200 Takte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stufe 4: &lt;a href=&#34;https://en.wikipedia.org/wiki/CPU_cache&#34;&gt;Cache (Zwischenspeicher) des Prozessors&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ab hier fest in den Prozessor eingebaut&lt;/li&gt;
&lt;li&gt;Abbilder von einzelnen Zeilen (je 64 Byte) aus dem Arbeitsspeicher&lt;/li&gt;
&lt;li&gt;Größe: 4-16 MiB&lt;/li&gt;
&lt;li&gt;Zugriffsgeschwindigkeit: 1-5 ns (bei 3 GHz: 3-15 Takte)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stufe 5: &lt;a href=&#34;https://en.wikipedia.org/wiki/Register_file&#34;&gt;Registerbank des Prozessors&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Größe: 64 bis einige 100 Byte&lt;/li&gt;
&lt;li&gt;Zugriffsgeschwindigkeit: meist 1 Takt&lt;/li&gt;
&lt;li&gt;nur dieser Speicher kann vom CPU direkt für Berechnungen verwendet werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;andere mögliche Hierarchiestufen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stufe 0: Speicher auf anderen Computern im Netzwerk&lt;/li&gt;
&lt;li&gt;Stufe 2,5: nichtflüchtiger RAM (noch nicht weitverbreitet)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Speicher aus Sicht des Programmierers&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Abstraktion: lineare Kette von bytegroßen Speicherzellen, die fortlaufend nummeriert sind (&lt;strong&gt;Speicheradressen&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Probleme mit dieser Abstraktion:
&lt;ul&gt;
&lt;li&gt;kleinste sinnvolle Schreibmengen (4/8 Bytes bei Registern, 64 Bytes bei RAM, 4 KiB bei Festplatte/SSD)&lt;/li&gt;
&lt;li&gt;Caching-Verhalten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Einfluss auf effizientes Rechnen: viel wichtiger als schnelles Rechnen ist lokales Rechnen&lt;/li&gt;
&lt;li&gt;Beispiel: Repräsentation von 2D-Feldern (z.B. Grafiken) und effizientes Bearbeiten derselben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Quelle: &lt;a href=&#34;https://akkadia.org/drepper/cpumemory.pdf&#34;&gt;&amp;quot;What every programmer should know about memory&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:00:38" title="Prolog und Ausblick"  />
          <chapter start="00:02:24" title="Harvard-Architektur vs. Von-Neumann-Architektur"  />
          <chapter start="00:05:58" title="Abwägung technischer Eigenschaften"  />
          <chapter start="00:07:35" title="Grundsätzliche Arten von Speichern"  />
          <chapter start="00:12:08" title="Festplatte (HDD)"  />
          <chapter start="00:22:45" title="SSD"  />
          <chapter start="00:29:11" title="Arbeitsspeicher(RAM)"  />
          <chapter start="00:42:15" title="Prozessorcache"  />
          <chapter start="00:53:01" title="Registerbank"  />
          <chapter start="00:57:05" title="Speicher aus Sicht des Programmierers"  />
      </chapters>
      <enclosure length="30081141" url="https://dl.xyrillian.de/noises/stp-007-speicherhierarchie.mp3" type="audio/mpeg"/>
      <enclosure length="40115908" url="https://dl.xyrillian.de/noises/stp-007-speicherhierarchie.ogg" type="audio/ogg"/>
      <enclosure length="22557543" url="https://dl.xyrillian.de/noises/stp-007-speicherhierarchie.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/007-speicherhierarchie/</guid>
    <pubDate>Thu, 02 Sep 2021 00:00:00 GMT</pubDate>
    <itunes:duration>62:01</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP006: Kommandozeilen und Unix-Philosophie</itunes:title>
    <itunes:episode>6</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP006: Kommandozeilen und Unix-Philosophie</title>
    <link>https://schluesseltechnologie-podcast.de/006-kommandozeilen-und-unix-philosophie</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Computer haben heute unglaublich leistungsfähige Grafik. Warum verwenden so viele Computer-Experten dann immer noch textbasierte Terminals?</itunes:summary>
    <description>Computer haben heute unglaublich leistungsfähige Grafik. Warum verwenden so viele Computer-Experten dann immer noch textbasierte Terminals?</description>
    <content:encoded>&lt;p&gt;Computer haben heute unglaublich leistungsfähige Grafik. Warum verwenden so viele Computer-Experten dann immer noch textbasierte Terminals?&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Begriffsklärung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Kommandozeile&lt;/strong&gt;: allgemein jede textbasierte Steueroberfläche&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Terminal&lt;/strong&gt; (&amp;quot;Endpunkt&amp;quot;): ursprünglich ein einfacher Computerarbeitsplatz, der an einen Großrechner angeschlossen ist und eine Kommandozeile zur Steuerung desselben bereitstellt; heutzutage synonym mit &lt;strong&gt;Terminal-Emulator&lt;/strong&gt; (ein Programm, das denselben Zweck erfüllt)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shell&lt;/strong&gt; (auch &amp;quot;Befehlszeile&amp;quot; genannt): ein Programm, das die Grundstruktur der Befehlsinteraktion im Terminal bereitstellt und das Ausführen und Kombinieren konkreter Befehle ermöglicht&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Befehl&lt;/strong&gt;: ein Programm, das in der Shell ausgeführt wird und eine konkrete Aktion bewirkt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum werden Terminals oft gegenüber grafischen Oberflächen (GUI) bevorzugt?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Weil es viel cooler ist.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;bessere Handhabbarkeit eines großen Funktionsumfangs, nach entsprechender Einarbeitung (vgl. GUI mit 1000 Knöpfen vs. Kommandozeile mit 1000 Befehlen)&lt;/li&gt;
&lt;li&gt;Programmierbarkeit: Textmakros sind einfacher und robuster als GUI-Makros&lt;/li&gt;
&lt;li&gt;Kombinierbarkeit: Textbausteine sind auf offensichtliche Art und Weise kombinierbar, grafische Bearbeitungsschritte nur begrenzt&lt;/li&gt;
&lt;li&gt;Fernwartung: Übertragung von Text braucht weniger Bandbreite als Übertragung einer GUI&lt;/li&gt;
&lt;li&gt;Zugriff bei Problemen oder bei Neuinstallation: wenn GUI nicht mehr oder noch nicht geht, geht oft noch das Terminal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nachteile von Terminals&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;schlechtere Auffindbarkeit von Funktionen (&amp;quot;Discoverability&amp;quot;)&lt;/li&gt;
&lt;li&gt;steile Lernkurve&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Befehlszeilen gibt es überall, aber besonders prägend ist die von Unix&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unix&lt;/strong&gt;: Familie von Betriebssystemen&lt;/li&gt;
&lt;li&gt;ursprünglich Anfang der 1970er bei &lt;a href=&#34;https://de.wikipedia.org/wiki/Bell_Laboratories&#34;&gt;Bell Laboratories&lt;/a&gt; entwickelt von
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Dennis_Ritchie&#34;&gt;Dennis Ritchie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Douglas_McIlroy&#34;&gt;Douglas McIlroy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Ken_Thompson&#34;&gt;Ken Thompson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Brian_Kernighan&#34;&gt;Brian W. Kernighan&lt;/a&gt; wurde im Gespräch auch erwähnt. Er schrieb viele Programme für Unix und half, awk zu entwickeln.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;wichtige aktuelle Vertreter: Linux (und damit Android), macOS, BSD-Familie&lt;/li&gt;
&lt;li&gt;Gründe für den fortwährenden Einfluss des originalen Unix:
&lt;ul&gt;
&lt;li&gt;Quellcode war für universitäre Nutzung frei zugänglich&lt;/li&gt;
&lt;li&gt;vergleichsweise einfacher und modularer Aufbau&lt;/li&gt;
&lt;li&gt;dadurch einfach auf neue Systeme übertragbar&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Unix-Philosophie&#34;&gt;Unix-Philosophie&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Formulierung von Douglas McIlroy: &amp;quot;Mache nur eine Sache und mache sie gut.&amp;quot;&lt;/li&gt;
&lt;li&gt;Formulierung von Richard P. Gabriel: &amp;quot;Schlechter ist besser.&amp;quot; (Einfachheit ist wichtiger als alle anderen Eigenschaften eines Programmes wie Fehlerfreiheit, Konsistenz oder Vollständigkeit, da die Weiterentwicklung vereinfacht wird.)&lt;/li&gt;
&lt;li&gt;weitere Formulierungen siehe verlinkter Wikipedia-Artikel&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unix-Philosophie im Kontext des Terminals&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;meist nicht ein Befehl, der die ganze Aufgabe erledigt; sondern viele kleine Befehle, die kombiniert werden können&lt;/li&gt;
&lt;li&gt;gemeinsames Datenmodell: Ströme von Textdaten, die außerdem zumeist zeilenweise verarbeitet werden&lt;/li&gt;
&lt;li&gt;Kombinieren der einzelnen Befehle erfolgt interaktiv (direkt in der Shell) und dadurch iterativ (schrittweise durch wiederholtes Probieren und Anpassen der Befehlszeile)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel: Wir wollen aus einem gegebenen Text die häufigsten Wörter bestimmen.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eingabedatei: &lt;a href=&#34;https://github.com/bundestag/gesetze/raw/7c8a6a955bdefcf32632ff85ca671225e94513f9/b/bgb/index.md&#34;&gt;BGB als Markdown-Datei&lt;/a&gt; aus der inoffiziellen Quelle &lt;a href=&#34;https://github.com/bundestag/gesetze&#34;&gt;https://github.com/bundestag/gesetze&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Schritt 1: Einlesen der Datei
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat index.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 2: jedes Wort auf eine eigene Zeile
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat index.md | tr &#39; &#39; &#39;\n&#39;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;passt nicht ganz, aber ist für unsere Zwecke gut genug (&amp;quot;Schlechter ist besser&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 3: Wörter sortieren, dann identische Wörter zusammengruppieren und zählen
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 4: Wörter nach ihrer Häufigkeit sortieren
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c | sort -k1 -n&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Schritt 5: nur die letzten 20 Zeilen, die die häufigsten Wörter enthalten
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c | sort -k1 -n | tail -n 20&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;siehe unten: Auszüge aus den Ausgaben jedes einzelnen Schrittes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Abendgedanken: Eine Lernkurve ist nicht unbedingt ein Nachteil. Es ist durchaus wertvoll, wenn ein Programm seinem Nutzer richtig kommuniziert, wie viel Einarbeitung und Wissen erforderlich ist. Siehe LaTeX vs. Word.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Im Gespräch erwähnt wurden auch:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Noam_Chomsky&#34;&gt;Noam Chomsky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Alan_Turing&#34;&gt;Alan Turing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Steve_Jobs&#34;&gt;Steve Jobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Errata: Der Begriff &amp;quot;Mem&amp;quot; wurde nicht von &lt;a href=&#34;https://de.wikipedia.org/wiki/Douglas_R._Hofstadter&#34;&gt;Douglas Hofstadter&lt;/a&gt; eingeführt, sondern von &lt;a href=&#34;https://de.wikipedia.org/wiki/Richard_Dawkins&#34;&gt;Richard Dawkins&lt;/a&gt; (in seinem Buch &lt;a href=&#34;https://de.wikipedia.org/wiki/Das_egoistische_Gen&#34;&gt;&amp;quot;Das egoistische Gen&amp;quot;&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Auszüge aus den einzelnen Schritten des Beispiels&lt;/h2&gt;
&lt;p&gt;Jeweils mit &lt;code&gt;| head&lt;/code&gt;, um nur die ersten 10 Zeilen zu zeigen.&lt;/p&gt;
&lt;h3&gt;Schritt 1&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ cat index.md | head
---
Title: Bürgerliches Gesetzbuch
jurabk: BGB
layout: default
origslug: bgb
slug: bgb

---

# Bürgerliches Gesetzbuch (BGB)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Schritt 2&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;$ cat index.md | tr &#39; &#39; &#39;\n&#39; | head
---
Title:
Bürgerliches
Gesetzbuch
jurabk:
BGB
layout:
default
origslug:
bgb
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Schritt 3&lt;/h3&gt;
&lt;p&gt;Hier sieht man keine Wörter im engeren Sinne, sondern Folgen von Sonderzeichen, deren Zeichen aus technischen Gründen vor den eigentlichen Buchstaben einsortiert werden. In der ganz ersten Zeile taucht die Anzahl von Zeilen auf, die nach Schritt 2 komplett leer waren (zum Beispiel Leerzeilen, die im Ursprungsdokument Absätze voneinander trennen).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c | head
  18490
      1 #
      5 ##
     35 ###
    376 ####
   1216 #####
   1015 ######
     24 (§
      6 (§§
      1 *
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Schritt 4&lt;/h3&gt;
&lt;p&gt;Aufgrund der Sortierreihenfolge sehen wir hier besonders seltene Ergebnisse mit je einem Treffer.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c | sort -k1 -n | head
      1 #
      1 *
      1 ,
      1 0,75
      1 1).
      1 1\.
      1 1005
      1 1006
      1 1007
      1 1008
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Schritt 5&lt;/h3&gt;
&lt;p&gt;Das Endergebnis.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat index.md | tr &#39; &#39; &#39;\n&#39; | sort | uniq -c | sort -k1 -n | tail -n 20
   1374 auf
   1383 nach
   1391 für
   1448 ist
   1523 von
   1568 so
   1574 das
   1630 wenn
   1692 in
   1850 zu
   1953 nicht
   2127 und
   2628 den
   2737 dem
   2909 oder
   3584 §
   4718 des
   5980 die
   8602 der
  18490
&lt;/code&gt;&lt;/pre&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Begrüßung"  />
          <chapter start="00:02:34" title="Begriffserklärung Kommandozeile und Terminal"  />
          <chapter start="00:05:32" title="Begriffserklärung Terminal-Emulator"  />
          <chapter start="00:07:01" title="Begriffserklärung Shell"  />
          <chapter start="00:12:32" title="Warum überhaupt Terminals benutzen?"  />
          <chapter start="00:24:21" title="Nachteile von Terminals"  />
          <chapter start="00:32:24" title="Unix und die Unixfamilie"  />
          <chapter start="00:43:45" title="Die Unix-Philosophie"  />
          <chapter start="00:50:59" title="Unix-Philosophie im Kontext des Terminals"  />
          <chapter start="00:53:06" title="Beispiel: Gesetzestextmanipulation"  />
          <chapter start="01:10:54" title="Abendgedanken über den Wert einer Lernkurve"  />
          <chapter start="01:26:42" title="Outro"  />
      </chapters>
      <enclosure length="42597030" url="https://dl.xyrillian.de/noises/stp-006-kommandozeilen-und-unix-philosophie.mp3" type="audio/mpeg"/>
      <enclosure length="55024669" url="https://dl.xyrillian.de/noises/stp-006-kommandozeilen-und-unix-philosophie.ogg" type="audio/ogg"/>
      <enclosure length="31286363" url="https://dl.xyrillian.de/noises/stp-006-kommandozeilen-und-unix-philosophie.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/006-kommandozeilen-und-unix-philosophie/</guid>
    <pubDate>Thu, 12 Aug 2021 09:30:00 GMT</pubDate>
    <itunes:duration>88:05</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP005: Netzwerk-Schichtenmodell</itunes:title>
    <itunes:episode>5</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP005: Netzwerk-Schichtenmodell</title>
    <link>https://schluesseltechnologie-podcast.de/005-netzwerk-schichtenmodell</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wie in Folge 0 bereits erwähnt, tun wir viele Dinge mit Computern. Genauer tun wir sie in oder mit dem Internet.
Damit das funktionert ist es nötig vielerlei Protokolle übereinander zu stapeln. Wir präsentieren -- den Network Stack.</itunes:summary>
    <description>Wie in Folge 0 bereits erwähnt, tun wir viele Dinge mit Computern. Genauer tun wir sie in oder mit dem Internet.
Damit das funktionert ist es nötig vielerlei Protokolle übereinander zu stapeln. Wir präsentieren -- den Network Stack.</description>
    <content:encoded>&lt;p&gt;Wie in Folge 0 bereits erwähnt, tun wir viele Dinge mit Computern. Genauer tun wir sie in oder mit dem Internet.
Damit das funktionert ist es nötig vielerlei Protokolle übereinander zu stapeln. Wir präsentieren -- den Network Stack.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vorbemerkung: Daten im Computer bzw. im Computernetzwerk sind immer nur Zahlen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wenn wir Texte haben, haben wir tatsächlich Zahlenfolgen, von denen jede Zahl für einen Buchstaben steht.&lt;/li&gt;
&lt;li&gt;Wenn wir Bilder haben, haben wir tatsächlich Zahlenfolgen, von denen jede Zahl für den Farbwert eines Bildpunktes steht.&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rückerinnerung zu STP002: Protokolle&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wikipedia: &amp;quot;Ein Kommunikationsprotokoll ist eine Vereinbarung, nach der die Datenübertragung zwischen zwei oder mehreren Parteien abläuft. In seiner einfachsten Form kann ein Protokoll definiert werden als eine Menge von Regeln, die Syntax, Semantik und Synchronisation der Kommunikation bestimmen.&amp;quot;&lt;/li&gt;
&lt;li&gt;Beispiel aus dem normalen Leben: Interaktion zwischen Kunde und Verkäufer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Computer-Netzwerke brauchen einen ganzen Stapel von Protokollen, die aufeinander aufbauen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Problemlösung auf verschiedenen Ebenen: physikalische Signalübertragung, Suche von Verbindungspfaden, Fehlerkorrektur, finale Anwendung&lt;/li&gt;
&lt;li&gt;Nachrichten einer höheren Schicht werden in Nachrichten der nächsttieferen Schicht eingewickelt
&lt;ul&gt;
&lt;li&gt;metaphorisches Beispiel: verpacktes Geschenk in Postpaket in Postwertsack in Cargo-Flugzeug&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Austauschbarkeit einzelner Teile des Stapels: z.B. höhere Protokollebenen hängen (fast) nicht davon ab, ob die Übertragung mittels Ethernet oder DSL oder WLAN oder LTE etc. läuft
&lt;ul&gt;
&lt;li&gt;innerhalb der Metapher: Paket kann sowohl über Luftpost als auch per Schiff zugestellt werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Lehrmodell: &lt;a href=&#34;https://de.wikipedia.org/wiki/OSI-Modell&#34;&gt;OSI-Modell&lt;/a&gt; (Open Systems Interconnection) mit 7 Schichten; &lt;a href=&#34;https://computer.rip/2021-03-27-the-actual-osi-model.html&#34;&gt;entspricht aber nicht ganz der Realität&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schicht 1: Bitübertragungsschicht (&amp;quot;Physical Layer&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bei kabelgebundenen Wegen Spezifikation der Kabel (Aderanzahl, Materialien, Schirmung, etc.) und Stecker&lt;/li&gt;
&lt;li&gt;bei kabellosen Wegen Spezifikation des Frequenzspektrums etc.&lt;/li&gt;
&lt;li&gt;auf dieser Ebene im Allgemeinen nur Folgen von Bits (Nullen und Einsen)&lt;/li&gt;
&lt;li&gt;Problem: echte Welt ist fehlerbehaftet (Störsignale)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schicht 2: Sicherungsschicht (&amp;quot;Data Layer&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Realisierung einer fehlerfreien Übertragung zwischen direkt miteinander verbundenen Geräten&lt;/li&gt;
&lt;li&gt;Bitfolgen werden zu &lt;em&gt;Frames&lt;/em&gt; zusammengefasst und mit Prüfsummen versehen
&lt;ul&gt;
&lt;li&gt;zu Prüfsummen siehe STP004&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MTU: &lt;em&gt;Maximum Transfer Unit&lt;/em&gt; (maximale Nutzlast in einem Frame)&lt;/li&gt;
&lt;li&gt;manchmal enthalten: Protokolle zum Neustarten fehlgeschlagener Übertragungen (z.B. WLAN), ansonsten nur Verwerfen kaputter Frames (z.B. Ethernet)&lt;/li&gt;
&lt;li&gt;hier meist hohe Komplexität aufgrund strenger Anforderungen an Verarbeitungsgeschwindigkeit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schicht 3: Vermittlungsschicht (&amp;quot;Network Layer&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Schicht 1 und 2 war nur für Geräte, die direkt miteinander verbunden sind (bzw. maximal durch Switches und Repeater verbunden)&lt;/li&gt;
&lt;li&gt;Schicht 3 verschaltet mehrere solche lokale Netzwerke miteinander&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Router&lt;/em&gt;: Computer, der mit mehreren Netzwerken verbunden ist und dazwischen vermittelt&lt;/li&gt;
&lt;li&gt;Internet ist paketbasiert (wie die Post), nicht verbindungsbasiert (wie das Telefonnetz)&lt;/li&gt;
&lt;li&gt;auf Schicht 3 große Einigkeit in den Protokollen, um Interoperabilität zu ermöglichen&lt;/li&gt;
&lt;li&gt;IP (&lt;em&gt;Internet Protocol&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;Zuweisung global gültiger Adressen (&amp;quot;IP-Adressen&amp;quot;), z.B. &lt;code&gt;91.198.174.192&lt;/code&gt; für IP-Version 4 oder &lt;code&gt;2620:0:862:ed1a::1&lt;/code&gt; für IP-Version 6&lt;/li&gt;
&lt;li&gt;IP-Pakete können über Netzwerkgrenzen hinweg an den Adressaten zugestellt werden; enthalten Rückadresse für Antwortpakete&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;IP-Adressen nicht immer eindeutig auf einen Computer zugewiesen
&lt;ul&gt;
&lt;li&gt;eine global erreichbare Adresse für mehrere Computer, z.B. Anycast (vgl. Großkundenadressen bei der Post)&lt;/li&gt;
&lt;li&gt;private Adressen für die Verwendung in lokalen Netzwerken (analog zu internen Adressen in der Hauspost einer einzelnen Firma)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ICMP (&lt;em&gt;Internet Control Message Protocol&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;z.B. Ping, Pfad-MTU-Aushandlung, Anzeige von nicht verfügbaren Empfängern&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NAT (&lt;em&gt;Network Address Translation&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;Anwendungsfeld: ein ganzes lokales Netzwerk hat nur eine öffentliche IP-Adresse&lt;/li&gt;
&lt;li&gt;Router übersetzt IP-Adressen beim Übergang aus dem lokalen Netzwerk oder ins lokale Netzwerk&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;weitere Protokolle insb. für die dynamische Verschaltung von Netzwerken, z.B. BGP (&lt;em&gt;Border Gateway Protocol&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schicht 4: Transportschicht (&amp;quot;Transport Layer&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Erweiterung von Schicht 3 um Sitzungsverwaltung und Fehlerkorrektur (analog zum Verhältnis von Schicht 2 zu Schicht 1)&lt;/li&gt;
&lt;li&gt;Problem: IP-Adressen identifizieren nur Computer, nicht die Programme auf dem Computer&lt;/li&gt;
&lt;li&gt;getrennte Sitzungen mittels &lt;em&gt;Ports&lt;/em&gt;
&lt;ul&gt;
&lt;li&gt;Verbindung eindeutig identifizierbar durch die Verbindung aus Quelladresse, Quellport, Zieladresse und Zielport&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TCP (&lt;em&gt;Transmission Control Protocol&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;garantierte fehlerfreie Zustellung der Datenpakete jeder Verbindung in der jeweils richtigen Reihenfolge&lt;/li&gt;
&lt;li&gt;z.B. für große Downloads und Uploads (HTTP)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Fehlerkorrektur in TCP
&lt;ul&gt;
&lt;li&gt;verpflichtendes Bestätigen erfolgreicher Übertragungen&lt;/li&gt;
&lt;li&gt;Sender hält Daten in einem Sendefenster vor, bis der Empfang von der Gegenseite bestätigt wurde; analog Empfangsfenster beim Empfänger&lt;/li&gt;
&lt;li&gt;Überfüllungskontrolle: Sendefenstergröße wird angepasst, wenn die Fehlerrate zunimmt (weil jemand auf dem Weg Pakete verwerfen muss)&lt;/li&gt;
&lt;li&gt;für den Benutzer sichtbar als &amp;quot;TCP Slow Start&amp;quot; (Downloads fangen meist erst mit geringer Geschwindigkeit an und werden dann schneller, sobald die optimale Sendefenstergröße gefunden wurde)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;UDP (&lt;em&gt;User Datagram Protocol&lt;/em&gt;)
&lt;ul&gt;
&lt;li&gt;keine Fehlerkorrektur; im Prinzip nur IP &#43; Ports&lt;/li&gt;
&lt;li&gt;z.B. für Echtzeit-Anwendungen (Voice over IP), wo geringe Verzögerung wichtiger ist und der Verlust einzelner Pakete hingenommen werden kann&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schicht 5-7: Anwendungsschicht (&amp;quot;Application Layer&amp;quot;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;feinere Aufteilung nicht wirklich hilfreich, da die verschiedenen Aspekte zunehmend schwer voneinander zu trennen sind&lt;/li&gt;
&lt;li&gt;Protokolle auf dieser Ebene: z.B. HTTP/HTTPS (Webseiten), SMTP/IMAP (E-Mail), DNS (Namensauflösung)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grenzen des Schichtenmodells&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tiefere Schichten können durch höhere Schichten abgebildet werden; Beispiel: VPN-Protokolle (&lt;em&gt;Virtual Private Network&lt;/em&gt;; Protokolle der Schicht 7, das einen Datenkanal der Schicht 3 darstellt)&lt;/li&gt;
&lt;li&gt;Schicht 8? Schicht 9?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Zum Weiterhören&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;der großartige Podcast &lt;a href=&#34;https://requestforcomments.de/&#34;&gt;Request for Comments&lt;/a&gt; (dessen Produzentin natürlich Baecker und nicht Bauer heißt; ttimeless nimmt alle  Schuld auf sich)&lt;/li&gt;
&lt;li&gt;hier der erwähnte &lt;a href=&#34;https://requestforcomments.de/archives/254&#34;&gt;RFC-Podcast über TCP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;außerdem die angesprochene Episode vom &lt;a href=&#34;https://cre.fm/&#34;&gt;Chaosradio Express&lt;/a&gt;: &lt;a href=&#34;https://cre.fm/cre197-ipv6&#34;&gt;CRE197 IPv6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lesestoff ;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.revk.uk/2017/12/its-official-adsl-works-over-wet-string.html&#34;&gt;ADSL over wet string&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://tools.ietf.org/html/rfc1925&#34;&gt;Twelve Networking Truths&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Richtigstellung vorab"  />
          <chapter start="00:00:18" title="Intro und Hallo"  />
          <chapter start="00:02:45" title="Vorbemerkung zur Natur der Daten"  />
          <chapter start="00:04:58" title="Recap: Protokolle"  />
          <chapter start="00:06:22" title="Warum ein ganzer Stapel Protokolle? Ein Erklärungsversuch"  />
          <chapter start="00:14:36" title="Schicht 1: Bitübertragungsschicht (Physical Layer)"  />
          <chapter start="00:16:49" title="Fantastische Technologie und nasser Faden"  />
          <chapter start="00:19:32" title="Einschub: Protokolle und Sprache"  />
          <chapter start="00:22:58" title="Warum Layer 2?"  />
          <chapter start="00:27:33" title="Schicht 2: Sicherungsschicht (Data Layer)"  />
          <chapter start="00:38:03" title="Schicht 3: Vermittlungsschicht (Network Layer)"  />
          <chapter start="00:41:00" title="IP: Das Internetprotokoll"  />
          <chapter start="00:53:11" title="ICMP (Internet Control Message Protocol)"  />
          <chapter start="00:58:26" title="NAT (Network Address Translation)"  />
          <chapter start="01:00:58" title="Schicht 4: Transportschicht (Transport Layer)"  />
          <chapter start="01:02:55" title="Ports und Portnummern"  />
          <chapter start="01:07:14" title="TCP (Transmission Control Protocol)"  />
          <chapter start="01:12:15" title="UDP (User Datagram Protocol)"  />
          <chapter start="01:16:15" title="Schicht 5-7: Anwendungsschicht (Application Layer)"  />
          <chapter start="01:18:10" title="Grenzen des Schichtenmodells"  />
          <chapter start="01:20:12" title="Layer 8 und 9"  />
      </chapters>
      <enclosure length="39569965" url="https://dl.xyrillian.de/noises/stp-005-netzwerk-schichtenmodell.mp3" type="audio/mpeg"/>
      <enclosure length="49467388" url="https://dl.xyrillian.de/noises/stp-005-netzwerk-schichtenmodell.ogg" type="audio/ogg"/>
      <enclosure length="28575009" url="https://dl.xyrillian.de/noises/stp-005-netzwerk-schichtenmodell.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/005-netzwerk-schichtenmodell/</guid>
    <pubDate>Thu, 22 Jul 2021 16:00:00 GMT</pubDate>
    <itunes:duration>81:47</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP004: Passwörter</itunes:title>
    <itunes:episode>4</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP004: Passwörter</title>
    <link>https://schluesseltechnologie-podcast.de/004-passwoerter</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Es geht um die Gretchenfrage der IT-Sicherheit. Wie müssen Passwörter aussehen?
Wie sollen sie gespeichert werden? Wieviel Salz muss an ein Passwort?
Kann man sie ersetzen? Und vor allem, wie würde Xyrill das alles machen, würde ihm doch endlich die Weltherrschaft übertragen?</itunes:summary>
    <description>Es geht um die Gretchenfrage der IT-Sicherheit. Wie müssen Passwörter aussehen?
Wie sollen sie gespeichert werden? Wieviel Salz muss an ein Passwort?
Kann man sie ersetzen? Und vor allem, wie würde Xyrill das alles machen, würde ihm doch endlich die Weltherrschaft übertragen?</description>
    <content:encoded>&lt;p&gt;Es geht um die Gretchenfrage der IT-Sicherheit. Wie müssen Passwörter aussehen?
Wie sollen sie gespeichert werden? Wieviel Salz muss an ein Passwort?
Kann man sie ersetzen? Und vor allem, wie würde Xyrill das alles machen, würde ihm doch endlich die Weltherrschaft übertragen?&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Through twenty years of effort, we&#39;ve successfully trained everyone to use passwords that are hard for humans to remember, but easy for computers to guess.&lt;/p&gt;
&lt;p&gt;Wir haben zwanzig [mittlerweile dreißig – d. Red.] Jahre lang allen eingeredet, Passwörter zu verwenden, die schwer zu merken sind, aber leicht von Computern geraten werden können.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quelle: Zitat aus &lt;a href=&#34;https://xkcd.com/936/&#34;&gt;XKCD Comic #936&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Motivation: Authentifizierung (Identitätsbeweis)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mögliche Auth.faktoren:
&lt;ul&gt;
&lt;li&gt;etwas, das ich weiß (z.B. Passwort, PIN, &lt;del&gt;Sicherheitsfrage&lt;/del&gt;)&lt;/li&gt;
&lt;li&gt;etwas, das ich habe (z.B. Chipkarte, Hardware-Token, TOTP/HOTP)&lt;/li&gt;
&lt;li&gt;etwas, das ich bin (z.B. Fingerabdruck, Iris-Abbild)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ein-Faktor-Auth. vs. Zwei-Faktor-Auth.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Theorie: Hash-Funktionen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Hashfunktion&#34;&gt;Hash-Funktion&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;Wikipedia sagt als Begriff &amp;quot;Streuwertfunktion&amp;quot;, das erklärt es ganz gut&lt;/li&gt;
&lt;li&gt;Anwendungsfelder: Hashtabellen, Prüfsummen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Kryptographische_Hashfunktion&#34;&gt;kryptografische Hash-Funktion&lt;/a&gt;:
&lt;ul&gt;
&lt;li&gt;kollisionsresistent und dadurch zur &amp;quot;Ein-Weg-Verschlüsselung&amp;quot; geeignet&lt;/li&gt;
&lt;li&gt;typische Hash-Länge: 256 Bit = 32 Byte = 64 Hexadezimalziffern&lt;/li&gt;
&lt;li&gt;Größenvergleich: 2^256 Nanosekunden = 3 Mio. Trio. Trio. Trio. Jahre&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ziel: Passwort nicht direkt auf dem Webserver speichern
&lt;ul&gt;
&lt;li&gt;Server speichert nur Hash vom Passwort&lt;/li&gt;
&lt;li&gt;zur Überprüfung präsentiertes Passwort hashen und mit gespeichertem Hash vergleichen&lt;/li&gt;
&lt;li&gt;Salting: zu jedem Hash noch ein Extra-Zufallstext, damit dasselbe Passwort nicht immer denselben Hash ergibt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was können Nutzer machen, um sich zu schützen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;schwer ratbare Passwörter verwenden
&lt;ul&gt;
&lt;li&gt;keine persönlichen Informationen hineinkodieren (Namen von Angehörigen oder nahestehenden Personen, Geburtsdaten, etc.)&lt;/li&gt;
&lt;li&gt;NICHT &amp;quot;passwort&amp;quot; oder &amp;quot;123456&amp;quot; oder &amp;quot;123qwe&amp;quot;&lt;/li&gt;
&lt;li&gt;z.B. XKCD-Schema: Wörterbuch aufschlagen, vier zufällige Wörter wählen&lt;/li&gt;
&lt;li&gt;NICHT bekannte Phrasen (z.B. Bibelverse)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Passwörter nicht wiederverwenden
&lt;ul&gt;
&lt;li&gt;Wenn überall das gleiche Passwort verwendet wird, sind alle Konten gleichzeitig offen.&lt;/li&gt;
&lt;li&gt;Mit dem Zugang zum E-Mail Konto kann die &amp;quot;Passwort zurücksetzen&amp;quot;-Funktion ausgenutzt werden.&lt;/li&gt;
&lt;li&gt;Wenn du nur ein starkes Passwort benutzt, dann das für das E-Mail-Konto.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Passwort-Manager verwenden
&lt;ul&gt;
&lt;li&gt;auf dem lokalen PC: &lt;a href=&#34;https://keepassxc.org/&#34;&gt;KeePassXC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;oder cloud-basiert: &lt;a href=&#34;https://bitwarden.com/&#34;&gt;Bitwarden&lt;/a&gt; (Server kann man auch selbst betreiben)&lt;/li&gt;
&lt;li&gt;oder für Nerds: &lt;a href=&#34;https://www.passwordstore.org/&#34;&gt;pass&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Passwörter nicht mit anderen teilen, auch nicht &amp;quot;nur mal schnell&amp;quot;
&lt;ul&gt;
&lt;li&gt;siehe IT-Support-Scam&lt;/li&gt;
&lt;li&gt;bei Mehrbenutzersystemen auch mehrere Benutzerkonten verwenden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Passwort nur auf vertrauenswürdigen Seiten eingeben
&lt;ul&gt;
&lt;li&gt;nicht Links in irgendwelchen Mails folgen (siehe Phishing-Scam), sondern direkt zur bekannten Webseite navigieren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://haveibeenpwned.com/&#34;&gt;Passwort für Webseiten ändern, bei denen die Datenbanken gestohlen wurden&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;in vielen Passwort-Managern als automatische Prüfung integriert&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rant: Sicherheitsmaßnahmen, die nicht wirklich bessere Sicherheit bringen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sicherheitsfragen&lt;/li&gt;
&lt;li&gt;Passwortbeschränkungen: maximal N Zeichen, mindestens ein Sonderzeichen etc.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://arstechnica.com/information-technology/2019/06/microsoft-says-mandatory-password-changing-is-ancient-and-obsolete/&#34;&gt;Zwangswechsel nach N Monaten&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Was können Webseitenbetreiber machen, um Auth. sicher zu machen?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Passwörter nur mit starken Hashes ablegen (Argon2, SCrypt, BCrypt, notfalls auch PBKDF2)&lt;/li&gt;
&lt;li&gt;2FA unterstützen&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://haveibeenpwned.com/API/v3&#34;&gt;HIBP-API&lt;/a&gt; verwenden, um Passwort-Wiederverwendung zu erschweren&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gibt es eine Alternative zu Passwörtern?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;anderer Faktor (z.B. Hardware-Token oder Biometrie): nicht unbedingt besser, nur anders (Abwägungsfrage)&lt;/li&gt;
&lt;li&gt;Zwei-Faktor-Auth.&lt;/li&gt;
&lt;li&gt;Anmeldungslink per E-Mail&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Feedback"  />
          <chapter start="00:05:21" title="Warum das Ganze"  />
          <chapter start="00:06:02" title="Dinge die ich weiß"  />
          <chapter start="00:07:04" title="Dinge die ich habe"  />
          <chapter start="00:08:42" title="Dinge die ich bin"  />
          <chapter start="00:09:06" title="Ein Faktor vs. zwei Faktoren"  />
          <chapter start="00:18:23" title="Hash-Funktionen"  />
          <chapter start="00:26:08" title="Kryptografische Hash-Funktionen"  />
          <chapter start="00:37:47" title="Salting"  />
          <chapter start="00:44:14" title="Wie schütze ich mich als Nutzer"  />
          <chapter start="01:18:54" title="Rant: Sicherheitsmaßnahmen, die nicht wirklich bessere Sicherheit bringen"  />
          <chapter start="01:23:23" title="Was tun Webseitenbetreiber um sicher zu authentifizieren"  />
          <chapter start="01:24:43" title="Alternativen zu Passwörtern"  />
      </chapters>
      <enclosure length="43876549" url="https://dl.xyrillian.de/noises/stp-004-passwoerter.mp3" type="audio/mpeg"/>
      <enclosure length="55220724" url="https://dl.xyrillian.de/noises/stp-004-passwoerter.ogg" type="audio/ogg"/>
      <enclosure length="31765655" url="https://dl.xyrillian.de/noises/stp-004-passwoerter.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/004-passwoerter/</guid>
    <pubDate>Thu, 01 Jul 2021 15:45:00 GMT</pubDate>
    <itunes:duration>90:45</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP003: Logikgatter</itunes:title>
    <itunes:episode>3</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP003: Logikgatter</title>
    <link>https://schluesseltechnologie-podcast.de/003-logikgatter</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Heute erklärt Xyrill Logikgatter. Und das, obwohl er selbst nicht so genau weiß, was da drin ist.
Das ist aber auch nicht zwingend nötig – sagt er –, denn es kommt ja darauf an, was sie tun.
Obwohl die meisten Logikgatter scheinbar sehr langweilig sind, schaffen wir es nur, damit zu addieren.
Allerdings ist das für ttimeless auch genug für den Anfang.</itunes:summary>
    <description>Heute erklärt Xyrill Logikgatter. Und das, obwohl er selbst nicht so genau weiß, was da drin ist.
Das ist aber auch nicht zwingend nötig – sagt er –, denn es kommt ja darauf an, was sie tun.
Obwohl die meisten Logikgatter scheinbar sehr langweilig sind, schaffen wir es nur, damit zu addieren.
Allerdings ist das für ttimeless auch genug für den Anfang.</description>
    <content:encoded>&lt;p&gt;Heute erklärt Xyrill Logikgatter. Und das, obwohl er selbst nicht so genau weiß, was da drin ist.
Das ist aber auch nicht zwingend nötig – sagt er –, denn es kommt ja darauf an, was sie tun.
Obwohl die meisten Logikgatter scheinbar sehr langweilig sind, schaffen wir es nur, damit zu addieren.
Allerdings ist das für ttimeless auch genug für den Anfang.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rückblick STP001: Binärzahlen sind dargestellt als Folge von Bits&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. 16-Bit-Zahl entspricht 16 Stromleitungen, an denen die Spannung an oder aus ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ziel: Berechnungen auf solchen Zahlen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;z.B. Addition zweiter 16-Bit-Zahlen: 2x16 = 32 Bit gehen rein, 16 neue Bit kommen raus&lt;/li&gt;
&lt;li&gt;Wie kombiniert man Bits sinnfällig?&lt;/li&gt;
&lt;li&gt;Logikgatter: Bausteine für solche Schaltkreise
&lt;ul&gt;
&lt;li&gt;allgemein ein oder zwei Eingänge und ein Ausgang&lt;/li&gt;
&lt;li&gt;ansonsten Logikschaltung bzw. Logikbaustein, der aus mehreren Gattern zusammengesetzt ist&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Logikgatter mit einem Eingang und einem Ausgang&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gatter unterscheiden sich in der Ausgabe bei Eingabe 0 (2 Optionen) und in der Ausgabe bei Eingabe 1 (2 Optionen)&lt;/li&gt;
&lt;li&gt;insgesamt 2x2 = 4 mögliche Gatter
&lt;ul&gt;
&lt;li&gt;0 -&amp;gt; 0, 1 -&amp;gt; 0 – Ausgang ist konstant Null (langweilig)&lt;/li&gt;
&lt;li&gt;0 -&amp;gt; 0, 1 -&amp;gt; 1 – Ausgang ist gleich Eingang (langweilig)&lt;/li&gt;
&lt;li&gt;0 -&amp;gt; 1, 1 -&amp;gt; 0 – Ausgang ist Negation des Eingangs (NOT-Gatter)&lt;/li&gt;
&lt;li&gt;0 -&amp;gt; 1, 1 -&amp;gt; 1 – Ausgang ist konstant Eins (langweilig)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Logikgatter mit zwei Eingängen und einem Ausgang&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vier mögliche Eingaben (00, 01, 10, 11) und je zwei mögliche Ausgaben (0, 1) -&amp;gt; 2^4=16 mögliche Gatter&lt;/li&gt;
&lt;li&gt;darunter sechs langweilige Gatter
&lt;ul&gt;
&lt;li&gt;Ausgang ist konstant Null&lt;/li&gt;
&lt;li&gt;Ausgang ist konstant Eins&lt;/li&gt;
&lt;li&gt;Ausgang ist gleich Eingang 1&lt;/li&gt;
&lt;li&gt;Ausgang ist gleich Eingang 2&lt;/li&gt;
&lt;li&gt;Ausgang ist Negation von Eingang 1&lt;/li&gt;
&lt;li&gt;Ausgang ist Negation von Eingang 2&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;sechs nützliche Gatter &lt;a href=&#34;https://de.wikipedia.org/wiki/Logikgatter&#34;&gt;Logikgatter&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;AND: Sind beide Eingänge 1?&lt;/li&gt;
&lt;li&gt;OR: Ist wenigstens ein Eingang 1?&lt;/li&gt;
&lt;li&gt;XOR: Ist genau ein Eingang 1? bzw. Sind beide Eingänge unterschiedlich?&lt;/li&gt;
&lt;li&gt;NAND: Ist wenigstens ein Eingang 0?&lt;/li&gt;
&lt;li&gt;NOR: Sind beide Eingänge 0?&lt;/li&gt;
&lt;li&gt;NXOR, XNOR: Sind beide Eingänge gleich?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;vier verbleibende Gatter sind nicht so intuitiv, können aber bei Bedarf aus den obigen Gattern zusammengesetzt werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beispiel für eine Logikschaltung: Addiernetz&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Idee analog zum Addieren auf Papier wie in der Grundschule mit Übertrag
&lt;ul&gt;
&lt;li&gt;Beispiel hier: 35 &#43; 47 = 82&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Halbaddierer&#34;&gt;Halbaddierer&lt;/a&gt;: zwei Eingänge, zwei Ausgänge
&lt;ul&gt;
&lt;li&gt;Zwei Ein-Bit-Zahlen werden zu einer Zwei-Bit-Zahl addiert.&lt;/li&gt;
&lt;li&gt;Ausgang 1 = XOR (erste Stelle der addierten Zahl)&lt;/li&gt;
&lt;li&gt;Ausgang 2 = AND (zweite Stelle der addierten Zahl)&lt;/li&gt;
&lt;li&gt;z.B. bei dezimal: 5 &#43; 7 = 2 &#43; Übertrag 1&lt;/li&gt;
&lt;li&gt;in binär: Ausgang 1 = XOR, Ausgang 2 = AND&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Volladdierer&#34;&gt;Volladdierer&lt;/a&gt;: drei Eingänge, zwei Ausgänge
&lt;ul&gt;
&lt;li&gt;Wie der Halbaddierer, aber nimmt auch den Übertrag der vorherigen Stelle mit.&lt;/li&gt;
&lt;li&gt;z.B. bei dezimal: 3 &#43; 4 &#43; Übertrag 1 = 8 &#43; Übertrag 0&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Addierwerk&#34;&gt;Addiernetz&lt;/a&gt; für N-Bit-Zahlen: 2N Eingänge, N Ausgänge
&lt;ul&gt;
&lt;li&gt;ein Halbaddierer für die erste Stelle&lt;/li&gt;
&lt;li&gt;je ein Volladdierer für jede weitere Stelle&lt;/li&gt;
&lt;li&gt;Überlauf: Was ist, wenn der finale Übertrag nicht 0 ist?
&lt;ul&gt;
&lt;li&gt;Option 1: als Zustand im Prozessor speichern, der später abgefragt werden kann&lt;/li&gt;
&lt;li&gt;Option 2: als Fehler behandeln, Prozess oder Prozessor anhalten&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum sind Logikgatter interessant?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;starke Abstraktionsebene: fast das gesamte Verhalten des Computers als Rechenmaschine ist aus Logikgattern zusammengesetzt&lt;/li&gt;
&lt;li&gt;konkrete Hardware (z.B. konkrete Art von Transistoren) ist oberhalb der Ebene der Logikgatter fast unerheblich&lt;/li&gt;
&lt;li&gt;aber natürlich: keine Abstraktion ist perfekt...&lt;/li&gt;
&lt;li&gt;Beispiel: Schaltverzögerung -&amp;gt; Takt&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro und Hallo"  />
          <chapter start="00:02:15" title="Grundsätzlicher Aufbau und Zweck von Logikgattern"  />
          <chapter start="00:05:40" title="Gatter mit nur einem Eingang"  />
          <chapter start="00:07:35" title="Gatter mit zwei Eingängen"  />
          <chapter start="00:10:11" title="AND-Gatter"  />
          <chapter start="00:10:30" title="OR-Gatter"  />
          <chapter start="00:10:52" title="XOR-Gatter"  />
          <chapter start="00:12:33" title="NAND-Gatter"  />
          <chapter start="00:14:40" title="NOR-Gatter"  />
          <chapter start="00:15:28" title="NXOR/XNOR-Gatter"  />
          <chapter start="00:16:39" title="Rechenlogik"  />
          <chapter start="00:17:55" title="Halbaddierer"  />
          <chapter start="00:23:21" title="Volladdierer"  />
          <chapter start="00:24:47" title="Addiernetz"  />
          <chapter start="00:25:51" title="Bitüberlauf"  />
          <chapter start="00:29:39" title="Warum das ganze"  />
          <chapter start="00:35:22" title="Schaltzeiten und Prozessortakt"  />
      </chapters>
      <enclosure length="20441158" url="https://dl.xyrillian.de/noises/stp-003-logikgatter.mp3" type="audio/mpeg"/>
      <enclosure length="26067582" url="https://dl.xyrillian.de/noises/stp-003-logikgatter.ogg" type="audio/ogg"/>
      <enclosure length="14778359" url="https://dl.xyrillian.de/noises/stp-003-logikgatter.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/003-logikgatter/</guid>
    <pubDate>Thu, 10 Jun 2021 08:30:00 GMT</pubDate>
    <itunes:duration>41:55</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP002: Aufruf einer Webseite</itunes:title>
    <itunes:episode>2</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP002: Aufruf einer Webseite</title>
    <link>https://schluesseltechnologie-podcast.de/002-aufruf-einer-webseite</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Die meisten tun es. Viele täglich. Teils hundertfach oder öfter.
Aber was passiert eigentlich, wenn wir es tun?
Die Rede ist natürlich von Webseiten.
Wir sprechen darüber, wer alles am Aufrufen und Anzeigen von all den Informatinen beteiligt ist, die wir uns täglich beschaffen.
Und über &lt;strong&gt;Kekse&lt;/strong&gt;!!!</itunes:summary>
    <description>Die meisten tun es. Viele täglich. Teils hundertfach oder öfter.
Aber was passiert eigentlich, wenn wir es tun?
Die Rede ist natürlich von Webseiten.
Wir sprechen darüber, wer alles am Aufrufen und Anzeigen von all den Informatinen beteiligt ist, die wir uns täglich beschaffen.
Und über &lt;strong&gt;Kekse&lt;/strong&gt;!!!</description>
    <content:encoded>&lt;p&gt;Die meisten tun es. Viele täglich. Teils hundertfach oder öfter.
Aber was passiert eigentlich, wenn wir es tun?
Die Rede ist natürlich von Webseiten.
Wir sprechen darüber, wer alles am Aufrufen und Anzeigen von all den Informatinen beteiligt ist, die wir uns täglich beschaffen.
Und über &lt;strong&gt;Kekse&lt;/strong&gt;!!!&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Schritt 1: Webseitenadresse, z.B. &lt;a href=&#34;https://de.wikipedia.org/wiki/Computer&#34;&gt;https://de.wikipedia.org/wiki/Computer&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https&lt;/code&gt;: Protokoll (wie wir mit der anderen Seite reden)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;de.wikipedia.org&lt;/code&gt;: Domain-Name (wo die andere Seite zu finden ist)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/wiki/Computer&lt;/code&gt;: Pfad (welches Dokument wir von der anderen Seite haben wollen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 2: Namensauflösung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Datenverbindungen im Internet gehen nur mit einer IP-Adresse (sieht aus wie &lt;code&gt;192.168.12.169&lt;/code&gt; oder &lt;code&gt;fe80::42e2:30ff:fe12:17b&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Webseitenadressen enthalten Domain-Namen, weil:
&lt;ul&gt;
&lt;li&gt;menschenlesbar&lt;/li&gt;
&lt;li&gt;kann auf mehrere verschiedene Server verweisen (Lastverteilung, Redundanz, Geo-Routing)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Frage: Welche IP-Adresse gehört zu dem Domain-Namen? -&amp;gt; Namensauflösung mittels Domain Name System (DNS)&lt;/li&gt;
&lt;li&gt;Computer der Benutzerin kennt einen DNS-Server (meist vom Internetanbieter)&lt;/li&gt;
&lt;li&gt;DNS-Server kann zu jedem Domain-Namen die richtige IP-Adresse bestimmen&lt;/li&gt;
&lt;li&gt;Privatsphäre-Relevanz: dein DNS-Server kennt alle Domains, die du besuchst&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 3: Verbindung zum Webserver&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Broadcast vs. Unicast
&lt;ul&gt;
&lt;li&gt;Fernsehen/Radio/etc. ist Broadcast (eine sendet einmal, viele empfangen)&lt;/li&gt;
&lt;li&gt;Internet ist im Allgemeinen Unicast (eine sendet, eine empfängt) wie das Telefonnetz&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;grobe Analogie: IP-Adressen zu Telefonnummern (Ländervorwahl, Ortsvorwahl, Durchwahl, etc.)&lt;/li&gt;
&lt;li&gt;Datenleitung steht, jetzt können wir unser Protokoll (HTTPS) darüber sprechen
&lt;ul&gt;
&lt;li&gt;Wikipedia: &amp;quot;Ein Kommunikationsprotokoll ist eine Vereinbarung, nach der die Datenübertragung zwischen zwei oder mehreren Parteien abläuft. In seiner einfachsten Form kann ein Protokoll definiert werden als eine Menge von Regeln, die Syntax, Semantik und Synchronisation der Kommunikation bestimmen.&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HTTPS verwendet Verschlüsselung, da sonst jeder entlang des Weges mitlesen könnte
&lt;ul&gt;
&lt;li&gt;TLS: Aushandlung einer Transportverschlüsselung, dann Überprüfung der Identität des Servers&lt;/li&gt;
&lt;li&gt;Server muss dazu ein Zertifikat für seinen Domain-Namen haben&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Datenleitung mit Verschlüsselung steht, jetzt kann HTTP gesprochen werden (HTTPS = HTTP mit TLS)
&lt;ul&gt;
&lt;li&gt;HTTP: allgemein Protokoll zum Herunterladen und Hochladen von Dateien (Hochladen z.B. auch beim Abschicken von Webseiten-Formularen)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 4: Webseite&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Computer der Benutzerin fragt über die bestehende HTTPS-Verbindung nach dem Dokument unter dem Pfad in der Webseitenadresse&lt;/li&gt;
&lt;li&gt;Server liefert eine Datei, üblicherweise im HTML-Format&lt;/li&gt;
&lt;li&gt;Hausaufgabe: im Browser Webseite öffnen und im Rechtsklick-Menü &amp;quot;Element untersuchen&amp;quot; wählen&lt;/li&gt;
&lt;li&gt;HTML: Dokumentenformat
&lt;ul&gt;
&lt;li&gt;dieselbe Grundkategorie wie PDF oder DOC&lt;/li&gt;
&lt;li&gt;aber mehr für die Bildschirmanzeige als für den Druck optimiert&lt;/li&gt;
&lt;li&gt;seit 2000 zunehmend auch für dynamische Inhalte (&amp;quot;Webanwendungen&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 5: Ressourcen&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTML alleine enthält nur die Dokumentenstruktur und den Text&lt;/li&gt;
&lt;li&gt;weitere Teile der Webseite liegen in anderen Dateien, auf die das HTML verweist und die der Browser separat herunterlädt
&lt;ul&gt;
&lt;li&gt;CSS: Darstellungsanweisungen (z.B. &amp;quot;alle Absätze mit 1,5 Zeilen Zeilenhöhe&amp;quot;)&lt;/li&gt;
&lt;li&gt;Bilder, Audios, Videos&lt;/li&gt;
&lt;li&gt;Skripte für dynamische Inhalte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;siehe auch: Webseite wird schon angezeigt, aber Bilder erscheinen erst nach und nach&lt;/li&gt;
&lt;li&gt;Verweise auch auf Dokumente auf anderen Domains möglich
&lt;ul&gt;
&lt;li&gt;Privatsphäre-Relevanz: Tracking-Pixel und Tracking-Skripte&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritt 6: Cookies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP an sich ist zustandslos: Anfrage nach einem Dokument ist nicht abhängig davon, was ich vorher angefragt hatte&lt;/li&gt;
&lt;li&gt;Problem: Wie ordnet man die Anfrage nach einem Dokument zu einer Benutzerin zu? (z.B. um Anmeldestatus oder Warenkorb zu verfolgen)&lt;/li&gt;
&lt;li&gt;Cookie: kleine Datei, die der Server bei einem Dokument mitschickt und die vom Browser aufbewahrt wird&lt;/li&gt;
&lt;li&gt;beim nächsten Request werden alle Cookies von diesem Server wieder mitgeschickt&lt;/li&gt;
&lt;li&gt;Privatsphäre-Relevanz: Tracking durch Facebook-Cookie etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exkurs: &amp;quot;Was passiert, wenn ich einen Podcast abrufe?&amp;quot;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;prinzipiell genauso, aber statt HTML anderes Dokumentenformat&lt;/li&gt;
&lt;li&gt;RSS: &amp;quot;Really Simple Syndication&amp;quot; (&amp;quot;wirklich einfache Verbreitung&amp;quot;)&lt;/li&gt;
&lt;li&gt;RSS-Dokument ist ein Feed
&lt;ul&gt;
&lt;li&gt;Feed = Liste von Nachrichten&lt;/li&gt;
&lt;li&gt;vergleichbar mit dem Feed auf Twitter oder Facebook&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RSS ursprünglich für Blogs und Nachrichtenwebseiten entwickelt (Titel, Kurzbeschreibung, Link zur Webseite)&lt;/li&gt;
&lt;li&gt;für Podcasts statt Link zur Webseite Links zu den Audio-Dateien&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:01:57" title="Bestandteile einer Webseitenadresse"  />
          <chapter start="00:05:00" title="Namensauflösung per DNS"  />
          <chapter start="00:12:33" title="Verbindung zum Webserver"  />
          <chapter start="00:24:02" title="Webseite"  />
          <chapter start="00:29:01" title="Ressourcen"  />
          <chapter start="00:40:47" title="Cookies"  />
          <chapter start="00:48:59" title="Was passiert, wenn ich einen Podcast abrufe?"  />
      </chapters>
      <enclosure length="26983760" url="https://dl.xyrillian.de/noises/stp-002-aufruf-einer-webseite.mp3" type="audio/mpeg"/>
      <enclosure length="35520202" url="https://dl.xyrillian.de/noises/stp-002-aufruf-einer-webseite.ogg" type="audio/ogg"/>
      <enclosure length="20380590" url="https://dl.xyrillian.de/noises/stp-002-aufruf-einer-webseite.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/002-aufruf-einer-webseite/</guid>
    <pubDate>Thu, 20 May 2021 20:30:00 GMT</pubDate>
    <itunes:duration>55:33</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP001: Zahlensysteme</itunes:title>
    <itunes:episode>1</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP001: Zahlensysteme</title>
    <link>https://schluesseltechnologie-podcast.de/001-zahlensysteme</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>Wir versuchen uns daran, verschiedene Zählsysteme zu erklären.
Xyrill will zum Wohl aller die Weltherrschaft an sich reißen, und wir hauen auf den Amerikanern rum.
Außerdem in dieser Folge: Liverechnen von Xyrill und spannende Dinge mit Fingern von ttimeless.</itunes:summary>
    <description>Wir versuchen uns daran, verschiedene Zählsysteme zu erklären.
Xyrill will zum Wohl aller die Weltherrschaft an sich reißen, und wir hauen auf den Amerikanern rum.
Außerdem in dieser Folge: Liverechnen von Xyrill und spannende Dinge mit Fingern von ttimeless.</description>
    <content:encoded>&lt;p&gt;Wir versuchen uns daran, verschiedene Zählsysteme zu erklären.
Xyrill will zum Wohl aller die Weltherrschaft an sich reißen, und wir hauen auf den Amerikanern rum.
Außerdem in dieser Folge: Liverechnen von Xyrill und spannende Dinge mit Fingern von ttimeless.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Rekapitulation: Wie funktionieren die alltäglichen Zahlensysteme?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;römische Zahlen: &lt;a href=&#34;https://de.wikipedia.org/wiki/Additionssystem&#34;&gt;Additionssystem&lt;/a&gt; mit Fünferteilung&lt;/li&gt;
&lt;li&gt;Maya-Zahlensystem: &lt;a href=&#34;https://de.wikipedia.org/wiki/Vigesimalsystem&#34;&gt;Vigesimalsystem&lt;/a&gt; zur Basis 20&lt;/li&gt;
&lt;li&gt;arabische Zahlen: &lt;a href=&#34;https://de.wikipedia.org/wiki/Stellenwertsystem&#34;&gt;Stellenwertsystem&lt;/a&gt; zur Basis 10&lt;/li&gt;
&lt;li&gt;Basis ist prinzipiell frei wählbar
&lt;ul&gt;
&lt;li&gt;Basis 10 wegen Fingerzählen&lt;/li&gt;
&lt;li&gt;Basis 20, wenn man auch die Zehen dazu nimmt (Spuren in vielen europäischen Sprachen)&lt;/li&gt;
&lt;li&gt;Basis 12 (&amp;quot;Dutzend&amp;quot;, Stundenteilung) erlaubt viele gerade Teilungen&lt;/li&gt;
&lt;li&gt;ähnlich für Basis 60 (Babylon)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hybridsystem aus Stellenwert- und Additionssystem: z.B. Aussprache arabischer Zahlen im Deutschen, z.B. chinesische/japanische Zahlen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Dualsystem&#34;&gt;Dualsystem/Binärsystem&lt;/a&gt;: Stellenwertsystem zur Basis 2&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;praktisches Beispiel: ttimeless&#39; Binär-Armbandur&lt;/li&gt;
&lt;li&gt;zuschauen wie Binärzahlen wachsen: &lt;a href=&#34;https://binary.onlineclock.net&#34;&gt;Onlinebinäruhr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;zuerst von Gottfried Wilhelm Leibniz für Logikberechnungen genutzt&lt;/li&gt;
&lt;li&gt;vielseitig darstellbar in technischen Anwendungen
&lt;ul&gt;
&lt;li&gt;Mechanik: Klappe auf/zu&lt;/li&gt;
&lt;li&gt;Elektronik: Strom an/aus&lt;/li&gt;
&lt;li&gt;Pneumatik: Druck/kein Druck (Beispiel: &lt;a href=&#34;https://www.youtube.com/watch?v=058hRtaCWC0&#34;&gt;pneumatische Roboter&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Programmierung: true/false&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;z.B. in Elektronik: mehr als zwei Spannungswerte möglich, aber dann anfälliger für:
&lt;ul&gt;
&lt;li&gt;Störsignale im Kabel&lt;/li&gt;
&lt;li&gt;Spannungsschwankungen (z.B. durch Entladen der Batterie)&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Abgrenzung &amp;quot;binär&amp;quot; vs. &amp;quot;digital&amp;quot; (Wortherkunft &amp;quot;digital&amp;quot;: lat. &amp;quot;digitus&amp;quot; = Finger)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Hexadezimalsystem&#34;&gt;Hexadezimalsystem&lt;/a&gt;: Basis 16&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;für die kompakte Notation von Binärzahlen&lt;/li&gt;
&lt;li&gt;im Prinzip nur für Menschen bedeutsam&lt;/li&gt;
&lt;li&gt;Ziffern 0-9, A-F&lt;/li&gt;
&lt;li&gt;Notation in der Mathematik: Subskript mit der Basis (z.B. 42_10 = 24_16)&lt;/li&gt;
&lt;li&gt;Notation in der Informatik: blanke Zahl ist dezimal (z.B. 42), Präfix &amp;quot;0x&amp;quot; ist hexadezimal (z.B. 0x24)
&lt;ul&gt;
&lt;li&gt;manchmal auch &amp;quot;0b100100&amp;quot; für binär und &amp;quot;0o52&amp;quot; für oktal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Größenordnungen oberhalb von 0/1&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Oktett_(Informatik)&#34;&gt;Oktett&lt;/a&gt;: 8 Bit (256 Zustände)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Byte&#34;&gt;Byte&lt;/a&gt;: kleinste einzeln addressierte Speichermenge (heutzutage so gut wie immer 8 Bit)&lt;/li&gt;
&lt;li&gt;Kilobyte, Megabyte, Gigabyte, etc.: Multiplikator 1000 (KB,MB,GB)&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Bin%C3%A4rpr%C3%A4fix&#34;&gt;Binärpräfixe&lt;/a&gt;  Kibibyte, Mebibyte, Gibibyte, etc.: Multiplikator 1024 (KiB,MiB,GiB)&lt;/li&gt;
&lt;li&gt;Einheitensymbole: kleines &amp;quot;b&amp;quot; für Bit, großes &amp;quot;B&amp;quot; für Byte (wichtig für Netzwerktechnik, da Geschwindigkeiten oft in Megabit/Sekunde etc. angegeben sind)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:00:51" title="Einstieg und Zukunftspläne"  />
          <chapter start="00:02:22" title="Stellwertsystem, Additionssystem und Hybridsystem"  />
          <chapter start="00:15:19" title="Das Dualsystem/Binärsystem"  />
          <chapter start="00:23:14" title="Binär vs Digital"  />
          <chapter start="00:30:46" title="Hexadezimalsystem und Oktalsystem"  />
          <chapter start="00:39:35" title="Größenordnungen oberhalb von 0 und 1"  />
      </chapters>
      <enclosure length="24981951" url="https://dl.xyrillian.de/noises/stp-001-zahlensysteme.mp3" type="audio/mpeg"/>
      <enclosure length="31098922" url="https://dl.xyrillian.de/noises/stp-001-zahlensysteme.ogg" type="audio/ogg"/>
      <enclosure length="18125770" url="https://dl.xyrillian.de/noises/stp-001-zahlensysteme.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/001-zahlensysteme/</guid>
    <pubDate>Wed, 28 Apr 2021 22:00:00 GMT</pubDate>
    <itunes:duration>51:23</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
  <item>
    <itunes:episodeType>full</itunes:episodeType>
    <itunes:title>STP000: Was ist Informatik?</itunes:title>
    <itunes:episode>0</itunes:episode>
    <itunes:season>1</itunes:season>
    <title>STP000: Was ist Informatik?</title>
    <link>https://schluesseltechnologie-podcast.de/000-was-ist-informatik</link>
    <itunes:author>Xyrillian Noises</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <itunes:summary>In der ersten... nein, nullten Folge sprechen wir über die grundlegenden Muster von Informatik und Mathematik.
Dazu gehört, dass Informatik sowieso das einzig neue seit fließend Wasser, und Mathematik keine Naturwissenschaft ist.
Außerdem in dieser Folge: Was Trommeln im Stadion mit dem Wetter und Turing mit λ zu tun haben.</itunes:summary>
    <description>In der ersten... nein, nullten Folge sprechen wir über die grundlegenden Muster von Informatik und Mathematik.
Dazu gehört, dass Informatik sowieso das einzig neue seit fließend Wasser, und Mathematik keine Naturwissenschaft ist.
Außerdem in dieser Folge: Was Trommeln im Stadion mit dem Wetter und Turing mit λ zu tun haben.</description>
    <content:encoded>&lt;p&gt;In der ersten... nein, nullten Folge sprechen wir über die grundlegenden Muster von Informatik und Mathematik.
Dazu gehört, dass Informatik sowieso das einzig neue seit fließend Wasser, und Mathematik keine Naturwissenschaft ist.
Außerdem in dieser Folge: Was Trommeln im Stadion mit dem Wetter und Turing mit λ zu tun haben.&lt;/p&gt;&lt;h2&gt;Shownotes&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Einleitung: Erklärung des Podcastkonzepts durch ttimeless&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Informatik ist das vllt. einzige wirklich neue eigenständige Studienfach des 20. Jh.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crossover aus Mathematik (Strukturwissenschaft) und Elektrotechnik (Ingenieurwissenschaft)&lt;/li&gt;
&lt;li&gt;mittlerweile eigenständig aufgrund Größe und unterschiedlicher Lernstruktur
&lt;ul&gt;
&lt;li&gt;ähnlich der Abgrenzung zwischen Medizin und Biologie&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;vielleicht vergleichbar mit der Bildung einer neuen Spezies: unterschiedlich genug zu allen anderen Disziplinen&lt;/li&gt;
&lt;li&gt;Fokus in dieser Folge eher auf Mathematik als auf Elektrotechnik (Xyrill ist hier eher Theoretiker)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mathematik: keine Naturwissenschaft, sondern Strukturwissenschaft&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Untersuchung von &amp;quot;ausgedachten&amp;quot; Systemen&lt;/li&gt;
&lt;li&gt;meist Bezug zu realen Dingen (z.B. Arithmetik, Rechnen mit Zahlen im Kopf und auf dem Zettel, ein grundsätzliches Element der Mathematik)&lt;/li&gt;
&lt;li&gt;aber auch viel Grundlagenforschung (z.B. Primzahlen)&lt;/li&gt;
&lt;li&gt;Teilbereiche der Mathematik sind erfolgreich, wenn sie reale Probleme lösen
&lt;ul&gt;
&lt;li&gt;Handel -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/wiki/Arithmetik&#34;&gt;Arithmetik&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Architektur -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/wiki/Geometrie&#34;&gt;Geometrie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Wechselstromtechnik -&amp;gt; &lt;a href=&#34;https://de.wikipedia.org/wiki/Komplexe_Zahl&#34;&gt;Komplexe Zahlen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Rechenmaschinen -&amp;gt; theoretische Informatik (Xyrill nennt es &amp;quot;Berechnungstheorie&amp;quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Warum &amp;quot;Berechnungstheorie&amp;quot;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mathematik begnügt sich mit Aussagen wie &amp;quot;X ist lösbar&amp;quot;, &amp;quot;X existiert&amp;quot;&lt;/li&gt;
&lt;li&gt;Informatik muss immer auch erklären, &lt;em&gt;wie&lt;/em&gt; etwas lösbar ist
&lt;ul&gt;
&lt;li&gt;&amp;quot;Ein &lt;a href=&#34;https://de.wikipedia.org/wiki/Algorithmus&#34;&gt;Algorithmus&lt;/a&gt; ist eine eindeutige Handlungsvorschrift zur Lösung eines Problems oder einer Klasse von Problemen. Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten.&amp;quot;&lt;/li&gt;
&lt;li&gt;&amp;quot;Algorithmus&amp;quot;: benannt nach einem iranischen Universalgelehrten aus dem 8. Jhd. (al-Chwarizmi)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Algorithmen gab&#39;s also auch schon, bevor es &amp;quot;Informatik&amp;quot; hieß
&lt;ul&gt;
&lt;li&gt;Arithmetik: Primzahlen finden (Sieb des Erastothenes)&lt;/li&gt;
&lt;li&gt;Geometrie: Umkreis eines Dreiecks finden&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Knotenkunde&#34;&gt;Knotenkunde&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;maschinelles Abarbeiten von Algorithmen erfordert besonders präzise Formulierung
&lt;ul&gt;
&lt;li&gt;Menschen kommen mit ungenauen Erläuterungen oder reinen Zielbeschreibungen klar&lt;/li&gt;
&lt;li&gt;Beispiel: Wörter alphabetisch sortieren&lt;/li&gt;
&lt;li&gt;Beispiel: Gegeben zwei Zahlen, welche ist kleiner und welche ist größer?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;quot;Berechenbarkeit&amp;quot; ist ein universales Konzept
&lt;ul&gt;
&lt;li&gt;nicht an bestimmte Arten von Rechnenmaschinen gebunden&lt;/li&gt;
&lt;li&gt;Algorithmen können auch von Hand ausgeführt werden&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://de.wikipedia.org/wiki/Church-Turing-These&#34;&gt;Church-Turing-These&lt;/a&gt;: alle universellen Rechenmaschinen sind äquivalent (&lt;a href=&#34;https://de.wikipedia.org/wiki/Turingmaschine&#34;&gt;Turingmaschinen&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Lambda-Kalk%C3%BCl&#34;&gt;Lambda-Kalkül&lt;/a&gt;, &lt;a href=&#34;https://de.wikipedia.org/wiki/Primitiv-rekursive_Funktion&#34;&gt;Primitiv-rekursive Funktionen&lt;/a&gt;)
&lt;ul&gt;
&lt;li&gt;nicht rigoros bewiesen, aber stimmt für alle bisher gefundenen universellen Rechenmaschinen&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Durch das Aufschreiben von Algorithmen zeigen wir, dass wir ein Problem so gut verstanden haben, dass eine Maschine es für uns lösen kann.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Deswegen ist Informatik die Schlüsseltechnologie der modernen Welt.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content:encoded>
      <chapters xmlns="http://podlove.de/simple-chapters">
          <chapter start="00:00:00" title="Intro"  />
          <chapter start="00:00:34" title="Wer sind wir und was tun wir hier?"  />
          <chapter start="00:04:04" title="Gedanken über Mathematik"  />
          <chapter start="00:06:37" title="Informatik als wissenschaftliche Neuerung"  />
          <chapter start="00:15:46" title="Was genau ist eigentlich Mathematik"  />
          <chapter start="00:23:58" title="Was kann und sollte Informatik leisten?"  />
          <chapter start="00:36:10" title="Überlegungen zu Berechenbarkeit"  />
          <chapter start="00:46:36" title="Letzte Worte und Abschied"  />
      </chapters>
      <enclosure length="23671644" url="https://dl.xyrillian.de/noises/stp-000-was-ist-informatik.mp3" type="audio/mpeg"/>
      <enclosure length="17083503" url="https://dl.xyrillian.de/noises/stp-000-was-ist-informatik.ogg" type="audio/ogg"/>
      <enclosure length="16964690" url="https://dl.xyrillian.de/noises/stp-000-was-ist-informatik.opus" type="audio/opus"/>
    <guid>https://xyrillian.de/id/stp/000-was-ist-informatik/</guid>
    <pubDate>Thu, 08 Apr 2021 10:30:00 GMT</pubDate>
    <itunes:duration>48:39</itunes:duration>
    <itunes:explicit>no</itunes:explicit>
  </item>
</channel>
</rss>
