Files
felixfoertsch.de/Content/Archive/220123-ff.de v10 felixfoertsch.github.io/_site/feed.xml
T

571 lines
95 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://felixfoertsch.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://felixfoertsch.github.io/" rel="alternate" type="text/html" /><updated>2024-03-16T14:51:11+00:00</updated><id>https://felixfoertsch.github.io/feed.xml</id><title type="html">felixfoertsch.de</title><subtitle></subtitle><author><name>Felix Förtsch</name></author><entry><title type="html">Apple Colors in SCSS</title><link href="https://felixfoertsch.github.io/2020/08/05/Apple-Colors.html" rel="alternate" type="text/html" title="Apple Colors in SCSS" /><published>2020-08-05T00:00:00+00:00</published><updated>2020-08-05T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2020/08/05/Apple-Colors</id><content type="html" xml:base="https://felixfoertsch.github.io/2020/08/05/Apple-Colors.html"><![CDATA[<p>Colors have a big impact on how software looks. Personally, I think macOS and iOS are beautiful and the colors are very well selected. Since I am not a designer, but I want to understand <strong>why</strong> these systems always looks so good, I started designing this website using the Apple colors. The first step I took was creating variables for the Apple colors from the <a href="https://developer.apple.com/design/human-interface-guidelines/">Human Interface Guidelines</a> (<a href="https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color/">iOS</a>/<a href="https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/color/">macOS</a>).</p>
<p>I published them on GitHub as gists so you can use them, too. Its just the raw variables; but I could not find them anywhere else in this SCSS form. Gist <a href="https://gist.github.com/felixfoertsch/52904ab569521158dd8494024c0a5d77">macOS-colors-dark.scss</a>, <a href="https://gist.github.com/felixfoertsch/36922ee9a74d9bd0c0887f62cecb7041">macOS-colors-light.scss</a>, <a href="https://gist.github.com/felixfoertsch/69dd59c9e541788056ee6c70928c3769">iOS-colors-dark.scss</a>, <a href="https://gist.github.com/felixfoertsch/e4c73a673bd769218c39c17ac09127aa">iOS-colors-light.scss</a>.</p>
<p>Read more for the actual variables.</p>
<!-- more -->
<div class="language-scss highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// macOS-colors-dark.scss</span>
<span class="nv">$macOS-systemBlue-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">10</span><span class="o">,</span> <span class="m">132</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemBrown-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">172</span><span class="o">,</span> <span class="m">142</span><span class="o">,</span> <span class="m">104</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemGray-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">152</span><span class="o">,</span> <span class="m">152</span><span class="o">,</span> <span class="m">157</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemGreen-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">50</span><span class="o">,</span> <span class="m">215</span><span class="o">,</span> <span class="m">75</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemIndigo-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">94</span><span class="o">,</span> <span class="m">92</span><span class="o">,</span> <span class="m">230</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemOrange-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">159</span><span class="o">,</span> <span class="m">10</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemPink-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">55</span><span class="o">,</span> <span class="m">95</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemPurple-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">191</span><span class="o">,</span> <span class="m">90</span><span class="o">,</span> <span class="m">242</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemRed-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">69</span><span class="o">,</span> <span class="m">58</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemTeal-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">100</span><span class="o">,</span> <span class="m">210</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemYellow-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">214</span><span class="o">,</span> <span class="m">10</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-alternateSelectedControl-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">88</span><span class="o">,</span> <span class="m">208</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-alternateSelectedControlText-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-controlBackground-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">30</span><span class="o">,</span> <span class="m">30</span><span class="o">,</span> <span class="m">30</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-controlText-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-disabledControlText-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-grid-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.1</span><span class="p">);</span>
<span class="nv">$macOS-headerText-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-highlight-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">180</span><span class="o">,</span> <span class="m">180</span><span class="o">,</span> <span class="m">180</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-labelColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-linkColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">65</span><span class="o">,</span> <span class="m">156</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-placeholderTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-quaternaryLabelColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.1</span><span class="p">);</span>
<span class="nv">$macOS-secondaryLabelColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.5</span><span class="p">);</span>
<span class="nv">$macOS-selectedContentBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">88</span><span class="o">,</span> <span class="m">208</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedControlColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">63</span><span class="o">,</span> <span class="m">99</span><span class="o">,</span> <span class="m">109</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedControlTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-selectedMenuItemTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedTextBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">63</span><span class="o">,</span> <span class="m">99</span><span class="o">,</span> <span class="m">139</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-separatorColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.1</span><span class="p">);</span>
<span class="nv">$macOS-shadowColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="p">);</span>
<span class="nv">$macOS-tertiaryLabelColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-textBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">30</span><span class="o">,</span> <span class="m">30</span><span class="o">,</span> <span class="m">30</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-textColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-underPageBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">40</span><span class="o">,</span> <span class="m">40</span><span class="o">,</span> <span class="m">40</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedContentBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">70</span><span class="o">,</span> <span class="m">70</span><span class="o">,</span> <span class="m">70</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedTextBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">70</span><span class="o">,</span> <span class="m">70</span><span class="o">,</span> <span class="m">70</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-windowBackgroundColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">50</span><span class="o">,</span> <span class="m">50</span><span class="o">,</span> <span class="m">50</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-windowFrameTextColor-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
</code></pre></div></div>
<div class="language-scss highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// macOS-colors-light.scss</span>
<span class="nv">$macOS-systemBlue</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">122</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemBrown</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">162</span><span class="o">,</span> <span class="m">132</span><span class="o">,</span> <span class="m">94</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemGray</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">142</span><span class="o">,</span> <span class="m">142</span><span class="o">,</span> <span class="m">147</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemGreen</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">40</span><span class="o">,</span> <span class="m">205</span><span class="o">,</span> <span class="m">65</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemIndigo</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">88</span><span class="o">,</span> <span class="m">86</span><span class="o">,</span> <span class="m">214</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemOrange</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">149</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemPink</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">45</span><span class="o">,</span> <span class="m">85</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemPurple</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">175</span><span class="o">,</span> <span class="m">82</span><span class="o">,</span> <span class="m">222</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemRed</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">59</span><span class="o">,</span> <span class="m">48</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemTeal</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">90</span><span class="o">,</span> <span class="m">200</span><span class="o">,</span> <span class="m">250</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-systemYellow</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">204</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-alternateSelectedControl</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">99</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-alternateSelectedControlText</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-controlBackground</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-controlText</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-disabledControlText</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-grid</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">204</span><span class="o">,</span> <span class="m">204</span><span class="o">,</span> <span class="m">204</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-headerText</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-highlight</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-labelColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-linkColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">104</span><span class="o">,</span> <span class="m">218</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-placeholderTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-quaternaryLabelColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.1</span><span class="p">);</span>
<span class="nv">$macOS-secondaryLabelColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span> <span class="o">,</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.5</span><span class="p">);</span>
<span class="nv">$macOS-selectedContentBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">99</span><span class="o">,</span> <span class="m">225</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedControlColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">179</span><span class="o">,</span> <span class="m">215</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedControlTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
<span class="nv">$macOS-selectedMenuItemTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedTextBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">179</span><span class="o">,</span> <span class="m">215</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-selectedTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-separatorColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.1</span><span class="p">);</span>
<span class="nv">$macOS-shadowColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-tertiaryLabelColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$macOS-textBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-textColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-underPageBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">150</span><span class="o">,</span> <span class="m">150</span><span class="o">,</span> <span class="m">150</span><span class="o">,</span> <span class="m">0</span><span class="mi">.9</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedContentBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">220</span><span class="o">,</span> <span class="m">220</span><span class="o">,</span> <span class="m">220</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedTextBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">220</span><span class="o">,</span> <span class="m">220</span><span class="o">,</span> <span class="m">220</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-unemphasizedSelectedTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-windowBackgroundColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">236</span><span class="o">,</span> <span class="m">236</span><span class="o">,</span> <span class="m">236</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$macOS-windowFrameTextColor</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="mi">.8</span><span class="p">);</span>
</code></pre></div></div>
<div class="language-scss highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// iOS-colors-dark.scss</span>
<span class="nv">$iOS-systemBlue-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">10</span><span class="o">,</span> <span class="m">132</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGreen-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">48</span><span class="o">,</span> <span class="m">209</span><span class="o">,</span> <span class="m">88</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemIndigo-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">94</span><span class="o">,</span> <span class="m">92</span><span class="o">,</span> <span class="m">230</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemOrange-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">159</span><span class="o">,</span> <span class="m">10</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemPink-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">55</span><span class="o">,</span> <span class="m">95</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemPurple-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">191</span><span class="o">,</span> <span class="m">90</span><span class="o">,</span> <span class="m">242</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemRed-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">69</span><span class="o">,</span> <span class="m">58</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemTeal-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">100</span><span class="o">,</span> <span class="m">210</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemYellow-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">214</span><span class="o">,</span> <span class="m">10</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">142</span><span class="o">,</span> <span class="m">142</span><span class="o">,</span> <span class="m">147</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray2-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">99</span><span class="o">,</span> <span class="m">99</span><span class="o">,</span> <span class="m">102</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray3-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">72</span><span class="o">,</span> <span class="m">72</span><span class="o">,</span> <span class="m">74</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray4-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">58</span><span class="o">,</span> <span class="m">58</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray5-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">44</span><span class="o">,</span> <span class="m">44</span><span class="o">,</span> <span class="m">46</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray6-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">28</span><span class="o">,</span> <span class="m">28</span><span class="o">,</span> <span class="m">30</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-label-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-secondaryLabel-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">235</span><span class="o">,</span> <span class="m">235</span><span class="o">,</span> <span class="m">245</span><span class="o">,</span> <span class="m">0</span><span class="mi">.6</span><span class="p">);</span>
<span class="nv">$iOS-tertiaryLabel-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">235</span><span class="o">,</span> <span class="m">235</span><span class="o">,</span> <span class="m">245</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-quaternaryLabel-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">235</span><span class="o">,</span> <span class="m">235</span><span class="o">,</span> <span class="m">245</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$iOS-placeholderText-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">235</span><span class="o">,</span> <span class="m">235</span><span class="o">,</span> <span class="m">245</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-separator-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">84</span><span class="o">,</span> <span class="m">84</span><span class="o">,</span> <span class="m">88</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-opaqueSeparator-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">56</span><span class="o">,</span> <span class="m">56</span><span class="o">,</span> <span class="m">58</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-link-dark</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">9</span><span class="o">,</span> <span class="m">132</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
</code></pre></div></div>
<div class="language-scss highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// iOS-colors-light.scss</span>
<span class="nv">$iOS-systemBlue</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">122</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGreen</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">52</span><span class="o">,</span> <span class="m">199</span><span class="o">,</span> <span class="m">89</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemIndigo</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">88</span><span class="o">,</span> <span class="m">86</span><span class="o">,</span> <span class="m">214</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemOrange</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">149</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemPink</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">45</span><span class="o">,</span> <span class="m">85</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemPurple</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">175</span><span class="o">,</span> <span class="m">82</span><span class="o">,</span> <span class="m">222</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemRed</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">59</span><span class="o">,</span> <span class="m">48</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemTeal</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">90</span><span class="o">,</span> <span class="m">200</span><span class="o">,</span> <span class="m">250</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemYellow</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">255</span><span class="o">,</span> <span class="m">204</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">142</span><span class="o">,</span> <span class="m">142</span><span class="o">,</span> <span class="m">147</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray2</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">174</span><span class="o">,</span> <span class="m">174</span><span class="o">,</span> <span class="m">178</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray3</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">199</span><span class="o">,</span> <span class="m">199</span><span class="o">,</span> <span class="m">204</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray4</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">209</span><span class="o">,</span> <span class="m">209</span><span class="o">,</span> <span class="m">214</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray5</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">229</span><span class="o">,</span> <span class="m">229</span><span class="o">,</span> <span class="m">234</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-systemGray6</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">242</span><span class="o">,</span> <span class="m">242</span><span class="o">,</span> <span class="m">247</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-label</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-secondaryLabel</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">60</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">67</span><span class="o">,</span> <span class="m">0</span><span class="mi">.6</span><span class="p">);</span>
<span class="nv">$iOS-tertiaryLabel</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">60</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">67</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-quaternaryLabel</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">60</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">67</span><span class="o">,</span> <span class="m">0</span><span class="mi">.2</span><span class="p">);</span>
<span class="nv">$iOS-placeholderText</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">60</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">67</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-separator</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">60</span><span class="o">,</span> <span class="m">60</span><span class="o">,</span> <span class="m">67</span><span class="o">,</span> <span class="m">0</span><span class="mi">.3</span><span class="p">);</span>
<span class="nv">$iOS-opaqueSeparator</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">198</span><span class="o">,</span> <span class="m">198</span><span class="o">,</span> <span class="m">200</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
<span class="nv">$iOS-link</span><span class="p">:</span> <span class="nf">rgba</span><span class="p">(</span><span class="m">0</span><span class="o">,</span> <span class="m">122</span><span class="o">,</span> <span class="m">255</span><span class="o">,</span> <span class="m">1</span><span class="p">);</span>
</code></pre></div></div>]]></content><author><name>Felix Förtsch</name></author><category term="Design" /><category term="English" /><summary type="html"><![CDATA[Colors have a big impact on how software looks. Personally, I think macOS and iOS are beautiful and the colors are very well selected. Since I am not a designer, but I want to understand why these systems always looks so good, I started designing this website using the Apple colors. The first step I took was creating variables for the Apple colors from the Human Interface Guidelines (iOS/macOS). I published them on GitHub as gists so you can use them, too. Its just the raw variables; but I could not find them anywhere else in this SCSS form. Gist macOS-colors-dark.scss, macOS-colors-light.scss, iOS-colors-dark.scss, iOS-colors-light.scss. Read more for the actual variables.]]></summary></entry><entry><title type="html">Ideas</title><link href="https://felixfoertsch.github.io/2020/08/04/Ideas.html" rel="alternate" type="text/html" title="Ideas" /><published>2020-08-04T00:00:00+00:00</published><updated>2020-08-04T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2020/08/04/Ideas</id><content type="html" xml:base="https://felixfoertsch.github.io/2020/08/04/Ideas.html"><![CDATA[<p>Many people have ideas. Ideas are not special. What makes and breaks an idea is its realization and/or implementation. Here are some of <strong>my</strong> product ideas. Implement them, if you like them! Then send me an <a href="mailto:felixfoertsch@gmail.com">email</a> to show them to me, please. 😁</p>
<!-- more -->
<h2 id="product-ideas">Product Ideas</h2>
<p><strong>Flatpen:</strong> Pens have a problem. They are round and stiff and that makes them harder to carry around. The idea: Create a pen that uses regular pen mines, but folds flat so it can be put inside of a notebook without making it wobble.</p>
<p><strong>Process Visualization with Z-Layers:</strong> Processes are an important part of business development and optimization. Their visualization is important for communicating them. Most process visualization software is clunky to use. Finding the right layer of abstractions with processes is hard by default software should make it easier. This has to be a combined solution: From the editor to the reader. The core idea is using Z-layer zooming to make it more intuitive (e.g. pinching in mobile and tablet apps).</p>
<p><strong>Magic Handshake:</strong> Create a system that supports favors. Being in the system opens you doors, because you know someone. Like an exclusive club.</p>
<p><strong>10 Minute Mentor:</strong> Finding is a mentor is difficult. Make it easier.</p>
<p><strong>Sane Games:</strong> Create a list of games that are <em>sane</em>: no IAP, no psycho abuse, etc.</p>
<h2 id="web-app-ideas">Web App Ideas</h2>
<p><strong>Sign-up:</strong> Create an event where people can sign up really easily. Like <a href="https://raid-helper.com/">Raid Helper</a>, but generalized.</p>
<p><strong>WOOP:</strong> PWA that implements the <a href="https://en.wikipedia.org/wiki/GROW_model">GROW</a> or <a href="https://en.wikipedia.org/wiki/Gabriele_Oettingen">WOOP</a> mental model.</p>
<p><strong>Predefined Workflow Builder/Checklister/Show the Way:</strong> Many task in modern life follow step-by-step processes. It is <strong>really</strong> inefficient that everybody has to learn them individually. It should be easy to download a pre-created checklist for a specific task and then succeed with just following this checklist. E.g. “How to do a product launch” &gt; Step 1: Do X. Step 2: Do Y., “How to learn JavaFX” &gt; etc. Specialised Version of this could be a “You should app”. A collection of things everybody should do and/or have. Have a bank account, have insurance, etc.</p>
<p><strong>GitHub Contributions for Everything:</strong> GitHub Contributions are awesome. They give a quick and intuitive overview about progress. Create a way that allows tracking everything like this.</p>
<p><strong>Applicant Oriented Applications:</strong> Applications are awful for the applicant. They are at the mercy of organizations. They have to send in all their information and then they have to wait. And they have to do that multiple times. Use different interfaces, create different formats, and so on. It should be easier.</p>
<p><strong>Make it very easy to donate to a good cause/org:</strong> One click donations. It is not easy to set up donations in Germany. There is a lot of hassle involved with creating receipts etc. This should be super easy for the associated organizations and should allow integrated systems like PayPal and Stripe for payments.</p>
<p><strong>Local Twitter:</strong> Its not always easy to know whats happening around your. Make an app that makes it really easy to know what public events are happening right now around you. Concert? Demonstration? Check and know.</p>
<p><strong>Gamekey Exchange:</strong>
Enable people that buy things like humble bundle to trade their unused keys with each other.</p>
<h2 id="computer-and-phone-app-ideas">Computer and Phone App Ideas</h2>
<p><strong>On time:</strong> Calendar integration that allows one click information to others, if you are on time or not.</p>
<p><strong>Hierarchical Documentation:</strong> Documentation of software is often flat, even though hierarchies are at the core of many projects. Tools should display hierarchies to make it easier to quickly grasp software libraries.</p>
<p><strong>Moderator Toolbox:</strong> Organizing groups is hard. Make using speech lists, protocols, etc. easy to do.</p>
<p><strong>Cadence and Heartbeat Music:</strong> Generate electronic music (e.g. with AI) and use the heartbeat sensor of the Apple Watch attach it to the cadence and/or heart rate of the person.</p>
<p><strong>Vaccination Card:</strong> There is a yellow book that helps track vaccinations. Make one thats on your phone.</p>
<p><strong>Walk the City:</strong> Exploring a city is awesome. Make an app that tracks all routes/streets you have already been to on the map to facilitate walking every road once.</p>
<p><strong>Checkpoints:</strong> Create a system that allows people with bad time management to tell an accurate prediction on when theyll get somewhere. Use map data and checkpoints to find out the time.</p>
<p><strong>Color Clipboard:</strong> Monitor clipboard and store Hex codes. Give a nice UI to create palettes, etc.</p>
<p><strong>Kontakte:</strong> Create a Tinder-like interface to clean-up contacts: Keep, delete, edit. Have a nice and easy way to add notes and tags. Potentially: Add whitelist/blocklist.</p>
<p><strong>Business Plan Archive:</strong> Like ideas business plans have way less value than people think. Put them in the public domain.</p>
<p><strong>Track a Thing:</strong> App that has a unified interface to track things <strong>very</strong> easily. Did a run: Track. How many days since you last called your mother: Track. Is your Doner bigger or smaller than average: Track.</p>
<p><strong>Single Player Raider (Game):</strong> A game where you do a 40-person raid, but you do it solo on your own terms.</p>
<h2 id="apps-that-already-exist-or-probably-exists-but-require-better-design-should-not-cost-money-or-should-be-open-source">Apps that already exist (or probably exists), but require better design, should not cost money or should be open source</h2>
<ul>
<li><strong>Tiddlywiki for Mac</strong></li>
<li><strong>Anki for Mac</strong></li>
<li><strong>Twitch for Mac:</strong> mpv/IINA as player and chat on the bottom (native portrait mode)</li>
<li><strong>Ebook reader for Mac:</strong> Books always adds the PDF/ePub to the library, which is not always required</li>
<li><strong>Reddit but with a limit:</strong> Scrolling is unhealthy.</li>
<li><strong>Archiver for Mac:</strong> Easy archiving of things. YouTube via youtube-dl, etc.</li>
<li>https://www.progressbarosx.com/</li>
<li><strong>Ambience:</strong> Menu bar one-click music player for study/background music</li>
</ul>]]></content><author><name>Felix Förtsch</name></author><category term="Personal" /><category term="English" /><category term="Collection" /><summary type="html"><![CDATA[Many people have ideas. Ideas are not special. What makes and breaks an idea is its realization and/or implementation. Here are some of my product ideas. Implement them, if you like them! Then send me an email to show them to me, please. 😁]]></summary></entry><entry><title type="html">Strategies from the Happiness Lab</title><link href="https://felixfoertsch.github.io/2020/08/02/Strategies-from-the-Happiness-Lab.html" rel="alternate" type="text/html" title="Strategies from the Happiness Lab" /><published>2020-08-02T00:00:00+00:00</published><updated>2020-08-02T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2020/08/02/Strategies-from-the-Happiness-Lab</id><content type="html" xml:base="https://felixfoertsch.github.io/2020/08/02/Strategies-from-the-Happiness-Lab.html"><![CDATA[<p>I love listening to podcasts while I am out running. The latest one I found is <a href="https://www.happinesslab.fm/">The Happiness Lab</a> from and with Dr. Laurie Santos, a professor teaching at Yale. She looks at happiness scientifically and takes an active approach: <a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000449594792">You have it in your own hands to improve your happiness</a>. The podcast discusses various strategies with various scientists and experts from their respective field.</p>
<p>This is a collection of these strategies you can employ; with the link to the corresponding episode for more information.</p>
<!-- more -->
<ul>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000469606673">Meditate.</a> You have probably heard about people recommending meditating a thousand times. Do it. Start with 1 minute every day. The research of the benefits seems to be overwhelming.</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000463759567">Sleep enough.</a> Trivial. Humans need sleep. Get. Some. Make it a ritual to go to bed. Make the bed a sanctuary. No screens, no distractions. If you are lying in bed, you sleep. If you cant sleep, leave the bed and try again later. You can combine the ritual with meditation (see above).</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000455959891">Remove choice.</a> Being in control of and having to decide everything is exhausting. Remove unnecessary choices from your life. Have a big wardrobe? Reduce it and go minimal. Or to quote President Obama who always wore a white shirt and cycled through his suits: “Do you know how many decision I have to make throughout the day? You think I also want to decide what to wear?”</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000468907282">Coach yourself from the third person.</a> The research suggests that you perform better and are happier, if you think about the challenges you are facing from a third person perspective. The key term is <strong>distancing</strong>. Distance yourself to get a clearer picture of what is going on. You can use personal distancing (use your name instead of “I”): “Felix knows what he is doing and has experience. Trust him.” You can use temporal distancing: “Felix has faced this threat before and came out successful.” You can use group distancing: “We are a strong society and can solve this challenge together.”</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000452731206">Connect with others. Even strangers.</a> Modern life aims at removing all inconveniences. But it also removes social connections with other people. The example from the podcast is from the guy that invented the ATM. When there were still bank tellers, you had to wait in line where you might have to interact socially and had to interact with the teller. A person. Research suggests that happiness improves just by interacting with other people</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000469255597">Frame your emotions.</a> When encountering an emotion, you have 5 seconds to decide how to react to it. Use different frames depending on the situation. Examples for these frames:
<ul>
<li><strong>The comedic frame</strong> Try to tell a joke about the situation.</li>
<li><strong>The future storytelling frame</strong> Live your life in a way so that your story, told <strong>truthfully</strong>, makes you look like the person you strife to be. Which story sounds better to you? The story about a miserable and frustrated person that gave up on the slightest problem <strong>or</strong> the story about the person that strongly and cleverly encounters the challenges life throws at her and masters these challenges while smiling.</li>
<li><strong>The stoic gods challenge frame</strong> Use stoic, imaginary gods as a psychological device: Every setback you face in life is a test these gods have designed to test you and your character. And you want and can prove to them that you are up to the challenge. The harder the challenge is, the more trust the gods have in you.</li>
</ul>
</li>
<li><a href="https://podcasts.apple.com/de/podcast/the-happiness-lab-with-dr-laurie-santos/id1474245040?l=en&amp;i=1000469255597">Practice negative visualization.</a> Pause every once in a while during the day and think about what you could lose and how that would make you feel. Dont dwell on these thoughts. Just let them flicker for a second. This aims at increasing your appreciation for the people and things you have in your life.</li>
</ul>]]></content><author><name>Felix Förtsch</name></author><category term="Summaries" /><category term="English" /><category term="Philosophy" /><summary type="html"><![CDATA[I love listening to podcasts while I am out running. The latest one I found is The Happiness Lab from and with Dr. Laurie Santos, a professor teaching at Yale. She looks at happiness scientifically and takes an active approach: You have it in your own hands to improve your happiness. The podcast discusses various strategies with various scientists and experts from their respective field. This is a collection of these strategies you can employ; with the link to the corresponding episode for more information.]]></summary></entry><entry><title type="html">The Collection</title><link href="https://felixfoertsch.github.io/2020/07/20/The-Collection.html" rel="alternate" type="text/html" title="The Collection" /><published>2020-07-20T00:00:00+00:00</published><updated>2020-08-28T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2020/07/20/The-Collection</id><content type="html" xml:base="https://felixfoertsch.github.io/2020/07/20/The-Collection.html"><![CDATA[<p>During my time on the Internet, I encountered many things. This post is a collection of the cool things. I will probably update it once in a while. Since I am living in Germany, some of the tips may not be useful for everyone. In order of coolness.</p>
<p><!-- more --></p>
<h2 id="web-services">Web Services</h2>
<p><a href="https://uberspace.de">Uberspace</a> is a hosting provider. They offer a shared hosting experience that is a little bit more limited than a root server. However, their support is amazing and its a super good place to host for tinkerers and small projects. Highly recommended. Check out my <a href="/category/tutorials.html">Tutorials</a> or the <a href="https://lab.uberspace.de">Uberlab for U7</a> for things you can do on your Uberspace!</p>
<p>Things I am using on Uberspace:</p>
<ul>
<li><a href="http://invoiceplane.com">InvoicePlane</a>: Simple invoicing software. Offers sending offers and invoices via email, too!</li>
<li><a href="https://matomo.org">Matomao</a>: Analytics software to avoid Google.</li>
<li><a href="http://redmine.org">Redmine</a>: Amazing project management solution.</li>
<li><a href="http://syncthing.net">Syncthing</a>: File synchronisation alternative.</li>
</ul>
<p><a href="https://tecspace.de">Tecspace</a> is a hosting provider and domain registrar. I buy and manage my domains through their service. It is extremely cheap, costing only 2,50 EUR per year, if you have 10 or more domains. I love their admin interface. It is simple, behaves like a website should behave (no JavaScript shenanigans) and is very powerful.</p>
<p><a href="https://pinboard.in">Pinboard</a> is a bookmarking service. Its minimalistic, easy to use and offers an archiving service so you will never lose these good articles on the internet again.</p>
<h2 id="software">Software</h2>
<h3 id="pictures-design-illustrating">Pictures, Design, Illustrating</h3>
<p><a href="https://affinity.serif.com/">Affinity</a> produces <a href="https://affinity.serif.com/en-gb/designer/">Affinity Designer</a> and <a href="https://affinity.serif.com/en-gb/photo/">Affinity Photo</a>. They are competitors to the popular Adobe Photoshop and Illustrator. These two programs are <em>exceptional</em>. You can do basically everything you can do with their Adobe counterparts, but they only cost 55 EUR each. No subscriptions, no recurring fees. The interface is polished and if you are an Adobe user you will be right at home. Quit Adobe today. Dont let them milk you.</p>
<p><a href="https://www.apollooneapp.com/">Appollo One</a> is a really fast image viewer.</p>
<h3 id="random-apps">Random Apps</h3>
<p><a href="https://sensei.app/">Sensei</a> is a system monitoring app with a nice Mac compliant interface.</p>
<p><a href="http://mactracker.ca/">Mactracker</a> is an app that lists all apple hardware and their specifications. No need to google for these things anymore.</p>]]></content><author><name>Felix Förtsch</name></author><category term="Tips" /><category term="English" /><category term="Collection" /><summary type="html"><![CDATA[During my time on the Internet, I encountered many things. This post is a collection of the cool things. I will probably update it once in a while. Since I am living in Germany, some of the tips may not be useful for everyone. In order of coolness.]]></summary></entry><entry><title type="html">Install Mailtrain on Uberspace 7</title><link href="https://felixfoertsch.github.io/2020/07/19/Install-Mailtrain-on-Uberspace-7.html" rel="alternate" type="text/html" title="Install Mailtrain on Uberspace 7" /><published>2020-07-19T00:00:00+00:00</published><updated>2020-07-21T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2020/07/19/Install-Mailtrain-on-Uberspace-7</id><content type="html" xml:base="https://felixfoertsch.github.io/2020/07/19/Install-Mailtrain-on-Uberspace-7.html"><![CDATA[<p>This tutorial explains how to install <a href="https://mailtrain.org">Mailtrain</a> on a <a href="uberspace.de">Uberspace 7</a>. <a href="https://mailtrain.org/">Mailtrain</a> is a self-hosted open-source (released under the <a href="https://github.com/Mailtrain-org/mailtrain/blob/master/LICENSE">GPL
v3.0</a>.) newsletter app built on top of <a href="https://nodemailer.com/">Nodemailer</a>. I am following the <a href="https://github.com/Mailtrain-org/mailtrain#quick-start---manual-install-any-os-that-supports-nodejs">manual installation guide</a> from the official Mailtrain repo and add some additional Uberspace infos. I contributed <a href="https://lab.uberspace.de/guide_mailtrain.html">this guide</a> to the <a href="https://lab.uberspace.de/">Uberlab</a> and earned my first <a href="https://github.com/Uberspace/lab/blob/master/CONTRIBUTING.md#reward">Ubercup</a>.</p>
<!-- more -->
<h2 id="installation">Installation</h2>
<p>This guide uses Node.js version 12, which is the <a href="https://manual.uberspace.de/lang-nodejs.html#standard-version">default</a> on Uberspace 7 at at the moment.</p>
<p>Clone the <a href="https://github.com/Mailtrain-org/mailtrain">GitHub</a>
repository:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">[isabell@stardust ~]$</span><span class="w"> </span>git clone git://github.com/Mailtrain-org/mailtrain.git
<span class="gp">[isabell@stardust ~]$</span><span class="w">
</span></code></pre></div></div>
<p>Install the required dependencies:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">[isabell@stardust ~]$</span><span class="w"> </span><span class="nb">cd </span>mailtrain
<span class="gp">[isabell@stardust mailtrain]$</span><span class="w"> </span>npm <span class="nb">install</span> <span class="nt">--production</span>
<span class="gp">[isabell@stardust mailtrain]$</span><span class="w">
</span></code></pre></div></div>
<h2 id="configuration">Configuration</h2>
<h3 id="database-setup">Database Setup</h3>
<p>Create a new database:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">[isabell@stardust mailtrain]$</span><span class="w"> </span>mysql <span class="nt">-e</span> <span class="s2">"CREATE DATABASE </span><span class="k">${</span><span class="nv">USER</span><span class="k">}</span><span class="s2">_mailtrain;"</span>
<span class="gp">[isabell@stardust mailtrain]$</span><span class="w">
</span></code></pre></div></div>
<h3 id="mailtrain-config">Mailtrain Config</h3>
<p>Copy the example config file:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">[isabell@stardust mailtrain]$</span><span class="w"> </span><span class="nb">cp </span>config/default.toml config/production.toml
<span class="gp">[isabell@stardust mailtrain]$</span><span class="w">
</span></code></pre></div></div>
<p>Update <code class="language-plaintext highlighter-rouge">production.toml</code> with your MySQL settings; look for the
<code class="language-plaintext highlighter-rouge">[mysql]</code> block:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">...
</span><span class="go">
[mysql]
host="localhost"
user="isabell"
password="MySuperSecretPassword"
database="isabell_mailtrain"
</span><span class="c">...
</span></code></pre></div></div>
<h3 id="web-backend-config">Web Backend Config</h3>
<p><a href="https://mailtrain.org/">Mailtrain</a> is running on port 3000. Configure the server to respond to port 3000 using web backends:</p>
<div class="language-console highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="gp">[isabell@stardust ~]$</span><span class="w"> </span>uberspace web backend <span class="nb">set</span> / <span class="nt">--http</span> <span class="nt">--port</span> 3000
<span class="gp">[isabell@stardust ~]$</span><span class="w">
</span></code></pre></div></div>
<h3 id="supervisord-daemon-setup">Supervisord Daemon Setup</h3>
<p>Create <code class="language-plaintext highlighter-rouge">~/etc/services.d/mailtrain.ini</code> with the following content:</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[program:mailtrain]</span>
<span class="py">directory</span><span class="p">=</span><span class="s">%(ENV_HOME)s/mailtrain/</span>
<span class="py">command</span><span class="p">=</span><span class="s">env NODE_ENV=production /bin/node index.js</span>
<span class="py">autostart</span><span class="p">=</span><span class="s">yes</span>
<span class="py">autorestart</span><span class="p">=</span><span class="s">yes</span>
</code></pre></div></div>
<p>If its not in state RUNNING, check your configuration.</p>
<h3 id="login-and-change-admin-credentials">Login and Change Admin Credentials</h3>
<div class="alert alert-danger" role="alert">
Change the default admin credentials to prevent unauthorized access of your data!
</div>
<p>Your <a href="https://mailtrain.org/">Mailtrain</a> installation should now be
reachable on <code class="language-plaintext highlighter-rouge">https://isabell.uber.space</code>. Log in with the username
<code class="language-plaintext highlighter-rouge">admin</code> and the password <code class="language-plaintext highlighter-rouge">test</code>.</p>
<p>Go to <code class="language-plaintext highlighter-rouge">https://isabell.uber.space/users/account</code> and change your email
address as well as your password.</p>
<div class="alert alert-info" role="alert">
It is not possible to change the username in the GUI. If you want to change the default username `admin` to something else or add additional users, you have to do it directly in the database.
</div>
<h2 id="finishing-installation">Finishing installation</h2>
<p>Go to <code class="language-plaintext highlighter-rouge">https://isabell.uber.space/settings</code>. In the <strong>General Settings</strong> section change the <strong>Service Address (URL)</strong>
to <code class="language-plaintext highlighter-rouge">https://isabell.uber.space/</code>.</p>
<p>In the <strong>Mailer Settings</strong> section change the</p>
<blockquote>
<ul>
<li><em>Hostname</em>,</li>
<li><em>Port</em>,</li>
<li><em>Encryption</em>,</li>
<li><em>username</em>,</li>
<li><em>password</em>, and</li>
<li>test your settings by pressing the Button <strong>Check Mailer Config</strong>.</li>
</ul>
</blockquote>
<div class="alert alert-warning" role="alert">
Uberspace does not allow mass mailings from their servers according to their House Rules. However, you can use Mailtrain as the admin interface for your mailing needs. Use the SMTP services from AWS SES, Sendgrid, Mailgun, etc. for the actual mailing.
</div>
<h2 id="best-practices">Best Practices</h2>
<ul>
<li>Test the configuration by creating a new list and subscribing yourself
to it.</li>
<li>Craft your campaign with love and dedication.</li>
<li>Dont spam users that dont want your newsletter.</li>
</ul>
<hr />
<p>Tested on Uberspace v7.7.0 with NodeJS v12 and MariaDB 10.3.23.</p>]]></content><author><name>Felix Förtsch</name></author><category term="Tutorials" /><category term="English" /><category term="Self-Hosted Software" /><summary type="html"><![CDATA[This tutorial explains how to install Mailtrain on a Uberspace 7. Mailtrain is a self-hosted open-source (released under the GPL v3.0.) newsletter app built on top of Nodemailer. I am following the manual installation guide from the official Mailtrain repo and add some additional Uberspace infos. I contributed this guide to the Uberlab and earned my first Ubercup.]]></summary></entry><entry><title type="html">Collection of High Quality Swift Libraries</title><link href="https://felixfoertsch.github.io/2019/03/25/High-Quality-Swift-Libraries.html" rel="alternate" type="text/html" title="Collection of High Quality Swift Libraries" /><published>2019-03-25T00:00:00+00:00</published><updated>2019-03-30T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2019/03/25/High-Quality-Swift-Libraries</id><content type="html" xml:base="https://felixfoertsch.github.io/2019/03/25/High-Quality-Swift-Libraries.html"><![CDATA[<p>Libraries are an important part of programming. However, there should be a <strong>really</strong> good reason, if you decide to use a library. And if you use one, it should be a good one. These are some from my collection:</p>
<!-- more -->
<ul>
<li><a href="https://github.com/patchthecode/JTAppleCalendar">JTAppleCalendar</a>: Need a calendar view? Dont roll your own.</li>
<li><a href="https://github.com/evgenyneu/keychain-swift">Keychain</a>: Have something that need secure storage, like a password? Put it in the keychain.</li>
<li><a href="https://github.com/IvanVorobei/SPPermission">SPPermission</a>: Your app needs permissions? Inform the user properly. Its important.</li>
<li><a href="https://github.com/malcommac/SwiftDate">SwiftDate</a>: Handles all your date and time needs. <a href="https://www.youtube.com/watch?v=-5wpm-gesOY">Dont roll your own</a>.</li>
<li><a href="https://github.com/SvenTiigi/WhatsNewKit">WhatsNewKit</a>: Welcome your new user like apple does.</li>
</ul>
<h2 id="helper">Helper</h2>
<ul>
<li><a href="https://github.com/radex/SwiftyUserDefaults">SwiftyUserDefaults</a>: A small wrapper around NSUserDefaults that makes the usage swifter.</li>
</ul>]]></content><author><name>Felix Förtsch</name></author><category term="Programming" /><category term="English" /><category term="Swift" /><summary type="html"><![CDATA[Libraries are an important part of programming. However, there should be a really good reason, if you decide to use a library. And if you use one, it should be a good one. These are some from my collection:]]></summary></entry><entry><title type="html">Use the Pumping Lemma for Regular Languages</title><link href="https://felixfoertsch.github.io/2019/02/23/Use-the-Pumping-Lemma-for-Regular-Languages.html" rel="alternate" type="text/html" title="Use the Pumping Lemma for Regular Languages" /><published>2019-02-23T00:00:00+00:00</published><updated>2019-04-04T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2019/02/23/Use-the-Pumping-Lemma-for-Regular-Languages</id><content type="html" xml:base="https://felixfoertsch.github.io/2019/02/23/Use-the-Pumping-Lemma-for-Regular-Languages.html"><![CDATA[<p>This semester I finished my course about automata and languages. I learned a lot and it was really enjoyable. From this field, there was <a href="https://old.reddit.com/r/computerscience/comments/atrs4y/pumping_lemma_in_theory_of_computation/">a question about the Pumping Lemma on the computer science subreddit</a>. So naturally, if someone ask about a thing I know about, Ill try to explain it as best as I can repetition is key for retaining knowledge!</p>
<!-- more -->
<h1 id="my-explanation">My Explanation</h1>
<p><a href="https://old.reddit.com/r/computerscience/comments/atrs4y/pumping_lemma_in_theory_of_computation/eh3aw9k/">My original post on Reddit.</a></p>
<p>To understand the PL, we think about it in two steps. Ill do it for the regular languages. You can do the same on your own for the context free languages. The idea is the same.</p>
<ol>
<li>We create a visual model to understand what it is about.</li>
<li>We do a PL proof.</li>
</ol>
<h2 id="1-creating-a-visual-model-in-your-mind">1. Creating a visual model in your mind.</h2>
<p>Firstly, we have to keep in mind that we want to show that a language is not regular. Lets reason a little bit more about regular languages:</p>
<ul>
<li>Regular languages can be accepted by finite automata (FA). That means: if your language is regular, there is an FA that accepts this language.</li>
<li>To check, whether a word is accepted by an FA, you start in a state, start reading in letters of your word and follow the edges through the FA. If the whole word is read and we end up in a final state, the FA accepts the word.</li>
<li>But hold on a second! FA can also accept words that have more letters than we have states and edges. How can that be?! The answer: loops.</li>
<li>Now, given any regular language, we <strong>know</strong> that there is an FA that accepts it (this is a theorem).</li>
<li>That means: if we have a word, that has more letters than we have states, but is still accepted by our FA, we <strong>have to have</strong> a loop in our FA.</li>
<li>Think about it: we can repeat this loop as many times as we want and the FA would still accept words that are processed by going through the loop repeatedly. <strong>It has to!</strong></li>
<li>This repeating of the loop is referred to as pumping a word up or down.</li>
</ul>
<h2 id="2-doing-a-proof">2. Doing a proof.</h2>
<p>Now, secondly, you want to proof something using this lemma. Lets start with the PL (really try to understand this line!):</p>
<p><code class="language-plaintext highlighter-rouge">L ∈ REG → ∃n ∈ ∀x ∈ L: |x| ≥ n ∃u, v, w: x = u ∘ v ∘ w, |v| ≥ 1, |uv| ≤ n ∀i ∈ : u ∘ vⁱ ∘ w ∈ L</code></p>
<p>Ill break it down. Remember: This is a theorem. If you meet the conditions of the implication (part on the left), you now <strong>know</strong> that the part on the right is true.</p>
<ol>
<li><code class="language-plaintext highlighter-rouge">L ∈ REG →</code>: “Given a regular language, the following is true.”</li>
<li><code class="language-plaintext highlighter-rouge">∃n ∈ </code>: “There is a natural number”</li>
<li><code class="language-plaintext highlighter-rouge">∀x ∈ L: |x| ≥ n</code>: “For every word <code class="language-plaintext highlighter-rouge">x</code> that is in the language and longer than this natural number”
<ul>
<li>Remember the argument with the loops from part 1. This just says: we now have a word that has more letters than we have states.</li>
</ul>
</li>
<li><code class="language-plaintext highlighter-rouge">∃u, v, w: x = u ∘ v ∘ w, |v| ≥ 1, |uv| ≤ n</code>: “You can split up the word <code class="language-plaintext highlighter-rouge">x</code> into three parts: <code class="language-plaintext highlighter-rouge">u, v, w</code> where the length of <code class="language-plaintext highlighter-rouge">v</code> is equal to or bigger than <code class="language-plaintext highlighter-rouge">1</code> and the length of <code class="language-plaintext highlighter-rouge">u ∘ v</code> is smaller than our natural number from before”
<ul>
<li>Here we describe the loop in more detail. <code class="language-plaintext highlighter-rouge">v</code> is the part that we can pump, because there is a loop that processes v (and can thus process arbitrary iterations of v - or skip it altogether. And because <code class="language-plaintext highlighter-rouge">u ∘ v</code> is smaller than <code class="language-plaintext highlighter-rouge">n</code>, we didnt need a loop until now. We only really <strong>need</strong> a loop, if our word has more letters than we have states!</li>
</ul>
</li>
<li><code class="language-plaintext highlighter-rouge">∀i ∈ : u ∘ vⁱ ∘ w ∈ L</code>: “If all the conditions before have been met, we can now pump <code class="language-plaintext highlighter-rouge">v</code> up or down and the resulting word is still in the language!”
<ul>
<li>Since it is a loop, pumping doesnt make a difference. If you go the loop a million times, the word is still in the language.</li>
</ul>
</li>
</ol>
<p>Thats it. Again, because it is proved, you <strong>know</strong> its true if all the conditions are met.</p>
<p>We want to use the lemma to show, that a language <strong>is not</strong> a regular language. Lets have a look at the implication from above. Think about the left part of the implication (<code class="language-plaintext highlighter-rouge">L ∈ REG</code>) as <code class="language-plaintext highlighter-rouge">A</code> and the right part (<code class="language-plaintext highlighter-rouge">∃n ∈ ∀x ∈ L: |x| ≥ n ∃u, v, w: x = u ∘ v ∘ w, |v| ≥ 1, |uv| ≤ n ∀i ∈ : u ∘ vⁱ ∘ w ∈ L</code>) as <code class="language-plaintext highlighter-rouge">B</code>: <code class="language-plaintext highlighter-rouge">A → B</code>.</p>
<p>We can now do the following transformation:</p>
<p><code class="language-plaintext highlighter-rouge">A → B ≡ ¬B → ¬A</code></p>
<p>To pull in the negation on the right side of this transformation, all the quantifiers have to “flip around”. This means the sentence now looks like this:</p>
<p><code class="language-plaintext highlighter-rouge">∀n ∈ ∃x ∈ L: |x| ≥ n ∀u, v, w: x = u ∘ v ∘ w, |v| ≥ 1, |uv| ≤ n ∃i ∈ : u ∘ vⁱ ∘ w ∉ L → L ∉ REG</code></p>
<p>Again, this is still the Pumping Lemma. We didnt change it, we just used an transformation for the implication that is equivalent. If you meet the conditions on the left, you <strong>know</strong> the sentence on the right is true.</p>
<p>Lets use this on an example: Show that <code class="language-plaintext highlighter-rouge">L = {aᵏ ∘ bᵏ | k ≥ 0}</code> is not regular.</p>
<ol>
<li>Take any number <code class="language-plaintext highlighter-rouge">n</code>.</li>
<li>Select a word with the requirement <code class="language-plaintext highlighter-rouge">x ∈ L</code> with <code class="language-plaintext highlighter-rouge">|x| ≥ n</code>. Your mathematical creativity is requested here! You need to pick a word that helps you show the rest of the conditions easily! We are going to pick: <code class="language-plaintext highlighter-rouge">x = aⁿbⁿ</code>. This is convenient, because its obvious that it is as least as long as n (n occurs twice in it as an exponent). The important property to note: there are exactly as many <code class="language-plaintext highlighter-rouge">a</code> as there are <code class="language-plaintext highlighter-rouge">b</code> in this word. So if we can pump it in a way, that this is not the case anymore, we are golden!</li>
<li>Now we have to look at <strong>all</strong> of the partitions <code class="language-plaintext highlighter-rouge">x = uvw</code> with the conditions <code class="language-plaintext highlighter-rouge">|v| ≥ 1</code> and <code class="language-plaintext highlighter-rouge">|uv| ≤ n</code>. Since we have to look at all of them we just say: Lets assume these conditions are met (we can now use them in the next step).</li>
<li>Pick an <code class="language-plaintext highlighter-rouge">i</code> that shows that <code class="language-plaintext highlighter-rouge">u ∘ vⁱ ∘ w ∉ L</code>. Lets take <code class="language-plaintext highlighter-rouge">i = 0</code>.
<ul>
<li>Since our word is <code class="language-plaintext highlighter-rouge">aⁿbⁿ</code> and one of the conditions is <code class="language-plaintext highlighter-rouge">|uv| ≤ n</code>, we know that <code class="language-plaintext highlighter-rouge">uv</code> can <strong>only</strong> consist of the letter <code class="language-plaintext highlighter-rouge">a</code>.</li>
<li>And because we have the condition <code class="language-plaintext highlighter-rouge">|v| ≥ 1</code>, we also know that <code class="language-plaintext highlighter-rouge">v</code> has to contain <strong>at least</strong> one letter <code class="language-plaintext highlighter-rouge">a</code>.</li>
<li>If we now remove this letter (or maybe its more than one letter, it doesnt matter), the amount of letters <code class="language-plaintext highlighter-rouge">a</code> in the word <code class="language-plaintext highlighter-rouge">x</code> is now not equal to the amount of letters <code class="language-plaintext highlighter-rouge">b</code> in the word.</li>
<li>Hence: Our word is not part of the language any more (<code class="language-plaintext highlighter-rouge">u ∘ v⁰ ∘ w ∉ L</code>), violating the PL.</li>
</ul>
</li>
</ol>
<p>This shows that <code class="language-plaintext highlighter-rouge">L = {aᵏ ∘ bᵏ | k ≥ 0}</code> is not a regular language.</p>]]></content><author><name>Felix Förtsch</name></author><category term="Tutorials" /><category term="Proof" /><category term="Computer Science" /><summary type="html"><![CDATA[This semester I finished my course about automata and languages. I learned a lot and it was really enjoyable. From this field, there was a question about the Pumping Lemma on the computer science subreddit. So naturally, if someone ask about a thing I know about, Ill try to explain it as best as I can repetition is key for retaining knowledge!]]></summary></entry><entry><title type="html">Die Rechnung</title><link href="https://felixfoertsch.github.io/2019/02/22/Bestandteile-einer-Rechnung.html" rel="alternate" type="text/html" title="Die Rechnung" /><published>2019-02-22T00:00:00+00:00</published><updated>2019-03-25T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2019/02/22/Bestandteile-einer-Rechnung</id><content type="html" xml:base="https://felixfoertsch.github.io/2019/02/22/Bestandteile-einer-Rechnung.html"><![CDATA[<p>Die Rechnung ist eines der wesentlichsten Dokumente des Geschäftsverkehrs. Da sie ein formales Dokument ist, müssen einige Regeln eingehalten werden, damit eine Rechnung <em>gültig</em> ist und der Kunde bezahlen muss. Der Gesetzgeber hat eindeutig festgelegt, welche Angaben enthalten sein müssen (<a href="https://www.gesetze-im-internet.de/ustg_1980/__14.html">§ 14 UStG</a>):</p>
<!-- more -->
<ul>
<li>Der vollständige Name und die Anschrift des Rechnungs<strong>steller</strong></li>
<li>Der vollständige Name und die Anschrift des Rechnungs<strong>empfänger</strong></li>
<li>Die Steuernummer des Rechnungs<strong>stellers</strong></li>
<li>Das Ausstellungsdatum</li>
<li>Eine eindeutig Rechnungsnummer</li>
<li>Die Menge und Art der gelieferten Leistung</li>
<li>Das Datum der Lieferung (auch wenn identisch mit oben!)</li>
<li>Der Netto-Betrag der Lieferung</li>
<li>Den anzuwendenden Steuersatz</li>
<li>Den anfallenden Steuerbetrag</li>
</ul>]]></content><author><name>Felix Förtsch</name></author><category term="Deutsch" /><category term="Checklist" /><summary type="html"><![CDATA[Die Rechnung ist eines der wesentlichsten Dokumente des Geschäftsverkehrs. Da sie ein formales Dokument ist, müssen einige Regeln eingehalten werden, damit eine Rechnung gültig ist und der Kunde bezahlen muss. Der Gesetzgeber hat eindeutig festgelegt, welche Angaben enthalten sein müssen (§ 14 UStG):]]></summary></entry><entry><title type="html">iPad Gestures</title><link href="https://felixfoertsch.github.io/2019/02/22/iPad-Gestures.html" rel="alternate" type="text/html" title="iPad Gestures" /><published>2019-02-22T00:00:00+00:00</published><updated>2019-02-22T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2019/02/22/iPad-Gestures</id><content type="html" xml:base="https://felixfoertsch.github.io/2019/02/22/iPad-Gestures.html"><![CDATA[<p>I did it! I bought an iPad and an Apple Pencil for christmas last year. I write a lot for my university classes and I didnt like that I often had to cross out things on paper (because I wrote something down wrong) and had to write them again. I was not sure, if an iPad is the right device for me but turns out it is. It is awesome. If you make a mistake, you erase it and write it again. Wrong sequence of your sentences? Just move them around. The notes come out awesome.</p>
<p>Additionally I learned a few gestures that are really useful:</p>
<!-- more -->
<ul>
<li>Swipe with two fingers on the virtual keyboard to move cursor.</li>
<li>Tap and hold with two fingers to begin selecting, then move fingers to expand selection, OR</li>
<li>Tap once with two fingers to select single word.</li>
<li>Double tap with two fingers to select sentence.</li>
<li>Triple tap with two fingers to select paragraph.</li>
</ul>
<p>While text is selected:</p>
<ul>
<li>Swipe left/up with two fingers to move left selection handle.</li>
<li>Swipe right/down with two fingers to move right selection handle.</li>
<li>Tap once with two fingers to exit selection and return to cursor mode.</li>
</ul>]]></content><author><name>Felix Förtsch</name></author><category term="Tips" /><category term="English" /><category term="Apple" /><summary type="html"><![CDATA[I did it! I bought an iPad and an Apple Pencil for christmas last year. I write a lot for my university classes and I didnt like that I often had to cross out things on paper (because I wrote something down wrong) and had to write them again. I was not sure, if an iPad is the right device for me but turns out it is. It is awesome. If you make a mistake, you erase it and write it again. Wrong sequence of your sentences? Just move them around. The notes come out awesome. Additionally I learned a few gestures that are really useful:]]></summary></entry><entry><title type="html">Blackhole</title><link href="https://felixfoertsch.github.io/2019/02/21/Blackhole.html" rel="alternate" type="text/html" title="Blackhole" /><published>2019-02-21T00:00:00+00:00</published><updated>2019-02-21T00:00:00+00:00</updated><id>https://felixfoertsch.github.io/2019/02/21/Blackhole</id><content type="html" xml:base="https://felixfoertsch.github.io/2019/02/21/Blackhole.html"><![CDATA[<p>This is a text I found on the internet and saved it. If anybody knows the source, please tell me, so I can give credit.</p>
<!-- more -->
<h1 id="blackhole">Blackhole</h1>
<p>Imagine, just for a moment, that you are aboard a spaceship equipped with a magical engine capable of accelerating you to any arbitrarily high velocity. This is absolutely and utterly impossible, but it turns out itll be okay, for reasons youll see in a second.</p>
<p>Because you know your engine can push you faster than the speed of light, you have no fear of black holes. In the interest of scientific curiosity, you allow yourself to fall through the event horizon of one. And not just any black hole, but rather a carefully chosen one, one sufficiently massive that its event horizon lies quite far from its center. This is so youll have plenty of time between crossing the event horizon and approaching the region of insane gravitational gradient near the center to make your observations and escape again.</p>
<p>As you fall toward the black hole, you notice some things which strike you as highly unusual, but because you know your general relativity they do not shock or frighten you. First, the stars behind you — that is, in the direction that points away from the black hole — grow much brighter. The light from those stars, falling in toward the black hole, is being blue-shifted by the gravitation; light that was formerly too dim to see, in the deep infrared, is boosted to the point of visibility.</p>
<p>Simultaneously, the black patch of sky that is the event horizon seems to <em>grow</em> strangely. You know from basic geometry that, at this distance, the black hole should subtend about a half a degree of your view — it should, in other words, be about the same size as the full moon as seen from the surface of the Earth. Except it isnt. In fact, it fills half your view. Half of the sky, from notional horizon to notional horizon, is pure, empty blackness. And <em>all</em> the other stars, nearly the whole sky full of stars, are crowded into the hemisphere that lies behind you.</p>
<p>As you continue to fall, the event horizon opens up beneath you, so you feel as if youre descending into a featureless black bowl. Meanwhile, the stars become more and more crowded into a circular region of sky centered on the point immediately aft. The event horizon does not <em>obscure</em> the stars; you can watch a star just at the edge of the event horizon for as long as you like and youll never see it slip behind the black hole. Rather, the field of view through which you see the rest of the universe gets smaller and smaller, as if youre experiencing tunnel-vision.</p>
<p>Finally, just before youre about to cross the event horizon, you see the entire rest of the observable universe contract to a single, brilliant point immediately behind you. If you train your telescope on that point, youll see not only the light from all the stars and galaxies, but also a curious dim red glow. This is the cosmic microwave background, boosted to visibility by the intense gravitation of the black hole.</p>
<p>And then the point goes out. All at once, as if God turned off the switch.</p>
<p>You have crossed the event horizon of the black hole.</p>
<p>Focusing on the task at hand, knowing that you have limited time before you must fire up your magical spaceship engine and escape the black hole, you turn to your observations. Except you dont see anything. No light is falling on any of your telescopes. The view out your windows is blacker than mere black; you are looking at non-existence. There is <em>nothing</em> to see, <em>nothing</em> to observe.</p>
<p>You know that somewhere ahead of you lies the singularity … or at least, whatever the universe deems fit to exist at the point where our mathematics fails. But you have no way of observing it. Your mission is a failure.</p>
<p>Disappointed, you decide to end your adventure. You attempt to turn your ship around, such that your magical engine is pointing toward the singularity and so you can thrust yourself away at whatever arbitrarily high velocity is necessary to escape the black holes hellish gravitation. But you are thwarted.</p>
<p>Your spaceship has sensitive instruments that are designed to detect the gradient of gravitation, so you can orient yourself. These instruments should point straight toward the singularity, allowing you to point your ship in the right direction to escape. Except the instruments are going haywire. They seem to indicate that the singularity lies <em>all around you.</em> In <em>every</em> direction, the gradient of gravitation increases. If you are to believe your instruments, you are at the point of lowest gravitation inside the event horizon, and every direction points “downhill” toward the center of the black hole. So <em>any direction you thrust your spaceship</em> will push you closer to the singularity and your death.</p>
<p>This is clearly nonsense. You cannot believe what your instruments are telling you. It must be a malfunction.</p>
<p>But it isnt. Its the absolute, literal truth. Inside the event horizon of a black hole, there <em>is</em> no way out. There are no directions of space that point away from the singularity. Due to the Lovecraftian curvature of spacetime within the event horizon, all the trajectories that <em>would</em> carry you away from the black hole now point into the past.</p>
<p>In fact, this is the definition of the event horizon. Its the boundary separating points in space where there <em>are</em> trajectories that point away from the black hole from points in space where there are none.</p>
<p>Your magical infinitely-accelerating engine is of no use to you … because you cannot find a direction in which to point it. The singularity is all around you, in every direction you look.</p>
<p>And it is getting closer.</p>]]></content><author><name>Felix Förtsch</name></author><category term="Art" /><category term="English" /><category term="Reading" /><summary type="html"><![CDATA[This is a text I found on the internet and saved it. If anybody knows the source, please tell me, so I can give credit.]]></summary></entry></feed>