<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Howdy on Johannes Karl Arnold</title><link>https://johannes.arnold.onl/</link><description>Recent content in Howdy on Johannes Karl Arnold</description><generator>Hugo</generator><language>en-US</language><copyright>&amp;copy; Johannes Arnold.</copyright><lastBuildDate>Wed, 08 Jul 2026 14:42:39 -0700</lastBuildDate><atom:link href="https://johannes.arnold.onl/index.xml" rel="self" type="application/rss+xml"/><item><title>Allgemeiner Spickzettel</title><link>https://johannes.arnold.onl/page/notes/analysis/spicker.de/</link><pubDate>Wed, 19 Jul 2023 13:28:34 +0200</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/spicker.de/</guid><description>&lt;h2 id="wichtige-rechenregeln" class="relative group"&gt;Wichtige Rechenregeln &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#wichtige-rechenregeln" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 id="brüche" class="relative group"&gt;Brüche &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#br%c3%bcche" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h4 id="kreuzweise-multiplikation" class="relative group"&gt;Kreuzweise Multiplikation &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#kreuzweise-multiplikation" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;p&gt;Jede Seite mit dem Nenner der anderen multiplizeren, dadurch fällt der Nenner weg.&lt;/p&gt;
&lt;p&gt;\begin{align}
\frac{a}{b} &amp;amp;= \frac{c}{d}\\
\frac{a \cdot d}{b \cdot d} &amp;amp;= \frac{c \cdot b}{d \cdot b}\\
a \cdot d &amp;amp;= c \cdot b
\end{align}&lt;/p&gt;</description></item><item><title>Reihen</title><link>https://johannes.arnold.onl/page/notes/analysis/reihen.de/</link><pubDate>Wed, 26 Jul 2023 14:47:55 +0200</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/reihen.de/</guid><description>&lt;h1 id="konvergenz--und-divergenzkriterien-von-reihen" class="relative group"&gt;Konvergenz- und Divergenzkriterien von Reihen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#konvergenz--und-divergenzkriterien-von-reihen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Eine &lt;strong&gt;notwendige&lt;/strong&gt; Bedingung für das Konvergieren von Reihen, ist dass die Folge eine &lt;strong&gt;Nullfolge&lt;/strong&gt; ist.&lt;/p&gt;
&lt;p&gt;\begin{equation}
\lim_{k \to \infty} a_k = 0
\end{equation}&lt;/p&gt;
&lt;h2 id="geometrische-reihen" class="relative group"&gt;Geometrische Reihen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#geometrische-reihen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;\begin{equation}
\sum_{k=1}^\infty q^{k} =
\begin{cases}
\frac{q^m}{1-q} &amp;amp; |q| &amp;lt; 1\\
\text{divergiert} &amp;amp; |q| \geq 1
\end{cases}
\end{equation}&lt;/p&gt;
&lt;h2 id="harmonische-reihen" class="relative group"&gt;Harmonische Reihen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#harmonische-reihen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;\begin{equation}
\sum_{k=1}^\infty \frac{1}{k^s} =
\begin{cases}
\text{konvergiert} &amp;amp; s &amp;gt; 1\\
\text{divergiert} &amp;amp; s \leq 1
\end{cases}
\end{equation}&lt;/p&gt;</description></item><item><title>Taylorpolynome</title><link>https://johannes.arnold.onl/page/notes/analysis/taylor.de/</link><pubDate>Thu, 06 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/taylor.de/</guid><description>&lt;h1 id="allgemeine-formel-für-taylorpolynome" class="relative group"&gt;Allgemeine Formel für Taylorpolynome &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#allgemeine-formel-f%c3%bcr-taylorpolynome" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Die Formel für das Taylorpolynom der Ordnung \(n\) um den Entwicklungspunkt \(x_0\) lautet&lt;/p&gt;
&lt;p&gt;\begin{align}
P_{x_0, n} &amp;amp;= f(x_0) + f^\prime (x_0)(x-x_0) + \frac{f^{\prime \prime} (x_0)}{2!} (x-x_0)^2 \dots\\
&amp;amp;= \sum_{k=0}^n \frac{f^k (x_0)}{k!} \cdot (x-x_0)^k
\end{align}&lt;/p&gt;
&lt;h2 id="beispiel" class="relative group"&gt;Beispiel &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#beispiel" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Berechnen Sie das Taylorpolynom von \(f(x) = e^x\) vom Grad \(n\) um den Entwicklungspunkt \(0\).&lt;/p&gt;</description></item><item><title>Setting up a Matrix Homeserver on NixOS (Easy Edition)</title><link>https://johannes.arnold.onl/post/2025/setting-up-a-matrix-homeserver-on-nixos-easy-edition/</link><pubDate>Fri, 15 Aug 2025 22:50:57 +0200</pubDate><guid>https://johannes.arnold.onl/post/2025/setting-up-a-matrix-homeserver-on-nixos-easy-edition/</guid><description>How I set up my own Homeserver</description></item><item><title>On using `uutils`</title><link>https://johannes.arnold.onl/post/2025/on-using-uutils/</link><pubDate>Fri, 21 Mar 2025 13:23:56 +0100</pubDate><guid>https://johannes.arnold.onl/post/2025/on-using-uutils/</guid><description>&lt;p&gt;Beginning with commit &lt;a href="https://github.com/j0hax/nixos-configurations/commit/879f3af878e61fed632bd5520f6b3eeee33afc28" target="_blank" rel="noreferrer"&gt;879f3af&lt;/a&gt; in January 2025, I have been using &lt;a href="https://uutils.github.io/" target="_blank" rel="noreferrer"&gt;uutils&lt;/a&gt; on my NixOS machines.&lt;/p&gt;
&lt;p&gt;Uutils is a Rust rewrite of the &lt;a href="https://www.gnu.org/software/coreutils/coreutils.html" target="_blank" rel="noreferrer"&gt;GNU coreutils&lt;/a&gt; and the experience has been nothing but wonderful. &lt;strong&gt;I&amp;rsquo;ve encountered zero bugs, and everything is snappy.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="how-to-enable-it" class="relative group"&gt;How to enable it? &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#how-to-enable-it" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;For NixOS, the process is quite easy. You can simply add the &lt;em&gt;non-prefixed&lt;/em&gt; versions to your system&amp;rsquo;s packages. These binaries are then used in place of the GNU coreutils:&lt;/p&gt;</description></item><item><title>systemd-homed first impressions</title><link>https://johannes.arnold.onl/post/2025/systemd-homed-first-impressions/</link><pubDate>Sun, 23 Feb 2025 13:26:29 +0100</pubDate><guid>https://johannes.arnold.onl/post/2025/systemd-homed-first-impressions/</guid><description>&lt;p&gt;One of the priviliges of starting my new job is that I am issued a laptop with the freedom of installing any distro I like. Usually, this process is a no-brainer &amp;mdash; I pull out my trusty &lt;a href="https://nixos.org" target="_blank" rel="noreferrer"&gt;NixOS&lt;/a&gt; boot stick, format the drive as bcachefs &amp;amp; install, and &lt;code&gt;git clone&lt;/code&gt; my &lt;a href="https://github.com/j0hax/nixos-configurations" target="_blank" rel="noreferrer"&gt;configuration&lt;/a&gt; with which I rebuild the system to my preferences. Easy, right?&lt;/p&gt;
&lt;p&gt;Now, a company laptop isn&amp;rsquo;t the same as my other, single-user laptops;&lt;/p&gt;</description></item><item><title>OpenWRT Meshing</title><link>https://johannes.arnold.onl/post/2025/openwrt-meshing/</link><pubDate>Sat, 08 Feb 2025 14:58:04 +0100</pubDate><guid>https://johannes.arnold.onl/post/2025/openwrt-meshing/</guid><description>&lt;p&gt;After moving to a new, larger apartment, I had a problem: &lt;strong&gt;the office had a terrible Wi-Fi connection,&lt;/strong&gt; and the office was so far away from our DSL gateway that laying a long ethernet cable was out of the question. Fortunately, during a trip to the USA, I found something I couldn&amp;rsquo;t pass up: a TP-Link Archer A7&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; at Goodwill for a whopping $6.99.&lt;/p&gt;

 
 
 
 
 

 
 
 &lt;figure class="mx-auto my-0 rounded-md"&gt;
 
 
 








 
 &lt;picture
 class="mx-auto my-0 rounded-md"
 
 &gt;
 
 
 
 
 &lt;source
 
 srcset="https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_8b52c803f3839fa7.webp 330w,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_9f69e8dfdadaeeda.webp 660w
 
 ,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_38e1c17d74cf7e32.webp 1024w
 
 
 ,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_fc3ce58deec1f6d7.webp 1320w
 "
 
 sizes="100vw"
 type="image/webp"
 /&gt;
 
 &lt;img
 width="4000"
 height="3000"
 class="mx-auto my-0 rounded-md"
 
 loading="lazy" decoding="async"
 
 src="https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_cc63383e716f43c8.jpg" srcset="https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_ab0682896df1f218.jpg 330w,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_cc63383e716f43c8.jpg 660w
 
 ,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_8f9b7714fa896363.jpg 1024w
 
 
 ,https://johannes.arnold.onl/post/2025/openwrt-meshing/goodwill_hu_981926c6d1a7c92c.jpg 1320w
 "
 sizes="100vw"
 
 /&gt;
 &lt;/picture&gt;
 


 &lt;figcaption class="text-center"&gt;For less than the price of a fast food meal&lt;/figcaption&gt;
 &lt;/figure&gt;


&lt;p&gt;The router immediately stood out to me, as I have used the extemely similar Archer C7 v5 since 2020. The machines are not only alike in appearance, but also on a hardware-level: both share the QCA956X CPU, 16 MiB flash storage, 128 MiB RAM, and of course the same wireless chipsets. Apparently, the A7 featured IFTTT and Alexa integration, resulting in some minor revisions and necessitation a slightly differnt OpenWRT firmware.&lt;/p&gt;</description></item><item><title>Hot Sauce Hall of Fame</title><link>https://johannes.arnold.onl/page/hotsauces/</link><pubDate>Fri, 03 Jan 2025 20:21:09 +0100</pubDate><guid>https://johannes.arnold.onl/page/hotsauces/</guid><description>My favorite Hot Sauces :)</description></item><item><title>Building an Outdoor Meshtastic Solar Node</title><link>https://johannes.arnold.onl/post/2024/building-an-outdoor-meshtastic-solar-node/</link><pubDate>Mon, 29 Apr 2024 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/post/2024/building-an-outdoor-meshtastic-solar-node/</guid><description>&lt;p&gt;Meshtastic has taken off in my hometown. After my first post detailing the build of my &lt;a href="https://johannes.arnold.onl/post/2024/my-first-meshtastic-node-is-now-online/"&gt;first Meshtastic node&lt;/a&gt; and chatting with new users in the area, I decided to continue &amp;ldquo;investing&amp;rdquo; into our network, especially as I live in a high-rise apartment with access to outdoor stairwells, I have an excellent line of sight view of the city.&lt;/p&gt;
&lt;h2 id="assembly" class="relative group"&gt;Assembly &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#assembly" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;There are quite a few awesome &lt;a href="https://www.reddit.com/r/meshtastic/search/?q=solar" target="_blank" rel="noreferrer"&gt;solar nodes&lt;/a&gt; on Reddit, many of them hacked into the enclosures of solar-powered outdoor LED lights. While many of these probably function and look fine, I&amp;rsquo;ll be honest: I didn&amp;rsquo;t want to take the risk that the solar panel or batteries couldn&amp;rsquo;t power the node long-term. I&amp;rsquo;d rather spend a little more money for a purpose-built case than possible have to hunt down and gut parts of questionable quality.&lt;/p&gt;</description></item><item><title>My first Meshtastic Node is now Online!</title><link>https://johannes.arnold.onl/post/2024/my-first-meshtastic-node-is-now-online/</link><pubDate>Wed, 27 Mar 2024 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/post/2024/my-first-meshtastic-node-is-now-online/</guid><description>&lt;p&gt;I believe the first time I head of &lt;a href="https://meshtastic.org/" target="_blank" rel="noreferrer"&gt;Meshtastic&lt;/a&gt; was during the COVID pandemic, probably through one of Andreas Spiess&amp;rsquo; &lt;a href="https://www.youtube.com/watch?v=TY6m6fS8bxU" target="_blank" rel="noreferrer"&gt;videos&lt;/a&gt;. I thought the Idea was neat (I was deeply into DIY electronics then as I am now), but I quickly decided the project wasn&amp;rsquo;t for me. I wasn&amp;rsquo;t aware of LoRa&amp;rsquo;s range nor did I have the money as a broke college student to go out and build a transciever with no other people to talk to.&lt;/p&gt;</description></item><item><title>Äquivalenzklassentests</title><link>https://johannes.arnold.onl/page/notes/swq/tests/%C3%A4quivalenz.de/</link><pubDate>Wed, 21 Feb 2024 21:56:26 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/tests/%C3%A4quivalenz.de/</guid><description>&lt;p&gt;&lt;strong&gt;Idee:&lt;/strong&gt; Ein Programm reagiert bei der Verarbeitung eines Wertes aus einem bestimmten Bereich genau so wie bei der Verarbeitung jedes anderen Wertes aus diesem Bereich.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Annahme:&lt;/strong&gt; Ahnliche eingaben finden ähnliche Fehler.&lt;/p&gt;
&lt;h1 id="funktionsweise" class="relative group"&gt;Funktionsweise &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#funktionsweise" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;Zerlege &lt;strong&gt;Wertebereich der Eingabeparameter&lt;/strong&gt; oder (seltener) &lt;strong&gt;Definitionsbereich der Ausgabeparameter&lt;/strong&gt; in Äquivalenzklassen&lt;/li&gt;
&lt;li&gt;Aus jeder Äuivalenzklasse einen Repräsentanten nehmen&lt;/li&gt;
&lt;li&gt;Repräsentanten aller Parameter geschickt kombinieren mit Testdaten&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(Gutes Beispiel auf Pagina 10 von Übung 7.)&lt;/p&gt;</description></item><item><title>Tests</title><link>https://johannes.arnold.onl/page/notes/swq/tests/_index.de/</link><pubDate>Wed, 21 Feb 2024 21:26:35 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/tests/_index.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Ausführen eines Programms mit dem Ziel, Fehler zu finden&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="testmethoden" class="relative group"&gt;Testmethoden &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#testmethoden" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Black-Box-Test&lt;/dt&gt;
&lt;dd&gt;Code ist unbekannt. Ist und Soll aus Anforderungen. &lt;strong&gt;Findet nicht implementierte Requirements.&lt;/strong&gt;&lt;/dd&gt;
&lt;dt&gt;White-Box-Test&lt;/dt&gt;
&lt;dd&gt;Code ist bekannt. Ist kommt aus Code. (reichen die Testfälle dafür? &lt;strong&gt;Findet Fehler im Code&lt;/strong&gt;)&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;Wichtig:&lt;/strong&gt; bei beiden Tests kommt der Soll-Wert aus der Spezifikation&lt;/p&gt;
&lt;h1 id="testarten" class="relative group"&gt;Testarten &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#testarten" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Unit-Test&lt;/dt&gt;
&lt;dd&gt;Kleinste testbare Einheit (Methode, Klasse)&lt;/dd&gt;
&lt;dt&gt;Testsuite&lt;/dt&gt;
&lt;dd&gt;Mehrere Testfälle nacheinander&lt;/dd&gt;
&lt;dt&gt;Integrationstest&lt;/dt&gt;
&lt;dd&gt;Mehrere Komponenten zusammen testen&lt;/dd&gt;
&lt;dt&gt;Systemtest&lt;/dt&gt;
&lt;dd&gt;Alle SW- und HW-Komponente zusammengebaut. Testet das System als ganzes.&lt;/dd&gt;
&lt;dt&gt;Abnahmetest&lt;/dt&gt;
&lt;dd&gt;Spezialfall des Systemtests. Es wird sichergestellt, dass die vorher festgelegten Funktionen/Aspekte fehlerfrei funktionieren. (Nach Definition kein Test, da hier gezeit wird dass das System nach Anforderungen funktioniert)&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="testplan" class="relative group"&gt;Testplan &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#testplan" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Ein Testplan enthält neben den Testfällen noch&lt;/p&gt;</description></item><item><title>Erklärbarkeit</title><link>https://johannes.arnold.onl/page/notes/swq/aspekte/erkl%C3%A4rbarkeit/index.de/</link><pubDate>Wed, 21 Feb 2024 21:14:11 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/aspekte/erkl%C3%A4rbarkeit/index.de/</guid><description>&lt;p&gt;Erklärbarkeit ist ein besonderer Qualitätsaspekt: SW soll gut verständlich sein, &lt;em&gt;oder&lt;/em&gt; effizient nutzbar, &lt;em&gt;oder&lt;/em&gt; transparent, &lt;em&gt;oder&lt;/em&gt; vertrauenswürdig. &lt;strong&gt;Hier kommt GQM ins Spiel.&lt;/strong&gt; Erklärbarkeit hat wechselwirkungen mit anderen Non-Functional Requirements.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Understandability&lt;/dt&gt;
&lt;dd&gt;Erklärungen sind für den Adressaten leicht verständlich&lt;/dd&gt;
&lt;dt&gt;Transparency&lt;/dt&gt;
&lt;dd&gt;Erklärungen geben einen ausreichenden Einblick in die Funktionsweise des Systems&lt;/dd&gt;
&lt;dt&gt;Effectiveness&lt;/dt&gt;
&lt;dd&gt;Erklärungen helfen dem Adressaten, das System besser zu nutzen (bessere Entscheidungen zu treffen / Funktionen zu nutzen, die am besten passen)&lt;/dd&gt;
&lt;dt&gt;Efficiency&lt;/dt&gt;
&lt;dd&gt;Erklärungen helfen dem Adressaten, das System schneller zu nutzen (Entscheidungen schneller treffen / das System schneller verstehen/Aktionen schneller ausführen)&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;Wieso wichtig? Damit man versteht was die Software tut, wenn&lt;/p&gt;</description></item><item><title>Security</title><link>https://johannes.arnold.onl/page/notes/swq/aspekte/security/index.de/</link><pubDate>Wed, 21 Feb 2024 21:08:47 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/aspekte/security/index.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Degree to which a product or system protects information and data so that persons or other products or systems have the degree of data access appropriate to their types and levels of authorization.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die Software soll also gegen Angriffe sicher sein, mit den folgenden Unterpunkten:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Confidentiality&lt;/dt&gt;
&lt;dd&gt;ensures that data are accessible only to those authorized to have access.&lt;/dd&gt;
&lt;dt&gt;Integrity&lt;/dt&gt;
&lt;dd&gt;prevents unauthorized access to, or modification of, computer programs or data.&lt;/dd&gt;
&lt;dt&gt;Non-repudiation&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/dt&gt;
&lt;dd&gt;can be proven to have taken place so that the events or actions cannot be repudiated later.&lt;/dd&gt;
&lt;dt&gt;Accountability&lt;/dt&gt;
&lt;dd&gt;can be traced uniquely to the entity.&lt;/dd&gt;
&lt;dt&gt;Authenticity&lt;/dt&gt;
&lt;dd&gt;identity of a subject or resource can be proved to be the one claimed.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="stride" class="relative group"&gt;STRIDE &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#stride" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;S&lt;/strong&gt;poofing, &lt;strong&gt;T&lt;/strong&gt;ampering, &lt;strong&gt;R&lt;/strong&gt;epudiation, &lt;strong&gt;I&lt;/strong&gt;nformation disclosure, &lt;strong&gt;D&lt;/strong&gt;enial of service, &lt;strong&gt;E&lt;/strong&gt;levation of privilege&lt;/p&gt;</description></item><item><title>Usability</title><link>https://johannes.arnold.onl/page/notes/swq/aspekte/usability/index.de/</link><pubDate>Wed, 21 Feb 2024 19:22:29 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/aspekte/usability/index.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Der Grad, zu dem ein Produkt oder System durch &lt;em&gt;definierte Benutzer&lt;/em&gt; verwendet werden kann, um &lt;em&gt;spezielle Ziele,&lt;/em&gt; nämlich&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Effektivität,&lt;/li&gt;
&lt;li&gt;Effizienz,&lt;/li&gt;
&lt;li&gt;Zufriedenheit,&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;in einem bestimmten Nutzungskontext zu erreichen.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die Software soll also besonders gut nutzbar sein, mit den folgenden Unterpunkten:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Effektivität&lt;/dt&gt;
&lt;dd&gt;Genauigkeit u. Vollständigkeit, mit der Benutzer best. Ziele erreichen.&lt;/dd&gt;
&lt;dt&gt;Effizienz&lt;/dt&gt;
&lt;dd&gt;Die von den Benutzern aufgewendeten Mittel im Verhältnis zur Genauigkeit und Vollständigkeit, mit der die Benutzer ihre Ziele erreichen.&lt;/dd&gt;
&lt;dt&gt;Zufriedenheit&lt;/dt&gt;
&lt;dd&gt;Die Freiheit von Unbehagen und Beschwerden sowie die positive Einstellung zur Nutzung des Produkts oder Systems.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="ziele" class="relative group"&gt;Ziele &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#ziele" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h2 id="performance-ziele" class="relative group"&gt;Performance-Ziele &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#performance-ziele" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Quantifizieren die Leistung des Benutzers bei Erledigung einer Aufgabe. Dabei werden Zeit und Fehler gemessen. (Absolutes Maß &amp;amp; objektiv)&lt;/p&gt;</description></item><item><title>Goal-Question-Metric</title><link>https://johannes.arnold.onl/page/notes/swq/metriken/gqm/index.de/</link><pubDate>Wed, 21 Feb 2024 18:14:34 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/metriken/gqm/index.de/</guid><description>&lt;p&gt;Die GQM ist eine Methode, um die richtige Metrik zu finden:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ziele erheben und verfeinern (Goals): Zielbaum&lt;/li&gt;
&lt;li&gt;Ziele mit Facetten genauer beschreiben (Goals)
&lt;ul&gt;
&lt;li&gt;Zweck (verstehen, verbessern?)&lt;/li&gt;
&lt;li&gt;Qualitätsaspekt (Effizienz, Effektivität, Kostenwirksamkeit?)&lt;/li&gt;
&lt;li&gt;Betrachtungsgegenstand (Testprozess, Testplan?)&lt;/li&gt;
&lt;li&gt;Perspektive u. Umgebung (Projekt/Bereich xyz)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ableitung von Fragen zu den Zielen (Questions): Ein Abstraction Sheet pro Ziel&lt;/li&gt;
&lt;li&gt;Ableitung von zugehörigen Metriken (Metric)&lt;/li&gt;
&lt;li&gt;Messplan für Datenerhebung erstellen (Metric)&lt;/li&gt;
&lt;li&gt;Datenerhebung und Auswertung&lt;/li&gt;
&lt;/ol&gt;
&lt;h1 id="abstraction-sheet-inhalte" class="relative group"&gt;Abstraction Sheet Inhalte &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#abstraction-sheet-inhalte" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Oben stehen Zweck der Messung, Qualitätsaspekt, Betrachtungsgegenstand und Perspektive.&lt;/p&gt;</description></item><item><title>Software-Qualität</title><link>https://johannes.arnold.onl/page/notes/swq/_index.de/</link><pubDate>Sun, 18 Feb 2024 16:54:23 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/_index.de/</guid><description/></item><item><title>Uneigentliche Integrale</title><link>https://johannes.arnold.onl/page/notes/analysis/uneigentliche-integrale.de/</link><pubDate>Tue, 06 Feb 2024 14:14:43 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/uneigentliche-integrale.de/</guid><description>&lt;p&gt;Bei uneigentlichen Integralen werden &lt;em&gt;limes&lt;/em&gt; benutzt, um Grenzwerte von Asymptoten oder Singularitäten zu berechnen. Zum Verständnis kann ich nur &lt;a href="https://youtu.be/Ce9Din83uFY" target="_blank" rel="noreferrer"&gt;MatheMatricks Video dazu&lt;/a&gt; empfehlen.&lt;/p&gt;
&lt;h1 id="beispiel" class="relative group"&gt;Beispiel &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#beispiel" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;\[\int_{-\infty}^{\infty} \frac{1}{1+x^2} \operatorname{d}x\]&lt;/p&gt;
&lt;p&gt;Der Bruch sollte bekannt sein: \(\int \frac{1}{1+x^2} \operatorname{d}x = \arctan x\). Da der Anfangs- und Endwert unbeschränkt sind, ist es Sinnvoll das Integral mit zwei Limes in der &amp;raquo;Mitte&amp;laquo; (also \(x=0\)) aufzusplitten:
\[
= \lim_{a \to -\infty} \int_a^0 \frac{1}{1+x^2} \operatorname{d}x + \lim_{b \to \infty} \int_0^b \frac{1}{1+x^2} \operatorname{d}x.
\]
Nun kann man seperat die uneigentlichen Integrale berechnen. Wir wissen dass \(\arctan(-\infty) = -\frac{\pi}{2}\), weil \(\lim_{\theta \to \left( -\frac{\pi}{2}\right)} \tan \theta = -\infty\) bzw. \(\frac{\sin \left( -\frac{\pi}{2}\right)}{\cos \left( -\frac{\pi}{2}\right)} = \frac{-1}{0}.\) Ähnliches gilt (natürlich mit anderem Vorzeichen) für \(\arctan \infty.\)&lt;/p&gt;</description></item><item><title>Spickzettel</title><link>https://johannes.arnold.onl/page/notes/ds/spicker/index.de/</link><pubDate>Mon, 05 Feb 2024 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/spicker/index.de/</guid><description>&lt;p&gt;Anbei mein handgeschriebener Spickzettel für die Klausur. Leider war der Text sehr klein bzw. an manchen Stellen unleserlich. Nichtsdestotrotz hat er mir sehr geholfen. Vielleicht hilft er Anderen auch weiter.&lt;/p&gt;

 
 
 
 
 

 
 
 
 
 
 &lt;figure class="mx-auto my-0 rounded-md"&gt;
 &lt;img src="scan.jpg" alt="" class="mx-auto my-0 rounded-md"/&gt;
 &lt;figcaption class="text-center"&gt;Übliche Formeln und Algorithmen&lt;/figcaption&gt;
 &lt;/figure&gt;



 
 
 
 
 

 
 
 
 
 
 &lt;figure class="mx-auto my-0 rounded-md"&gt;
 &lt;img src="scan-back.jpg" alt="" class="mx-auto my-0 rounded-md"/&gt;
 &lt;figcaption class="text-center"&gt;Beispielaufgaben mit Lösungen&lt;/figcaption&gt;
 &lt;/figure&gt;</description></item><item><title>Online-Trainer Nr. 4 zu Algebraischen Strukturen</title><link>https://johannes.arnold.onl/page/notes/ds/solutions/algebraische-strukturen.de/</link><pubDate>Sun, 14 Jan 2024 16:03:03 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/solutions/algebraische-strukturen.de/</guid><description>&lt;h1 id="aussagen-zur-teilbarkeit" class="relative group"&gt;Aussagen zur Teilbarkeit &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#aussagen-zur-teilbarkeit" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;Welche der folgenden Aussagen sind wahr und welche sind falsch?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Die Zahlen 2023 und 6137 sind teilerfremd.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hier berechnet man einfach den ggT (größten gemeinsamen Teiler) der Zahlen mittels des Euklidischen Algorithmus: \[
\begin{aligned}
6137 &amp;amp;= 2023 \cdot 3 + 68\\
2023 &amp;amp;= 68 \cdot 29 + 51\\
68 &amp;amp;= 51 \cdot 1 + 17\\
51 &amp;amp;= 17 \cdot 3 + 0
\end{aligned}
\]&lt;/p&gt;</description></item><item><title>Online-Trainer Nr. 3 zu Graphentheorie</title><link>https://johannes.arnold.onl/page/notes/ds/solutions/graphentheorie/index.de/</link><pubDate>Mon, 08 Jan 2024 18:46:33 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/solutions/graphentheorie/index.de/</guid><description>&lt;h1 id="gradfolgen" class="relative group"&gt;Gradfolgen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#gradfolgen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;Welche Folgen sind Gradfolgen eines Graphen?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Die Folge \((1,1,2,4,4)\) ist &lt;strong&gt;keine Gradfolge&lt;/strong&gt; eines Graphen.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Angenommen, \(G\) sei ein Graph mit Gradfolge \((1, 1, 2, 4, 4)\). Es gibt \(5\) Ecken, davon haben zwei Grad \(4\), sind also mit jeder anderen Ecke verbunden. Damit hat aber jede Ecke in \(G\) mindestens Grad \(2\).&lt;/p&gt;
&lt;blockquote&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Die Folge \((1,1,2,3,3)\) ist &lt;strong&gt;Gradfolge&lt;/strong&gt; eines Graphen.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Man kann diesen malen. Beispiel aus dem Quiz: 






 
 
&lt;figure&gt;&lt;img src="blobid1677251821710.png" alt="Graph mit Gradfolge(1,1,2,3,3)" class="mx-auto my-0 rounded-md" /&gt;
&lt;/figure&gt;
&lt;/p&gt;</description></item><item><title>Online-Trainer Nr. 2 zu Rekursionsgleichungen</title><link>https://johannes.arnold.onl/page/notes/ds/solutions/rekursionsgleichungen/index.de/</link><pubDate>Sun, 07 Jan 2024 13:02:13 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/solutions/rekursionsgleichungen/index.de/</guid><description>&lt;h1 id="lösen-linearer-rekursionsgleichungen" class="relative group"&gt;Lösen linearer Rekursionsgleichungen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#l%c3%b6sen-linearer-rekursionsgleichungen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;Wir betrachten die Rekursionsgleichung \[x_0 = 2, x_n = 3x_{n-1}-4.\] Dies ist eine lineare Rekursionsgleichung der Ordnung \(1\) und es gilt&lt;/p&gt;
&lt;p&gt;\(x_1 = {2}\), \(x_2 = {2}\), \(x_3 = {2}\)&lt;/p&gt;
&lt;p&gt;Bestimmen Sie nun eine geschlossene Formel für die Zahlen \(x_n\).&lt;/p&gt;
&lt;p&gt;\(x_n = {0} \cdot 3^n + {2}\)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die Gleichung ist linear, da alle Summanden feste Zahlen sind. Die Ordnung ist 1, da immer nur &amp;ldquo;ein Schritt zurück&amp;rdquo; gerechnet wird. Wir rechnen kurz die ersten Werte:
\[
\begin{aligned}
x_1 &amp;amp;= 3(2)-4 = 2\\
x_2 &amp;amp;= 3(2)-4 = 2\\
x_3 &amp;amp;= 3(2)-4 = 2\\
\vdots&amp;amp;\\
x_n &amp;amp;= 2
\end{aligned}
\]&lt;/p&gt;</description></item><item><title>ILIAS Lösungen</title><link>https://johannes.arnold.onl/page/notes/ds/solutions/_index.de/</link><pubDate>Fri, 05 Jan 2024 16:58:30 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/solutions/_index.de/</guid><description>&lt;p&gt;Meine Rechenwege zu den ILIAS-Probeübungen.&lt;/p&gt;</description></item><item><title>Online-Trainer Nr. 1 zu Kombinatorik</title><link>https://johannes.arnold.onl/page/notes/ds/solutions/kombinatorik.de/</link><pubDate>Fri, 05 Jan 2024 16:58:30 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/solutions/kombinatorik.de/</guid><description>&lt;h2 id="buchstaben-kombinieren" class="relative group"&gt;Buchstaben kombinieren &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#buchstaben-kombinieren" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Gesucht sei die Anzahl der verschiedenen Wörter mit \(8\) Buchstaben aus dem Alphabet mit den Buchstaben \(a,b,c,d,e\), welche genau \(3\) mal den Buchstaben \(e\) und genau \(4\) mal den Buchstaben \(a\) enthalten.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Die Lösung ist hier ähnlich zu einer Aufgabe von Übungsblatt 2:&lt;/p&gt;
&lt;p&gt;\[
\binom{8}{3} \cdot \binom{5}{4} \cdot 3^1 = 840
\]&lt;/p&gt;
&lt;p&gt;Der erste Binomialkoeffizient wählt drei \(e\)s aus acht möglichen Buchstaben. Der zweite wählt dann vier \(a\)s aus den restlichen fünf stellen. Für die letzte Stelle kann man einen beliebigen Buchstaben aus der Menge \(\{b,c,d\}\) wählen.&lt;/p&gt;</description></item><item><title>Binomischer Lehrsatz</title><link>https://johannes.arnold.onl/page/notes/ds/binomial.de/</link><pubDate>Tue, 26 Dec 2023 16:03:40 +0100</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/binomial.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lemma 1.9&lt;/strong&gt; (Binomischer Lehrsatz). Seien \(x\) und \(y\) Unbestimmte oder Zahlen, die kommutieren, d.h. \(xy = yx\). Dann gilt für alle \(n \in \mathbb{N}\): \[(x+y)^n = \sum_{i=0}^{n} \binom{n}{i} x^{n-i}y^i\]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="aufgabe-2-e" class="relative group"&gt;Aufgabe 2 (e) &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#aufgabe-2-e" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Bestimmen Sie den Koeffizienten von \(x^5\) in \((2x-3)^8\)&lt;/p&gt;
&lt;h3 id="lösung" class="relative group"&gt;Lösung. &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#l%c3%b6sung" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Nach dem Binomischen Lehrsatz ist \[(2x-3)^8 = \sum_{i=0}^{8} \binom{8}{i} (2x)^{8-i} (-3)^i.\]
\(5 = 8-i \iff i=3,\) somit erhält man den Koeffizienten für \(x^5\) durch \[\binom{8}{3} \cdot 2^5 \cdot (-3)^3 = 56 \cdot 32 \cdot -27 = -48384.\]&lt;/p&gt;</description></item><item><title>Glycine GL0388 -- Cheap Homage or a Modern Classic?</title><link>https://johannes.arnold.onl/post/2023/glycine-gl0388--cheap-homage-or-a-modern-classic/</link><pubDate>Wed, 29 Nov 2023 08:33:44 +0100</pubDate><guid>https://johannes.arnold.onl/post/2023/glycine-gl0388--cheap-homage-or-a-modern-classic/</guid><description>&lt;h2 id="it-started-with-black-friday-curiosity" class="relative group"&gt;It started with Black Friday Curiosity &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#it-started-with-black-friday-curiosity" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;One cool evening in mid November I decided to head back to Drop.com. Considering my new job and the upcoming black Friday deals I figured it would be the perfect time to check up on my once&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; beloved drop-shipping site. It was here that a watch caught my eye: the Drop + Glycine Combat Sub &amp;ldquo;Soda&amp;rdquo;, pictured below.&lt;/p&gt;</description></item><item><title>Consensus Algorithms</title><link>https://johannes.arnold.onl/page/notes/distributed-systems/consensus/</link><pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/distributed-systems/consensus/</guid><description>&lt;p&gt;Multiple independent processes need to agree on an outcome.&lt;/p&gt;
&lt;p&gt;A correct consensus protocol fulfills the following criteria:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Termination&lt;/dt&gt;
&lt;dd&gt;every correct process decides some value&lt;/dd&gt;
&lt;dt&gt;Integrity&lt;/dt&gt;
&lt;dd&gt;if all processes proposed the same value (v), then any correct process must decide (v)&lt;/dd&gt;
&lt;dt&gt;Agreement&lt;/dt&gt;
&lt;dd&gt;Every &lt;em&gt;correct&lt;/em&gt; process must agree on the same value&lt;/dd&gt;
&lt;/dl&gt;</description></item><item><title>Faults and Failures</title><link>https://johannes.arnold.onl/page/notes/distributed-systems/failures/</link><pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/distributed-systems/failures/</guid><description>&lt;h1 id="types-of-faults" class="relative group"&gt;Types of Faults &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#types-of-faults" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Transient&lt;/dt&gt;
&lt;dd&gt;Occurs only once and then goes away&lt;/dd&gt;
&lt;dt&gt;Intermittent&lt;/dt&gt;
&lt;dd&gt;Irregular, comes and goes&lt;/dd&gt;
&lt;dt&gt;Permanent&lt;/dt&gt;
&lt;dd&gt;Occurs only once and then goes away. Continues to exist (until repair)&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="propagation" class="relative group"&gt;Propagation &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#propagation" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Fault&lt;/dt&gt;
&lt;dd&gt;the cause of an error&lt;/dd&gt;
&lt;dt&gt;Error&lt;/dt&gt;
&lt;dd&gt;part of a system’s state that may lead to a failure&lt;/dd&gt;
&lt;dt&gt;Failure&lt;/dt&gt;
&lt;dd&gt;a system does not operate according to its specifications&lt;/dd&gt;
&lt;/dl&gt;
&lt;ul&gt;
&lt;li&gt;Faults lead to errors, errors lead to failures.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="types-of-failures" class="relative group"&gt;Types of Failures &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#types-of-failures" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Crash failure&lt;/dt&gt;
&lt;dd&gt;A server halts, but is working correctly until it halts&lt;/dd&gt;
&lt;dt&gt;Omission failure&lt;/dt&gt;
&lt;dd&gt;A server fails to respond to incoming requests, fails to receive incoming messages or fails to send messages&lt;/dd&gt;
&lt;dt&gt;Timing failure&lt;/dt&gt;
&lt;dd&gt;A server&amp;rsquo;s response lies outside the specified time interval&lt;/dd&gt;
&lt;dt&gt;Response failure&lt;/dt&gt;
&lt;dd&gt;The server&amp;rsquo;s response is incorrect, value of the response is wrong, or server deviates from the correct flow of control&lt;/dd&gt;
&lt;dt&gt;Arbitrary (Byzantine) Failure&lt;/dt&gt;
&lt;dd&gt;A server may produce arbitrary responses at arbitrary times&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="k-fault-tolerance" class="relative group"&gt;(k)-Fault-Tolerance &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#k-fault-tolerance" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h2 id="fail-silent" class="relative group"&gt;Fail-Silent &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#fail-silent" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;[
n=k+1
]
Replica produces either correct responses or no response at all.&lt;/p&gt;</description></item><item><title>Logical Time</title><link>https://johannes.arnold.onl/page/notes/distributed-systems/logical-time/</link><pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/distributed-systems/logical-time/</guid><description>&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Time is a canonical way of establishing ordering between events&lt;/li&gt;
&lt;li&gt;In distributed systems, time is not a global variable because machines have independently running clocks&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h1 id="lamport-timestamps" class="relative group"&gt;Lamport Timestamps &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#lamport-timestamps" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Propose we have two events, (A) and (B). Lamport timestamps allow for a &amp;ldquo;happens before&amp;rdquo; relationship, (A \to B.)&lt;/p&gt;
&lt;p&gt;Each node (p) maintains a counter (LT(p)), which gets incremented when (p) performs an action. When (p) sends a message, it includes (LT(p)). A recieving node (q) then updates its own counter to (\max{LT(p),~LT(q)})&lt;/p&gt;</description></item><item><title>Fixing Silverblue Permissions</title><link>https://johannes.arnold.onl/post/2023/fixing-silverblue-permissions/</link><pubDate>Sat, 09 Sep 2023 12:51:09 +0200</pubDate><guid>https://johannes.arnold.onl/post/2023/fixing-silverblue-permissions/</guid><description>Fixing an annoying issue with logrotate</description></item><item><title>Diskrete Strukturen</title><link>https://johannes.arnold.onl/page/notes/ds/_index.de/</link><pubDate>Wed, 02 Aug 2023 15:14:17 +0200</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/_index.de/</guid><description>&lt;p&gt;Notizen und Lösungen zum Kurs &lt;em&gt;Diskrete Strukturen&lt;/em&gt; vom &lt;em&gt;Institut für Algebra, Zahlentheorie und Diskrete Mathematik.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Integration</title><link>https://johannes.arnold.onl/page/notes/analysis/integration.de/</link><pubDate>Thu, 27 Jul 2023 12:39:45 +0200</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/integration.de/</guid><description>&lt;h2 id="partielle-integration" class="relative group"&gt;Partielle Integration &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#partielle-integration" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;\begin{equation}
\int u~dv \implies uv - \int vdu
\end{equation}&lt;/p&gt;
&lt;h3 id="beispiel" class="relative group"&gt;Beispiel &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#beispiel" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;\begin{equation}
\int x \arctan{x}&lt;del&gt;dx = \int (\arctan{x}) (x&lt;/del&gt;dx)
\end{equation}&lt;/p&gt;
&lt;p&gt;Wir wählen \(u = \arctan{x}\) und \(dv = x~dx\).&lt;/p&gt;
&lt;p&gt;Somit gilt \(du = \frac{1}{1+x^2}\) und \(v = \frac{x^2}{2}\).&lt;/p&gt;
&lt;p&gt;\begin{align}
\frac{x^2}{2}\cdot \arctan{x} - \int \frac{1}{1+x^2} \cdot \frac{x^2}{2}&lt;del&gt;dx\\
\frac{x^2}{2}\cdot \arctan{x} - \frac{1}{2} \int \frac{1}{1+x^2} \cdot x^2&lt;/del&gt;dx\\
\end{align}&lt;/p&gt;</description></item><item><title>Lagrange-Multiplikator</title><link>https://johannes.arnold.onl/page/notes/analysis/lagrange.de/</link><pubDate>Thu, 27 Jul 2023 08:21:48 +0200</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/lagrange.de/</guid><description>&lt;p&gt;Suche von Extremstellen einer Funktion \(f\) mit der Nebenbedingung \(s\).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;\(f\) muss stetig sein&lt;/li&gt;
&lt;li&gt;\(s\) muss eine kompakte Menge darstellen können (also abgeschlossen &amp;amp; beschränkt)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Dann gilt
\begin{equation}
\mathcal{L} (x_0, y_0, \lambda_0) = \nabla f \cdot \lambda \nabla g
\end{equation}
beziehungsweise um den Nullpunkt zu finden
\begin{equation}
\nabla f = \lambda \nabla g
\end{equation}&lt;/p&gt;</description></item><item><title>Contact</title><link>https://johannes.arnold.onl/page/contact/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/contact/</guid><description>My contact information</description></item><item><title>Curriculum Vitae</title><link>https://johannes.arnold.onl/cv/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/cv/</guid><description>&lt;h1 id="about" class="relative group"&gt;About &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#about" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Name&lt;/dt&gt;
&lt;dd&gt;Johannes Karl Arnold&lt;/dd&gt;
&lt;dt&gt;Birthday&lt;/dt&gt;
&lt;dd&gt;1998-05-20 (28 years)&lt;/dd&gt;
&lt;dt&gt;Languages Spoken&lt;/dt&gt;
&lt;dd&gt;German (native)&lt;/dd&gt;
&lt;dd&gt;English (native)&lt;/dd&gt;
&lt;dt&gt;Contact&lt;/dt&gt;
&lt;dd&gt;&lt;a href="mailto:johannes@arnold.onl"&gt;johannes@arnold.onl&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;hr&gt;
&lt;h1 id="employment-history" class="relative group"&gt;Employment History &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#employment-history" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;table&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;h2&gt;Linux Consultant and Trainer&lt;/h2&gt;&lt;/td&gt;
 &lt;td&gt;04/2026&amp;ndash;&lt;em&gt;Present&lt;/em&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;B1 Systems GmbH&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;EU (Hybrid)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td colspan="2"&gt;
 &lt;div class="cv-entry-body"&gt;
 &lt;p&gt;Consultant specializing in enterprise Linux platforms and open-source technologies with a focus on digital sovereignty. Work with public sector and commercial customers across Germany and the European Union, implementing new and improving upon existing Linux infrastructure.&lt;/p&gt;</description></item><item><title>Moin</title><link>https://johannes.arnold.onl/_index.de/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/_index.de/</guid><description>&lt;h1 id="moin" class="relative group"&gt;Moin! &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#moin" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Mein Name ist Johannes, und ich bin Online als &lt;code&gt;j0hax&lt;/code&gt; unterwegs.&lt;/p&gt;
&lt;h1 id="über-mich" class="relative group"&gt;Über Mich &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#%c3%bcber-mich" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;dl&gt;
&lt;dt&gt;Geboren&lt;/dt&gt;
&lt;dd&gt;Houston, Texas&lt;/dd&gt;
&lt;dt&gt;Alter&lt;/dt&gt;
&lt;dd&gt;28 jahre&lt;/dd&gt;
&lt;dt&gt;Spitzname&lt;/dt&gt;
&lt;dd&gt;Carl (&lt;a href="https://youtu.be/kZUPCB9533Y" target="_blank" rel="noreferrer"&gt;Like the llama&lt;/a&gt;)&lt;/dd&gt;
&lt;dt&gt;Ort&lt;/dt&gt;
&lt;dd&gt;Hannover, Germany&lt;/dd&gt;
&lt;dt&gt;Beruf&lt;/dt&gt;
&lt;dd&gt;Linux Consultant&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;&lt;strong&gt;PS:&lt;/strong&gt; This website and its contents are under the &lt;a href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noreferrer"&gt;CC BY-SA 4.0&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Tools</title><link>https://johannes.arnold.onl/page/edc/tools/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/edc/tools/</guid><description>&lt;h1 id="mercator-k55k" class="relative group"&gt;Mercator K55K &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#mercator-k55k" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Minimal yet useful, flat yet indestructible. This has been my go-to pocket knife for quite a few years now. I&amp;rsquo;ve used it to open deliveries of equipment and beer bottles up to capturing flags.&lt;/p&gt;</description></item><item><title>Watches</title><link>https://johannes.arnold.onl/page/edc/watches/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/edc/watches/</guid><description>&lt;p&gt;I currently have a couple watches in my daily rotation:&lt;/p&gt;
&lt;h1 id="nomos-tangente" class="relative group"&gt;Nomos Tangente &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#nomos-tangente" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;This is my go-to watch. Dressy yet minimalistic enough for &amp;ldquo;normal&amp;rdquo; occasions like university classes or travelling. Even though the design is approaching 100 years old, the minimalistic look makes it subtle and compatible with many outfits.&lt;/p&gt;
&lt;p&gt;Sometimes I do miss the date complication, though.&lt;/p&gt;
&lt;h1 id="seiko-snk809" class="relative group"&gt;Seiko SNK809 &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#seiko-snk809" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;An excellent bang for the buck in the mechanical watch world. I switched out the metal bracelet for a green/yellow NATO strap, giving it an even more rugged, militaristic look.&lt;/p&gt;</description></item><item><title>Writing Instruments</title><link>https://johannes.arnold.onl/page/edc/writing/</link><pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/edc/writing/</guid><description>&lt;p&gt;Having grown up in the US and spending my summers in Germany, I learned to appreciate fountain pens at an early age. This developed into an appreciation of fine writing later on. While a lot of people will just use whatever disposable ballpoint they have lying around, I think it&amp;rsquo;s nice to have a small collection of pens you actually enjoy using again and again over years.&lt;/p&gt;
&lt;h1 id="kaweco-brass-sport-fountain-pen" class="relative group"&gt;Kaweco Brass Sport Fountain pen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#kaweco-brass-sport-fountain-pen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;While I do have an extensive fountain pen collection, this one is my go-to pen. It&amp;rsquo;s compact yet heavy. Purchased in June 2022, the brass has developed a beautiful patina.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;</description></item><item><title>(Passive) Reinforcement Learning</title><link>https://johannes.arnold.onl/page/notes/ai/rl/</link><pubDate>Wed, 05 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ai/rl/</guid><description>&lt;p&gt;Similar to a &lt;a href="https://johannes.arnold.onl/page/notes/ai/mdp/"&gt;Markov Decision Problem&lt;/a&gt; with states \(s \in S\) and actions \(a \in A\), with \(T(s, a, s^\prime)\) and \(R(s, a, s^\prime)\) &lt;strong&gt;being unknown!&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;States and actions must be tried out&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="passive-reinforcement-learning" class="relative group"&gt;Passive Reinforcement Learning &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#passive-reinforcement-learning" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;The agent learns from its experiences.&lt;/p&gt;
&lt;h2 id="model-based" class="relative group"&gt;Model-Based &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#model-based" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 id="step-1-learn-empirical-mdp-model" class="relative group"&gt;Step 1: Learn empirical MDP model &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#step-1-learn-empirical-mdp-model" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Count outcomes \(s^\prime\) for each \(s, a\)&lt;/li&gt;
&lt;li&gt;Normalize to give an estimate \(\hat{T}(s, a, s^\prime)\)&lt;/li&gt;
&lt;li&gt;Discover each \(\hat{R}(s, a, s^\prime)\) when we experience \((s, a, s^\prime)\)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="step-2-solve-the-learned-mdp" class="relative group"&gt;Step 2: Solve the learned MDP &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#step-2-solve-the-learned-mdp" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;Use value iteration as with normal MDPs. Repeat steps one and two as needed.&lt;/p&gt;</description></item><item><title>Algebraische Strukturen</title><link>https://johannes.arnold.onl/page/notes/ds/algebra.de/</link><pubDate>Mon, 03 Jul 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/algebra.de/</guid><description>&lt;h1 id="teilbarkeit" class="relative group"&gt;Teilbarkeit &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#teilbarkeit" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h2 id="quersummenregel" class="relative group"&gt;Quersummenregel &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#quersummenregel" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Der ultimative Life-Hack, wenn man bei der Primfaktorzerlegung stecken ist.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eine Zahl ist durch \(3\) teilbar, wenn die Quersumme durch \(3\) teilbar ist.&lt;/li&gt;
&lt;li&gt;Eine Zahl ist durch \(9\) teilbar, wenn die Quersumme durch \(9\) teilbar ist.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Beispiel:&lt;/strong&gt; auf erstem Blick erscheint \(441\) wie eine Primzahl, da aber \(4+4+1 = 9\) ist die Zahl durch \(9\) teilbar.&lt;/p&gt;</description></item><item><title>Markov Decision Problems</title><link>https://johannes.arnold.onl/page/notes/ai/mdp/</link><pubDate>Wed, 21 Jun 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ai/mdp/</guid><description>&lt;p&gt;Markov Decision Processes consist of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set of states \(s_n \in S\)&lt;/li&gt;
&lt;li&gt;Start state \(s_0\)&lt;/li&gt;
&lt;li&gt;Set of actions \(a_n \in A\)&lt;/li&gt;
&lt;li&gt;Transition functions \(T(s,a,s^\prime)\)
&lt;ul&gt;
&lt;li&gt;Gives the probability of transitioning from state \(s\) to \(s^\prime\) when taking action \(a\)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Reward functions \(R(s,a,s^\prime)\)
&lt;ul&gt;
&lt;li&gt;Typically, a positive value is &amp;ldquo;good,&amp;rdquo; a negativ is &amp;ldquo;punishment&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Discount factor \(\gamma\)
&lt;ul&gt;
&lt;li&gt;Coefficient that determines how strongly the next iteration is influenced by the previous&lt;/li&gt;
&lt;li&gt;Helps the algorithms converge&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;MDP quantities are&lt;/p&gt;</description></item><item><title>Graphentheorie</title><link>https://johannes.arnold.onl/page/notes/ds/graphs.de/</link><pubDate>Mon, 12 Jun 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/graphs.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Satz 3.5.&lt;/strong&gt; Sei \(G = (E, K)\) ein (Multi-)Graph. Dann gilt:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;\(\sum_{v \in E} \deg{v} = 2 |K|\)&lt;/li&gt;
&lt;li&gt;Die Anzahl der Ecken mit ungeradem Grad ist gerade.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;h2 id="zusammenhängende-graphen" class="relative group"&gt;Zusammenhängende Graphen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#zusammenh%c3%a4ngende-graphen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Definition 3.10.&lt;/strong&gt; Ein (Multi-)Graph \(G = (E, K)\) heißt &lt;em&gt;zusammenhängend,&lt;/em&gt; wenn je zwei Ecken \(u, v \in E\) durch einen Weg verbunden werden können, d.h. es gibt einen Weg \(u_1, \dots, u_s\)
in G mit \(u_1 = u\) und \(u_s = v\).&lt;/p&gt;</description></item><item><title>SML Example</title><link>https://johannes.arnold.onl/page/notes/compiler-theory/sml/</link><pubDate>Tue, 06 Jun 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/compiler-theory/sml/</guid><description>&lt;p&gt;Following Code contains solutions in part to the excercises (&lt;code&gt;traverse&lt;/code&gt;) and the exam from the Summersemester 2022 (&lt;code&gt;print&lt;/code&gt;). It is meant to serve as a small guide to SML syntax and data types.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sml" data-lang="sml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Helper function to recursively concatenate a list*)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fun&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;concat&lt;/span&gt; list1 list2 = foldr (&lt;span style="color:#66d9ef"&gt;fn&lt;/span&gt; (head, tail) =&amp;gt; head::tail) list1 list2;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Define the tree datatype *)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;datatype&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;&amp;#39;a&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;tree&lt;/span&gt; = &lt;span style="color:#a6e22e"&gt;empty&lt;/span&gt; | &lt;span style="color:#a6e22e"&gt;node&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;of&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;&amp;#39;a&lt;/span&gt; * &lt;span style="color:#a6e22e"&gt;&amp;#39;a&lt;/span&gt; tree * &lt;span style="color:#a6e22e"&gt;&amp;#39;a&lt;/span&gt; tree;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Declare a tree for demonstration purporses *)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;val&lt;/span&gt; t = node(&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,node(&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,node(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,empty,node(&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,empty,empty)),empty),node(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;,empty,empty));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Recursively count nodes of a tree *)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fun&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;nodes&lt;/span&gt; (empty) = &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;| &lt;span style="color:#a6e22e"&gt;nodes&lt;/span&gt; (node (_, t1, t2)) = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; + nodes t1 + nodes t2;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Recursively traverse a tree, appending values to the list *)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fun&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;traverse&lt;/span&gt; (empty) = []
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | &lt;span style="color:#a6e22e"&gt;traverse&lt;/span&gt; (node (v, t1, t2)) = concat (concat (traverse t2) (traverse t1)) [v];
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;(* Recurse the tree, printing nodes in a human-readable form *)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fun&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;print&lt;/span&gt; (empty) = &lt;span style="color:#e6db74"&gt;&amp;#34;_&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; | &lt;span style="color:#a6e22e"&gt;print&lt;/span&gt; (node (v, t1, t2)) = &lt;span style="color:#e6db74"&gt;&amp;#34;(&amp;#34;&lt;/span&gt; ^ (print t1) ^ &lt;span style="color:#e6db74"&gt;&amp;#34;, &amp;#34;&lt;/span&gt; ^ (Int.toString v) ^ &lt;span style="color:#e6db74"&gt;&amp;#34;, &amp;#34;&lt;/span&gt; ^ (print t2) ^ &lt;span style="color:#e6db74"&gt;&amp;#34;)&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;traverse t;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;print t;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The outputs of &lt;code&gt;traverse t;&lt;/code&gt; and &lt;code&gt;print t;&lt;/code&gt; respectively yield&lt;/p&gt;</description></item><item><title>How Sudoku saved an Experiment</title><link>https://johannes.arnold.onl/post/2023/how-sudoku-saved-an-experiment/</link><pubDate>Tue, 16 May 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/post/2023/how-sudoku-saved-an-experiment/</guid><description>Theoretical CS has its real-life applications after all</description></item><item><title>Rekursionsgleichungen</title><link>https://johannes.arnold.onl/page/notes/ds/recursive.de/</link><pubDate>Mon, 15 May 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/recursive.de/</guid><description>&lt;p&gt;Der Unterschied zwischen &lt;strong&gt;homogen&lt;/strong&gt; und &lt;strong&gt;inhomogen&lt;/strong&gt; ist nur, dass eine inhomogenene Rekursionsgleichung eine Konstante hinzugefügt hat. Beispielsweise ist \(x_n = 2 x_{n-1} + 3\) inhomogen.&lt;/p&gt;
&lt;p&gt;Die &lt;strong&gt;Ordnung&lt;/strong&gt; wird durch die anzahl der \(x_{k-\dots}\) bestimmt. Beispielsweise ist \(x_n = 3 x_{n-1} + x_{n-2}\) eine Rekursionsgleichung der 2. Ordnung.&lt;/p&gt;
&lt;h1 id="erste-ordnung-lösen" class="relative group"&gt;Erste Ordnung lösen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#erste-ordnung-l%c3%b6sen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Sei \(x_0 = b_0, x_n = c x_{n-1} +b_1\) für \(n \geq 1\). Dann gilt:
\begin{equation}
x_n =
\begin{cases}
c^n b_0 &amp;amp; b_1 = 0\\
b_0 + n b_1 &amp;amp; c=1\\
c^n b_0 + \frac{c^n - 1}{c-1} b_1 &amp;amp; c \neq 1
\end{cases}
\end{equation}&lt;/p&gt;</description></item><item><title>Types</title><link>https://johannes.arnold.onl/page/notes/compiler-theory/types/</link><pubDate>Fri, 12 May 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/compiler-theory/types/</guid><description>&lt;p&gt;Type systems help to apply and check for a syntactically consistent interpretation. They rule out programs that do not make any sense and allow certain operations while disallowing others.&lt;/p&gt;
&lt;h1 id="typing-relations" class="relative group"&gt;Typing Relations &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#typing-relations" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;The Typing Relation for arithmetic expressions is the smallest binary relation between terms and types satisfying all instances of the typing rules.&lt;/p&gt;
&lt;p&gt;A term \(t\) is &lt;strong&gt;typable&lt;/strong&gt; or &lt;strong&gt;well-typed&lt;/strong&gt; if there is some \(T\) such that \(t:T\).&lt;/p&gt;</description></item><item><title>Kombinatorik &amp; Zählprobleme</title><link>https://johannes.arnold.onl/page/notes/ds/counting.de/</link><pubDate>Mon, 08 May 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/counting.de/</guid><description>&lt;h1 id="inklusion-und-exklusion" class="relative group"&gt;Inklusion und Exklusion &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#inklusion-und-exklusion" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;h2 id="für-zwei-mengen" class="relative group"&gt;Für zwei Mengen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#f%c3%bcr-zwei-mengen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;\begin{equation}
|A \cup B| = |A| + |B| - |A \cap B|
\end{equation}&lt;/p&gt;
&lt;h2 id="für-drei-mengen" class="relative group"&gt;Für drei Mengen &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#f%c3%bcr-drei-mengen" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;\begin{equation}
|A \cup B \cup C| = |A| + |B| + |C| - |A \cap B| - |A \cap C| - |B \cap C| + |A \cap B \cap C|
\end{equation}&lt;/p&gt;</description></item><item><title>Stirling Zahlen</title><link>https://johannes.arnold.onl/page/notes/ds/stirling.de/</link><pubDate>Mon, 08 May 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ds/stirling.de/</guid><description>&lt;h1 id="der-ersten-art" class="relative group"&gt;&amp;hellip;der Ersten Art &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#der-ersten-art" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;Definition 1.18&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Für \(n \in \mathbb{N}, k \in \mathbb{N}_0\) sei \(s_{n,k}\) die Anzahl der Permutationen in \(S_n\) mit genau \(k\) Zykeln in der Zykelschreibweise. Außerdem setzen wir \(s_{0,0} = 1.\)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="eigenschaften" class="relative group"&gt;Eigenschaften &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#eigenschaften" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Proposition 1.19&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Für \(n &amp;lt; k\) ist \(s_{n,k} = 0.\)&lt;/li&gt;
&lt;li&gt;\(s_{n,0} = 0\) und \(s_{n,n} = 1\) für alle \(n \in \mathbb{N}.\)&lt;/li&gt;
&lt;li&gt;Für alle \(n \in \mathbb{N}\) gilt:
&lt;ol&gt;
&lt;li&gt;\(s_{n,1} = (n − 1)!\)&lt;/li&gt;
&lt;li&gt;\(s_{n,n−1} = \binom{n}{2}\)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;\(\sum_{k=1}^n s_{n,k} = n!\)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="code-beispiel" class="relative group"&gt;Code Beispiel &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#code-beispiel" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#!/bin/env python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; math &lt;span style="color:#f92672"&gt;import&lt;/span&gt; comb, factorial
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;stirling&lt;/span&gt;(n: int, k: int) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; int:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; n &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; k:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; k &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; n &lt;span style="color:#f92672"&gt;==&lt;/span&gt; k:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; k &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; factorial(n &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; k &lt;span style="color:#f92672"&gt;==&lt;/span&gt; n &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; comb(n, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; stirling(n &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, k &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;+&lt;/span&gt; (n &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; stirling(n &lt;span style="color:#f92672"&gt;-&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, k)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; __name__ &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;__main__&amp;#34;&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; n &lt;span style="color:#f92672"&gt;=&lt;/span&gt; int(input())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; k &lt;span style="color:#f92672"&gt;=&lt;/span&gt; int(input())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; s &lt;span style="color:#f92672"&gt;=&lt;/span&gt; stirling(n, k)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; print(s)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id="der-zweiten-art" class="relative group"&gt;&amp;hellip;der Zweiten Art &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#der-zweiten-art" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Gegeben einer Menge \(\{x_1, \dots x_n\}\), zähle die Anzahl von Möglichkeiten diese auf \(k\) Partitionen aufzuteilen.&lt;/p&gt;</description></item><item><title>Lambda Calculus</title><link>https://johannes.arnold.onl/page/notes/compiler-theory/lambdacalculus/</link><pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/compiler-theory/lambdacalculus/</guid><description>&lt;p&gt;Formal system introduced by Alonzo Church in 1930. One of the two approaches that lead to the notion of an Algorithm, the other being the Turing Machine.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Variable&lt;/dt&gt;
&lt;dd&gt;\(x\)&lt;/dd&gt;
&lt;dt&gt;Abstraction&lt;/dt&gt;
&lt;dd&gt;\(\lambda x . t\)&lt;/dd&gt;
&lt;dt&gt;Application&lt;/dt&gt;
&lt;dd&gt;\(t~t\)&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="currying" class="relative group"&gt;Currying &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#currying" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Lambda calculus permits only functions with a single argument.
\begin{align}
f:(X \times Y) \mapsto Z &amp;amp;&amp;amp; \text{curry}(f): X \mapsto Y \mapsto Z
\end{align}
Currying &lt;strong&gt;allows for Partial Application,&lt;/strong&gt; which fixes the number of arguments of a function, yielding a new function with smaller arity. Example for \(f(x, y) = \lambda x . \lambda y . (x * y)\):
\begin{align}
(\lambda x . \lambda y . (x * y))~2 &amp;amp;= \lambda y . (2 * y)
\end{align}
By only applying one argument, to a multiplication function, you receive a function that performs a constant operation on one argument.&lt;/p&gt;</description></item><item><title>Search</title><link>https://johannes.arnold.onl/page/notes/ai/search/</link><pubDate>Thu, 27 Apr 2023 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/ai/search/</guid><description>&lt;h2 id="heuristics-of-aast" class="relative group"&gt;Heuristics of \(A^\ast\) &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#heuristics-of-aast" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Admissability:&lt;/strong&gt; heuristic cost is less than or equal to the actual cost to the goal.&lt;/p&gt;
&lt;p&gt;\begin{equation}
h(A) \leq \text{actual cost from A to G}
\end{equation}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt; heuristic &amp;ldquo;arc&amp;rdquo; cost is less than or equal to the actual cost of each arc.&lt;/p&gt;
&lt;p&gt;\begin{equation}
h(A) - h(C) \leq \text{cost}&lt;del&gt;A&lt;/del&gt;\text{to}~C
\end{equation}&lt;/p&gt;
&lt;h2 id="alpha--beta-pruning" class="relative group"&gt;\(\alpha / \beta\) Pruning &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#alpha--beta-pruning" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;An extension of the Minimax algorithm. It is a &lt;strong&gt;depth-first-search&lt;/strong&gt; which saves time and space by &amp;ldquo;pruning&amp;rdquo; branches where there already are established minimums or maximums.&lt;/p&gt;</description></item><item><title>WPA3 Troubles</title><link>https://johannes.arnold.onl/post/2021/wpa3-troubles/</link><pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/post/2021/wpa3-troubles/</guid><description>Addressing a WPA3 Bug with OpenWRT and Linux</description></item><item><title>Initial Commit</title><link>https://johannes.arnold.onl/post/2021/initial-commit/</link><pubDate>Wed, 31 Mar 2021 16:19:01 +0200</pubDate><guid>https://johannes.arnold.onl/post/2021/initial-commit/</guid><description>My first blog post</description></item><item><title>Analysis</title><link>https://johannes.arnold.onl/page/notes/analysis/_index.de/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/analysis/_index.de/</guid><description>&lt;p&gt;Notizen und Lösungen vom Kurs &lt;em&gt;Mathematik 2: Analysis.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>McCabe-Metrik</title><link>https://johannes.arnold.onl/page/notes/swq/metriken/mccabe/index.de/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/metriken/mccabe/index.de/</guid><description>&lt;p&gt;Die Idee der McCabe Metrik, ist dass der Programmablauf (Programmverzweigungen und Schleifen) das Programm komplex machen, nicht zwingend die LOC. Egal ob man durch Programmcode oder Ablaufgraph misst, sollten beide Techniken immer das gleiche Ergebnis liefern.&lt;/p&gt;
&lt;h1 id="anweisung-vs-bedingung" class="relative group"&gt;Anweisung vs. Bedingung &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#anweisung-vs-bedingung" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;p&gt;Wichtig zu wissen, ist das ähnlicher Code je nach Kontext als Anweisung oder Bedingung zählt:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;public static boolean test() {
 return ((1 == 1) &amp;amp;&amp;amp; (2 == 2) || (1 == 5));
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;hat eine McCabe-Metrik von &lt;strong&gt;1,&lt;/strong&gt; da ein Wert zurückgegeben wird.&lt;/p&gt;</description></item><item><title>Metriken</title><link>https://johannes.arnold.onl/page/notes/swq/metriken/_index.de/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/metriken/_index.de/</guid><description>&lt;dl&gt;
&lt;dt&gt;Softwaremetrik&lt;/dt&gt;
&lt;dd&gt;Funktion, die eine Software-Einheit in einen Zahlenwert abbildet. Dieser Wert ist interpretierbar als der Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit.&lt;/dd&gt;
&lt;/dl&gt;</description></item><item><title>Notizen</title><link>https://johannes.arnold.onl/page/notes/_index.de/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/_index.de/</guid><description>&lt;p&gt;Die folgenden Abschnitte enthalten Notizen zu den einzelnen Informatikkursen, die ich während meiner Zeit an der Leibniz Universität Hannover belegt habe.&lt;/p&gt;
&lt;p&gt;Bitte bedenke dabei:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ich werde weitere Notizen hochladen, sobald ich die Zeit dazu finde. Dieser Abschnitt ist bei weitem nicht vollständig.&lt;/li&gt;
&lt;li&gt;Das Material ist in gemischten Sprachen. Im Menü kann man die Sprachen wechseln.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Qualitätsaspekte</title><link>https://johannes.arnold.onl/page/notes/swq/aspekte/_index.de/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://johannes.arnold.onl/page/notes/swq/aspekte/_index.de/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Eigenschaften einer Einheit, anhand derer ihre Qualität beschrieben und beurteilt wird.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;dl&gt;
&lt;dt&gt;Qualitätsziel&lt;/dt&gt;
&lt;dd&gt;Angestrebtes Qualitätsaspekt&lt;/dd&gt;
&lt;dt&gt;Qualitätsanforderung&lt;/dt&gt;
&lt;dd&gt;Ein oder mehrere Qualitätsziele&lt;/dd&gt;
&lt;dt&gt;Qualitätsmetrik&lt;/dt&gt;
&lt;dd&gt;Maß für Ausprägung eines Qualitätsaspekts&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id="qualitätspolitik" class="relative group"&gt;Qualitätspolitik &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#qualit%c3%a4tspolitik" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;&amp;hellip;Rahmen aller Aktivitäten im Qualitätsmanagement&amp;hellip;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Siehe Beispiel dazu aus Übung 6. Wenn ein Unternehmen Fehlerhafte Software liefert, ist der Programmierer sowie das Management verantwortlich. Der Autor des Codes soll nicht der Tester sein, da der Autor voreingenommen ist: gefunde Fehler sind ein Erfolg für den Tester, und zeigen nicht dass das Programm &amp;raquo;gut läuft&amp;laquo;.&lt;/p&gt;</description></item></channel></rss>