<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blogs on FlowFX</title><link>https://flowfx.de/blog/</link><description>Recent content in Blogs on FlowFX</description><generator>Hugo</generator><language>en-US</language><copyright>CC BY 4.0 Florian Posdziech</copyright><lastBuildDate>Sun, 18 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://flowfx.de/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>More than enough reasons not to use LLMs</title><link>https://flowfx.de/blog/three-reasons-not-to-use-llms/</link><pubDate>Sun, 18 Jan 2026 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/three-reasons-not-to-use-llms/</guid><description>&lt;p&gt;I agree so much with this that I&amp;rsquo;m putting it here for my own reference.&lt;/p&gt;
&lt;blockquote class="mastodon-embed" data-embed-url="https://narrativ.es/@janl/115915659052094010/embed" style="background: #FCF8FF; border-radius: 8px; border: 1px solid #C9C4DA; margin: 0; max-width: 540px; min-width: 270px; overflow: hidden; padding: 0;"&gt; &lt;a href="https://narrativ.es/@janl/115915659052094010" target="_blank" style="align-items: center; color: #1C1A25; display: flex; flex-direction: column; font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', Roboto, sans-serif; font-size: 14px; justify-content: center; letter-spacing: 0.25px; line-height: 20px; padding: 24px; text-decoration: none;"&gt; &lt;svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32" viewBox="0 0 79 75"&gt;&lt;path d="M63 45.3v-20c0-4.1-1-7.3-3.2-9.7-2.1-2.4-5-3.7-8.5-3.7-4.1 0-7.2 1.6-9.3 4.7l-2 3.3-2-3.3c-2-3.1-5.1-4.7-9.2-4.7-3.5 0-6.4 1.3-8.6 3.7-2.1 2.4-3.1 5.6-3.1 9.7v20h8V25.9c0-4.1 1.7-6.2 5.2-6.2 3.8 0 5.8 2.5 5.8 7.4V37.7H44V27.1c0-4.9 1.9-7.4 5.8-7.4 3.5 0 5.2 2.1 5.2 6.2V45.3h8ZM74.7 16.6c.6 6 .1 15.7.1 17.3 0 .5-.1 4.8-.1 5.3-.7 11.5-8 16-15.6 17.5-.1 0-.2 0-.3 0-4.9 1-10 1.2-14.9 1.4-1.2 0-2.4 0-3.6 0-4.8 0-9.7-.6-14.4-1.7-.1 0-.1 0-.1 0s-.1 0-.1 0 0 .1 0 .1 0 0 0 0c.1 1.6.4 3.1 1 4.5.6 1.7 2.9 5.7 11.4 5.7 5 0 9.9-.6 14.8-1.7 0 0 0 0 0 0 .1 0 .1 0 .1 0 0 .1 0 .1 0 .1.1 0 .1 0 .1.1v5.6s0 .1-.1.1c0 0 0 0 0 .1-1.6 1.1-3.7 1.7-5.6 2.3-.8.3-1.6.5-2.4.7-7.5 1.7-15.4 1.3-22.7-1.2-6.8-2.4-13.8-8.2-15.5-15.2-.9-3.8-1.6-7.6-1.9-11.5-.6-5.8-.6-11.7-.8-17.5C3.9 24.5 4 20 4.9 16 6.7 7.9 14.1 2.2 22.3 1c1.4-.2 4.1-1 16.5-1h.1C51.4 0 56.7.8 58.1 1c8.4 1.2 15.5 7.5 16.6 15.6Z" fill="currentColor"/&gt;&lt;/svg&gt; &lt;div style="color: #787588; margin-top: 16px;"&gt;Post by @janl@narrativ.es&lt;/div&gt; &lt;div style="font-weight: 500;"&gt;View on Mastodon&lt;/div&gt; &lt;/a&gt; &lt;/blockquote&gt; &lt;script data-allowed-prefixes="https://narrativ.es/" async src="https://narrativ.es/embed.js"&gt;&lt;/script&gt;</description></item><item><title>Alpha Blondy - live at POL AND ROCK Festival 2018</title><link>https://flowfx.de/blog/alpha-blondy-live-at-pol-and-rock-festival-2018/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/alpha-blondy-live-at-pol-and-rock-festival-2018/</guid><description>&lt;p&gt;Alpha Blondy &amp;amp; The Solar System are probably my favorite live performers. I first saw them play at Chiemsee Reggae Summer in 2010, and once again &lt;a href="https://www.youtube.com/watch?v=hlgHtpGa1wU"&gt;2016 in Mexico City&lt;/a&gt;. Their live sound is perfect. It&amp;rsquo;s huge, precise, and clear. Of course I can&amp;rsquo;t properly describe it, nor would it help you feel it. I can only encourage you to go see them as long as they&amp;rsquo;re around!&lt;/p&gt;
&lt;p&gt;Then you will witness an amazing show like this one from Poland in 2018 which I love listening to:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/-Zls4z-xL6s?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;br/&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/g2PK4e2I4Mc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Full text RSS feed in Hugo</title><link>https://flowfx.de/blog/hugo-full-text-rss-feed/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/hugo-full-text-rss-feed/</guid><description>&lt;p&gt;Since migrating this site to &lt;a href="https://ox-hugo.scripter.co/"&gt;&lt;code&gt;ox-hugo&lt;/code&gt;&lt;/a&gt; in 2024 its RSS feed only showed a summary of the blog posts — because that&amp;rsquo;s Hugo&amp;rsquo;s default. I very much dislike such truncated feeds and yesterday, finally, I have updated the template for RSS feeds to include the whole post content.&lt;/p&gt;
&lt;p&gt;Of course I&amp;rsquo;m not the only one with this problem. The information on, for example &lt;a href="https://blog.amen6.com/blog/2024/03/hugo-enabling-full-text-rss-feed/"&gt;https://blog.amen6.com/blog/2024/03/hugo-enabling-full-text-rss-feed/&lt;/a&gt; is a bit outdated, though.&lt;/p&gt;
&lt;p&gt;The default &lt;code&gt;rss.xml&lt;/code&gt; is now located at &lt;a href="https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/rss.xml"&gt;https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/rss.xml&lt;/a&gt; (&lt;a href="https://github.com/gohugoio/hugo/blob/b8a2c10d06d815cdaf61ef2f03fb37267612da2e/tpl/tplimpl/embedded/templates/rss.xml"&gt;Permalink&lt;/a&gt;), and it needs to be placed directly inside the &lt;code&gt;/layouts&lt;/code&gt; directory.&lt;/p&gt;
&lt;p&gt;The required change in the file is still the same (&lt;a href="https://github.com/FlowFX/flowfx.de/commit/451b92f20dc43cfcb90ac7c35b62cd1c175975e9"&gt;commit&lt;/a&gt;):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;- &amp;lt;description&amp;gt;{{ .Summary | transform.XMLEscape | safeHTML }}&amp;lt;/description&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;+ &amp;lt;description&amp;gt;{{ .Content | transform.XMLEscape | safeHTML }}&amp;lt;/description&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Make sure you run a version of Hugo equal or greater than &lt;code&gt;v0.146.0&lt;/code&gt; both locally AND in your build CI. I was very confused for a while &lt;a href="https://github.com/FlowFX/flowfx.de/commit/f54391438aeb171cbe26d0bfb24c84256c437f2f"&gt;until &lt;em&gt;I&lt;/em&gt; did&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Hugo shortcode for embedding PeerTube videos</title><link>https://flowfx.de/blog/hugo-shortcode-for-embedding-peertube-videos/</link><pubDate>Fri, 02 Jan 2026 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/hugo-shortcode-for-embedding-peertube-videos/</guid><description>&lt;p&gt;So, I have a &lt;a href="https://flowfx.de/blog/flowfx-music"&gt;PeerTube&lt;/a&gt; account now. With videos!! 🤯 Naturally, I want to embed these videos on this - statically generated - website. Just like YouTube, PeerTube offers an &lt;code&gt;iframe&lt;/code&gt; embed code:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Los Muchachos feat. The Block Ice Horn Section - Guachiman (live at Jos Fritz Café 15 Feb 2025)&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;560&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;315&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://makertube.net/videos/embed/rpfGXbCVSu46P2ELUzhSjT&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;border: 0px;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;allow&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;fullscreen&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sandbox&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;allow-same-origin allow-scripts allow-popups allow-forms&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This &lt;code&gt;iframe&lt;/code&gt; has a static width of &lt;code&gt;560px&lt;/code&gt; which may be too large for smaller screens. But PeerTube is great and also offers a &lt;em&gt;Responsive embed&lt;/em&gt; which looks like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;position: relative; padding-top: 56.25%;&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;The Offbeat Service live in der Funzel 13.12.2025&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;100%&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;100%&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://makertube.net/videos/embed/rpfGXbCVSu46P2ELUzhSjT&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;border: 0px; position: absolute; inset: 0px;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;allow&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;fullscreen&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sandbox&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;allow-same-origin allow-scripts allow-popups allow-forms&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Hugo has a built-in shortcode for YouTube videos. It is used this way:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{ youtube 0815x11 }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Of course, I want the same thing for my PeerTube videos. One big difference between YouTube and PeerTube is that there is only one YouTube, but there are many, many PeerTube servers. In order to be able to add videos from different PeerTube servers, I need the server name as a second argument. But because both my own and &lt;a href="https://makertube.net/a/theuplifters/"&gt;my band&amp;rsquo;s PeerTube account&lt;/a&gt; live on &lt;a href="https://makertube.net/"&gt;MakerTube&lt;/a&gt;, I set &lt;code&gt;makertube.net&lt;/code&gt; as the default address. (See &lt;a href="https://gohugo.io/functions/compare/default/"&gt;&lt;code&gt;compare.Default&lt;/code&gt;&lt;/a&gt; in the Hugo docs)&lt;/p&gt;
&lt;p&gt;This results in:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{ $id := (.Get 0) }}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{ $server := (default &amp;#34;makertube.net&amp;#34; (.Get 1)) }}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#f92672"&gt;div&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;position: relative; padding-top: 56.25%;&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;title&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;Play PeerTube video&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;width&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;100%&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;height&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;100%&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;src&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;https://{{ $server }}/videos/embed/{{ $id }}&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;style&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;border: 0px; position: absolute; inset: 0px;&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;allow&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;fullscreen&amp;#34;&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;sandbox&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;allow-same-origin allow-scripts allow-popups allow-forms&amp;#34;&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;/&lt;span style="color:#f92672"&gt;iframe&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#f92672"&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When saved as &lt;code&gt;/layouts/shortcodes/peertube.html&lt;/code&gt;, I can use it exactly like the YouTube shortcode,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{ peertube rpfGXbCVSu46P2ELUzhSjT }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or, if I need to, I can additionally change the address of the PeerTube server.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{{ peertube rpfGXbCVSu46P2ELUzhSjT makertube.net }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The result is a responsively embedded video. 🥳&lt;/p&gt;





&lt;div style="position: relative; padding-top: 56.25%;"&gt;
 &lt;iframe title="Play PeerTube video" width="100%" height="100%" src="https://makertube.net/videos/embed/rpfGXbCVSu46P2ELUzhSjT" style="border: 0px; position: absolute; inset: 0px;" allow="fullscreen" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;
</description></item><item><title>/music</title><link>https://flowfx.de/blog/flowfx-music/</link><pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/flowfx-music/</guid><description>&lt;p&gt;I have added the &lt;a href="https://flowfx.de/music"&gt;/music&lt;/a&gt; page to collect everything related to my musical activities. Most importantly, this is where I will list the dates for all my upcoming gigs. More will come later.&lt;/p&gt;
&lt;p&gt;I have also created a &lt;a href="https://joinpeertube.org/"&gt;PeerTube&lt;/a&gt; account on &lt;a href="https://makertube.net/"&gt;MakerTube&lt;/a&gt; to collect all videos of me playing with my bands. If you&amp;rsquo;re on the Fediverse you can subscribe to the &lt;a href="https://makertube.net/c/flowfx_music/videos"&gt;flowfx_music@makertube.net&lt;/a&gt; channel. The most recent video there is a compilation of videos shot at my recent gig at &lt;a href="https://www.instagram.com/diefunzel"&gt;Die Funzel&lt;/a&gt; with &lt;a href="https://www.instagram.com/theoffbeatservice/"&gt;The Offbeat Service&lt;/a&gt;:&lt;/p&gt;





&lt;div style="position: relative; padding-top: 56.25%;"&gt;
 &lt;iframe title="Play PeerTube video" width="100%" height="100%" src="https://makertube.net/videos/embed/kzbJyafThzVHePe3WREXz6" style="border: 0px; position: absolute; inset: 0px;" allow="fullscreen" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"&gt;
 &lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;Check &lt;a href="https://makertube.net/my-library/video-playlists"&gt;the playlists&lt;/a&gt; to also see the videos from &lt;a href="https://makertube.net/c/theuplifters_music/videos"&gt;The Uplifters channel&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Live dates autumn 2024</title><link>https://flowfx.de/blog/live-dates-autumn-2024/</link><pubDate>Fri, 13 Sep 2024 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/live-dates-autumn-2024/</guid><description>&lt;p&gt;I&amp;rsquo;ll be playing a surprising number of shows until the end of the year, both with my long-term band &lt;a href="https://theuplifters.de/"&gt;The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt;, the band that I just recently joined, &lt;a href="https://www.instagram.com/theoffbeatservice/"&gt;The Offbeat Service&lt;/a&gt; (mostly 2-tone Ska from Worms), and the very fun rock-pop-funk cover band &lt;a href="https://www.instagram.com/marshallpfefferle/"&gt;Marshall Pfefferle&lt;/a&gt; from Heidelberg:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;19.09. &amp;ldquo;Karl&amp;rdquo; in &lt;em&gt;Heidelberg&lt;/em&gt; with &lt;strong&gt;Marshall Pfefferle&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;09.11. &lt;a href="https://www.instagram.com/cafeleitstelle/"&gt;Café Leitstelle&lt;/a&gt; in &lt;em&gt;Heidelberg&lt;/em&gt; with &lt;strong&gt;The Uplifters&lt;/strong&gt; AND &lt;strong&gt;Marshall Pfefferle&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;16.11. &lt;a href="https://www.oetingervilla.de/"&gt;Oettinger Villa&lt;/a&gt; in &lt;em&gt;Darmstadt&lt;/em&gt; with &lt;strong&gt;The Offbeat Service&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;23.11. &lt;a href="https://www.knabenschule.de/"&gt;Bessunger Knabenschule&lt;/a&gt; in &lt;em&gt;Darmstadt&lt;/em&gt; with &lt;strong&gt;The Offbeat Service&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;30.11. &lt;a href="https://diefunzelworms.de/"&gt;Die Funzel&lt;/a&gt; in &lt;em&gt;Worms&lt;/em&gt; with &lt;strong&gt;The Offbeat Service&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here&amp;rsquo;s a short from a recent rehearsal with The Offbeat Service. I love that song! ❤️&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/uERmw88Xx1c?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>The Uplifters - Live beim Acker-Kult-Festival 2024</title><link>https://flowfx.de/blog/the-uplifters-live-beim-acker-kult-festival-2024/</link><pubDate>Sun, 25 Aug 2024 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-uplifters-live-beim-acker-kult-festival-2024/</guid><description>&lt;p&gt;This past spring I was looking for a local band to support &lt;a href="https://theuplifters.de/"&gt;The Uplifters&lt;/a&gt; at a concert I was setting up in Mannheim in June. &amp;ldquo;Support&amp;rdquo; meaning: draw a few more people than we would by ourselves - us being from Freiburg and not well known here yet. In the course of this search, I met &lt;a href="https://www.instagram.com/theoffbeatservice/"&gt;The Offbeat Service&lt;/a&gt; from Worms. They couldn&amp;rsquo;t play the date, but they told us about a nice little festival around the corner in Dorsheim, the &lt;a href="http://ackerkult.de/"&gt;&amp;ldquo;Acker-Kult&amp;rdquo;&lt;/a&gt;. They were still looking for bands, and they liked us.&lt;/p&gt;
&lt;p&gt;The originally planned concert in Mannheim never happened. Instead, we played a great show at Acker-Kult, I now play &lt;em&gt;with&lt;/em&gt; The Offbeat Service, and we finally have some decent live videos to present. Enjoy!&lt;/p&gt;
&lt;h2 id="youthman"&gt;Youthman&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/2PLFhydkPwE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;h2 id="ghost-town--specials-cover"&gt;Ghost Town (Specials Cover)&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/A3DFDtL-84M?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>EurKEY, MacOS and Emacs' Meta key</title><link>https://flowfx.de/blog/eurkey-macos-and-emacs-meta-key/</link><pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/eurkey-macos-and-emacs-meta-key/</guid><description>&lt;p&gt;&lt;strong&gt;Back To The Mac 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am building my first &lt;a href="https://codeberg.org/flowfx/emacs.d"&gt;custom Emacs configuration&lt;/a&gt;, moving away from &lt;a href="https://github.com/doomemacs/"&gt;Doom Emacs&lt;/a&gt;. Doom was great for getting started with Emacs after using Vim exclusively for the previous&amp;hellip; 15 years?!&lt;/p&gt;
&lt;p&gt;After the jump &lt;a href="https://flowfx.de/blog/emacs-app"&gt;back to the Mac&lt;/a&gt; there were a number of new issues with my setup that I had no idea how to solve, and there&amp;rsquo;s so much magic happening in Doom that I didn&amp;rsquo;t really want to look too much into it. So I&amp;rsquo;m taking a step back and starting from scratch. Not really from scratch, because I am using &lt;a href="https://codeberg.org/ashton314/emacs-bedrock"&gt;Emacs Bedrock&lt;/a&gt; as a base config. But still.&lt;/p&gt;
&lt;p&gt;Reading &lt;a href="https://www.masteringemacs.org/"&gt;Mastering Emacs&lt;/a&gt; helped me &lt;em&gt;a ton&lt;/em&gt; in finally understanding some core concepts like &amp;hellip; windows, frames, &lt;code&gt;M-x&lt;/code&gt;, &amp;hellip;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Speaking of &lt;code&gt;M-x&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;One of my most important (tech/productivity) discoveries of the last 10 years is the &lt;a href="#"&gt;EurKEY keyboard layout&lt;/a&gt;. In short, it let&amp;rsquo;s me use the ANSI/US keyboard layout for programming while also conveniently insert Umlauts and other accented characters. During my work day I mostly write in English and Ruby. Other times I often write German or Spanish. EurKEY let&amp;rsquo;s me do all of that very simply and in similar fashion in every operating systems I use: MacOS and GNU/Linux.&lt;/p&gt;
&lt;p&gt;EurKEY requires the use of the Mac&amp;rsquo;s &lt;code&gt;option&lt;/code&gt; key. Emacs also likes the &lt;code&gt;option&lt;/code&gt; key. It&amp;rsquo;s called &lt;code&gt;Meta&lt;/code&gt; there and is used in the most important command: &lt;code&gt;Meta-x&lt;/code&gt;. If Emacs uses &lt;code&gt;option&lt;/code&gt; for &lt;code&gt;Meta&lt;/code&gt;, then it&amp;rsquo;s not forwarded to MacOS to be used in EurKEY.&lt;/p&gt;
&lt;p&gt;The solution? Disable the &lt;code&gt;option&lt;/code&gt; key and only re-enable the &lt;em&gt;right&lt;/em&gt; &lt;code&gt;option&lt;/code&gt; key to act as &lt;code&gt;Meta&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-elisp" data-lang="elisp"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(setq mac-option-modifier &lt;span style="color:#e6db74"&gt;&amp;#39;none&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;(setq mac-right-option-modifier &lt;span style="color:#e6db74"&gt;&amp;#39;meta&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This way I can use &lt;strong&gt;the right option key&lt;/strong&gt; for Emacs and the left one to write Umlauts.&lt;/p&gt;</description></item><item><title>Using Automator to create an Emacs.app for running Emacs Client &amp; Server</title><link>https://flowfx.de/blog/emacs-app/</link><pubDate>Sun, 11 Feb 2024 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/emacs-app/</guid><description>&lt;p&gt;Or: &lt;strong&gt;Back To The Mac 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After using only Linux machines for work for the past 5 years, my next machine will be a MacBook. That&amp;rsquo;s why I&amp;rsquo;m working on improving my development environment on macOS as best as I can now, something that&amp;rsquo;s not really been necessary when using my personal Mac.&lt;/p&gt;
&lt;p&gt;First order of business: how do I start the Emacs server and connect to it with the emacsclient?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m using &lt;a href="https://github.com/d12frosted/homebrew-emacs-plus"&gt;Emacs+&lt;/a&gt; from homebrew:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew install emacs-plus@29
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once installed, it works fine, but neither do Spotlight - or Alfred - see any Emacs.app, nor do I know how to start the server or start multiple clients that connect to it.&lt;/p&gt;
&lt;p&gt;I found the solution on the blog of one Alex Balgavy: &lt;a href="https://blog.alex.balgavy.eu/setting-up-emacs-as-a-daemon-on-macos/"&gt;Setting up Emacs as a daemon on macOS&lt;/a&gt;. Then I simplified it for my purposes.&lt;/p&gt;
&lt;p&gt;All I needed to do is create a new &lt;a href="https://support.apple.com/de-de/guide/automator/welcome/mac"&gt;Automator&lt;/a&gt; document of type &lt;em&gt;Application&lt;/em&gt; that runs this shell script:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;export PATH&lt;span style="color:#f92672"&gt;=&lt;/span&gt;/opt/homebrew/bin:$PATH
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;emacsclient -c -a &lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt; &amp;gt;/dev/null 2&amp;gt;&amp;amp;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;`-c` creates a GUI frame, and `-a &amp;lsquo;&amp;rsquo;` connects to the server named `&amp;rsquo;&amp;rsquo;` - or starts it if it&amp;rsquo;s not already running.&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://flowfx.de/images/2024/Automator-Emacs_app.png"&gt;
&lt;/figure&gt;

&lt;p&gt;Every time I call &lt;strong&gt;Emacs.app&lt;/strong&gt;, I get a new fresh Emacs window, just like I&amp;rsquo;m used to on my Linux machine that runs the Emacs server from systemd.&lt;/p&gt;</description></item><item><title>Rhein-Neckar-Tour mit den Uplifters</title><link>https://flowfx.de/blog/the-uplifters-rhein-neckar-tour/</link><pubDate>Wed, 09 Aug 2023 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-uplifters-rhein-neckar-tour/</guid><description>&lt;p&gt;Dafür, dass &lt;a href="https://theuplifters.de/"&gt;The Uplifters&lt;/a&gt; eine Freiburger Band sind, spielen wir dieses Jahr außergewöhnlich oft in der Rhein-Neckar-Ecke. Gut für mich, denn dann ist die Anreise nicht so lang.&lt;/p&gt;
&lt;p&gt;Am 26. August dürfen wir beim wunderbaren &lt;a href="https://www.brueckenaward.de/"&gt;Brückenaward&lt;/a&gt; in Mannheim spielen. Anfang September geht&amp;rsquo;s nach Speyer &lt;a href="https://www.facebook.com/Nagelklotz/"&gt;zum Nagelklotz&lt;/a&gt; aufs Altstadtfest.&lt;/p&gt;
&lt;p&gt;Im Dezember spielen wir dann im &lt;a href="https://www.instagram.com/cafeleitstelle/"&gt;Café Leitstelle&lt;/a&gt; in Heidelberg, gemeinsam mit meiner alten Rock-Cover-Band &lt;a href="https://www.instagram.com/marshallpfefferle/"&gt;Marshall Pfefferle&lt;/a&gt;. Das wird groß werden!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://flowfx.de/images/2023/uplifters-promo-rhein-neckar-2023.png" alt="Die nächsten Konzerte mit meiner Band: 26.08. Brückenaward in Mannheim, 08.09. Altstadtfest Speyer, 02.12. Café Leitstelle in Heidelberg"&gt;&lt;/p&gt;</description></item><item><title>The Uplifters - Live im Proberaum</title><link>https://flowfx.de/blog/the-uplifters-live-im-proberaum/</link><pubDate>Mon, 27 Feb 2023 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-uplifters-live-im-proberaum/</guid><description>&lt;p&gt;I have &lt;a href="https://theuplifters.de/"&gt;an awesome band&lt;/a&gt;! In December we recorded a few songs &amp;ldquo;live&amp;rdquo; in our rehearsal room in Freiburg, both audio and video. Over the winter everybody but me put &lt;em&gt;a lot&lt;/em&gt; of work into pulling both together and making it look and sound good. And what can I say, they did an amazing job. I&amp;rsquo;m truly impressed. Plus: everything was done using free and open source software: &lt;a href="https://ardour.org/"&gt;Ardour&lt;/a&gt; and &lt;a href="https://kdenlive.org/"&gt;kdenlive&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Well, here they are, two of our original songs, live in the studio:&lt;/p&gt;
&lt;h2 id="be-free"&gt;Be Free&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/LRyKdED6srA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;h2 id="change-my-life"&gt;Change My Life&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/E8jI3KVACGQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;If you want to see us play live sometime, head over to &lt;a href="https://theuplifters.de"&gt;theuplifters.de&lt;/a&gt; and sign up to our newsletter! We only send out emails when we have public gigs to announce. Of course you can always book us for your private garden party as well. 😃&lt;/p&gt;</description></item><item><title>How to hold a trombone</title><link>https://flowfx.de/blog/how-to-hold-a-trombone/</link><pubDate>Sat, 29 Oct 2022 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/how-to-hold-a-trombone/</guid><description>&lt;p&gt;Last week I bought a brand new trombone. Following &lt;a href="https://der-trompetenlehrer.de/"&gt;my
teacher&lt;/a&gt;&amp;rsquo;s recommendation, I made an
appointment at &lt;a href="https://www.musik-bertram.com/"&gt;Musik Bertram&lt;/a&gt; in Freiburg and
spent a good few hours in their practice room trying out different instruments.
I fully expected to get a light, small-bore, jazz or pop music tenor trombone.
Instead, I somehow chose a medium-bore, classical &lt;a href="https://www.bachbrass.com/instruments/trombones/professional/36"&gt;Bach
36&lt;/a&gt;, with
rose brass bell and everything.&lt;/p&gt;
&lt;p&gt;What made the difference compared to the other instruments I tried is the
incredible, full sound this instrument is able to produce. My guitarist
&lt;a href="https://www.youtube.com/user/schmaexle"&gt;Max&lt;/a&gt;, who was with me at the store, put
it this way:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The other instruments are good, too. But this one sounds like it has a
built-in compressor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Guitarists&amp;hellip;&lt;/p&gt;
&lt;p&gt;So, amazing sound, yes, but there&amp;rsquo;s a drawback. This instrument is heavier than
anything I have played before. And its geometry is weird, too. I&amp;rsquo;m still
figuring how to hold it comfortably.&lt;/p&gt;
&lt;p&gt;Luckily, there&amp;rsquo;s YouTube. And there&amp;rsquo;s one of my favorite YouTubers: &lt;a href="https://www.youtube.com/c/TrentHamilton"&gt;Trent
Hamilton&lt;/a&gt;. Trent is a New Zealander
that collects brass instruments like others collect stamps. He also plays them
very well, and he plays &lt;em&gt;all&lt;/em&gt; of them. Naturally he knows how to properly hold - even a heavy - a
trombone:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/Gu9fALekykY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Training week August 6 to 26</title><link>https://flowfx.de/blog/training-weeks-august-6-to-26/</link><pubDate>Sat, 06 Aug 2022 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/training-weeks-august-6-to-26/</guid><description>&lt;p&gt;Yes, my training week starts on Saturday.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Day&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Exercise&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Weights and reps&lt;/th&gt;
 &lt;th style="text-align: left"&gt;timing / notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sat 6/8&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=0ZzoCasyoAM"&gt;&lt;strong&gt;Single Arm Inside Circle&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 11 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;2min rest before next exercise&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=OydLETgLfMA"&gt;&lt;strong&gt;Single Arm Outside Circle&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 11 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;2min rest before next exercise&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=LKNgPDX2wRk"&gt;&lt;strong&gt;Single Arm Shield Cast&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 11 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&amp;ldquo;FlowFX Heel Drop Complex&amp;rdquo;&lt;/strong&gt;*&lt;/td&gt;
 &lt;td style="text-align: left"&gt;20kg x 3 x 4/4&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 115s (~35s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sun&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=48qvCvJJr8Y"&gt;&lt;strong&gt;KB Clean &amp;amp; Press&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 10 x 3/3/2/2/1/1&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 2:30min (~60s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Goblet Squat&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 10 x 5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;EMOM&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Mon&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/wrssr"&gt;Run&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Tue&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Rest&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;so important!&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Wed&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;:|&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Thu&lt;/td&gt;
 &lt;td style="text-align: left"&gt;?&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Fri&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sat 13/8&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;:(&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sun&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Mon&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;/o\&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Tue&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Wed&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&amp;mdash;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Wed&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Single Arm IC/OC/SC&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;4kg x 20 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;2min rest before next exercise&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Thu&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/x8c03"&gt;Run&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Fri&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;KB Clean &amp;amp; Press&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 8 x 3/3/2/2/1/1&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 2:30min (~70s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sat 20/8&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/x9p82"&gt;Run&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sun&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Single Arm IC/OC/SC&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;4kg x 17 x 6/6&lt;/td&gt;
 &lt;td style="text-align: left"&gt;2min rest before next exercise&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Mon&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;KB Clean &amp;amp; Press&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 10 x 3/3/2/2/1/1&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 2:30min (~70s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Tue&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/xep1e"&gt;Run&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Wed&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Thu&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Fri&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;*: x reps of slow (!) heel drops with a bent knee, then x reps with a straight
knee. Repeat on the other side. The weight is held on the side that&amp;rsquo;s doing the
drops. Full range of motion, but don&amp;rsquo;t hold the bottom stretch (my damaged
achilles tendon doesn&amp;rsquo;t like that).&lt;/p&gt;</description></item><item><title>Training week Juli 30 to August 5</title><link>https://flowfx.de/blog/training-week-juli-30-to-august-5-2022/</link><pubDate>Sat, 30 Jul 2022 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/training-week-juli-30-to-august-5-2022/</guid><description>&lt;p&gt;Since &lt;a href="https://github.com/FlowFX/divingdolphin"&gt;my training log project&lt;/a&gt; is
going nowhere, I might as well log my training here, if just for a few weeks.&lt;/p&gt;
&lt;p&gt;After a 11 day training break due to Covid I have to ramp back up slowly into my
ongoing volume cycles of clean &amp;amp; press and one-handed club swinging. I am also
trying to start a cycle of Goblet squats in order to add &amp;hellip; more squats to my
training. I think I need them.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th style="text-align: left"&gt;Day&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Exercise&lt;/th&gt;
 &lt;th style="text-align: left"&gt;Weights and reps&lt;/th&gt;
 &lt;th style="text-align: left"&gt;timing / notes&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sat&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=48qvCvJJr8Y"&gt;&lt;strong&gt;KB Clean &amp;amp; Press&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 8 x 3/3/2/2/1/1*&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 2:30min (~60s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;Goblet Squat&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 10 x 4&lt;/td&gt;
 &lt;td style="text-align: left"&gt;EMOM&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Sun&lt;/td&gt;
 &lt;td style="text-align: left"&gt;Swim&lt;/td&gt;
 &lt;td style="text-align: left"&gt;400m&lt;/td&gt;
 &lt;td style="text-align: left"&gt;A day at the pool. Not a workout, but active and fun.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Mon&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/wjdy0"&gt;&lt;strong&gt;Run&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6.7km&lt;/td&gt;
 &lt;td style="text-align: left"&gt;hilly with an offroad section&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Tue&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=0ZzoCasyoAM"&gt;&lt;strong&gt;Single Arm Inside Circle&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 10 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=OydLETgLfMA"&gt;&lt;strong&gt;Single Arm Outside Circle&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 10 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://www.youtube.com/watch?v=LKNgPDX2wRk"&gt;&lt;strong&gt;Single Arm Shield Cast&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6kg x 10 x 5/5&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Wed&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/wlvn8"&gt;&lt;strong&gt;Run&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;6.6km&lt;/td&gt;
 &lt;td style="text-align: left"&gt;hot!&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Thu&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;KB Clean &amp;amp; Press&lt;/strong&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;16kg x 9 x 3/3/2/2/1/1&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 2:30min (~60s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;strong&gt;&amp;ldquo;FlowFX Heel Drop Complex&amp;rdquo;&lt;/strong&gt;**&lt;/td&gt;
 &lt;td style="text-align: left"&gt;20kg x 5 x 3/3&lt;/td&gt;
 &lt;td style="text-align: left"&gt;start every 90s (~30s rest)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td style="text-align: left"&gt;Fri&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;a href="https://runalyze.com/shared/wokwx"&gt;&lt;strong&gt;Run&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
 &lt;td style="text-align: left"&gt;7.3km&lt;/td&gt;
 &lt;td style="text-align: left"&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;*: 3 rung reverse ladder goes 3 left, 3 right, 2 left, 2 right, 1 left, 1 right&lt;br&gt;
**: x reps of slow (!) heel drops with a bent knee, then x reps with a
straight knee. Repeat on the other side. KB is held on the side that&amp;rsquo;s doing the
drops. Full range of motion, but don&amp;rsquo;t hold the bottom stretch (my damaged
achilles tendon doesn&amp;rsquo;t like that).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=pVv1RctiO2Q"&gt;&lt;strong&gt;Cooldown!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://flowfx.de/images/2022/training-2022-07-30.jpg" alt="Training mats, a kettlebell, and the view outside."&gt;&lt;/p&gt;
&lt;p&gt;Saturday&amp;rsquo;s warmup with a 16kg kettlebell: &lt;a href="https://www.youtube.com/watch?v=XaegZzSbtr0"&gt;Around the world&lt;/a&gt; (2 x 20/20), &lt;a href="https://www.youtube.com/watch?v=25xdtjbFPtw"&gt;Halo&lt;/a&gt; (2 x 5/5),
&lt;a href="https://www.youtube.com/watch?v=TwlQQXAQpaQ"&gt;Around the world front to back&lt;/a&gt; (10 x 1/1), &lt;a href="https://www.youtube.com/watch?v=tOAZDLFzdLE"&gt;Halo Goblet Squat&lt;/a&gt; (10 reps).&lt;/p&gt;</description></item><item><title>My home gym</title><link>https://flowfx.de/blog/my-home-gym/</link><pubDate>Sat, 05 Feb 2022 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/my-home-gym/</guid><description>&lt;p&gt;Basically everything I need for my training at the moment. Plus clothes - sometimes.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://flowfx.de/images/2022/home-gym-jan-2022.jpg" alt="5 kettlebells, 2 heavy clubs, foam roaller, minimal running shows, running sandals"&gt;&lt;/p&gt;</description></item><item><title>Cultural Comments Ep. 24</title><link>https://flowfx.de/blog/cultural-comments-ep-24/</link><pubDate>Sun, 03 Oct 2021 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/cultural-comments-ep-24/</guid><description>&lt;p&gt;&amp;ldquo;Bist du noch bei der C3S? Gibt&amp;rsquo;s die noch?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Diese Frage höre ich zwar nicht häufig, aber doch ab und an. Und jedesmal
denke ich dann, dass ich unbedingt mal wieder mit m.eik reden muss. Neulich war es wieder soweit und das Ergebnis ist
gar nicht schlecht geworden. Erstens weil m.eik gut reden kann und zweitens weil die C3S lebt und ihrem Ziel, der
Zulassung als Verwertungsgesellschaft, weiter Stück für Stück näher kommt. Aber hört selbst:&lt;/p&gt;
&lt;iframe title="Podlove Web Player: Cultural Comments – Der C3S-Podcast - CC024 Corona, Generalversammlung, Welchsel in der Geschäftsführung, Geschäftsaufsicht, Stand der Zulassung" width="320" height="400" src="https://podcast.c3s.cc/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/lib/modules/podlove_web_player/player_v4/dist/share.html?episode=https%3A%2F%2Fpodcast.c3s.cc%2F%3Fpodlove_player4%3D56" frameborder="0" scrolling="no" tabindex="0" loading="lazy"&gt;&lt;/iframe&gt;</description></item><item><title>Vim and the system clipboard</title><link>https://flowfx.de/blog/vim-and-the-system-clipboard/</link><pubDate>Thu, 30 Sep 2021 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/vim-and-the-system-clipboard/</guid><description>&lt;p&gt;Vim config of the week: I can now copy &amp;amp; paste between vim and the rest of my system. This has been something I wanted
to have for a long time, and the &lt;a href="https://vi.stackexchange.com/a/96"&gt;Stack Exchange answer&lt;/a&gt; sounds like it&amp;rsquo;s standard
stuff. In any case, I am now directly yanking and pasting to and from the system clipboard anytime I use &lt;code&gt;y&lt;/code&gt;
or &lt;code&gt;p&lt;/code&gt; in Vim.&lt;/p&gt;
&lt;p&gt;And all with a simple&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;set clipboard+=unnamedplus
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;in &lt;a href="https://codeberg.org/flowfx/dotfiles/commit/b351a3264961f7d901897c6a29285fd45566f550"&gt;my vimrc&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Der Posdcast</title><link>https://flowfx.de/blog/der-posdcast/</link><pubDate>Sun, 06 Dec 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/der-posdcast/</guid><description>&lt;p&gt;Es ist ja nicht so als hätte ich zu viel Zeit, oder dass mir langweilig wäre. Aber
dieses Ding schwirrt schon lange genug in meinem Kopf herum, so dass ich es auch
einfach mal machen kann:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://posdcast.de/"&gt;Der Posdcast&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Was es ist, wird sich glaube ich mit der Zeit erst zeigen. Erstmal ist es ein Ort,
wo ich Episoden abladen kann, die ich aufnehmen möchte, für die es aber keinen
eigenen Podcast braucht.&lt;/p&gt;
&lt;p&gt;Den Anfang machen ein paar Folgen, in denen ich mich mit meinem Freund
&lt;a href="https://bullenscheisse.de/"&gt;Nathan&lt;/a&gt; darüber auskotze, was alles nicht
funktioniert. &lt;del&gt;Ganz&lt;/del&gt;Ziemlich weit oben auf der Liste:
&lt;a href="https://posdcast.de/2020/12/03/alles-anzuenden-1-podcasten.html#aae3a5b8"&gt;Podcasten&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>YouTube channel RSS feeds</title><link>https://flowfx.de/blog/youtube-channel-rss-feeds/</link><pubDate>Sat, 10 Oct 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/youtube-channel-rss-feeds/</guid><description>&lt;p&gt;For mostly unknown reasons I want to delete my Google account at some point in the future. The Google services that I am regularly using are Search, Maps, and - increasingly - YouTube. The latter is the only service that really benefits from an account that remembers subscriptions, lists and the history of watched videos.&lt;/p&gt;
&lt;p&gt;What I &lt;em&gt;will&lt;/em&gt; continue to use are RSS readers. And it turns out that you can (still) subscribe to YouTube channels via their RSS feeds. &lt;a href="https://www.reddit.com/r/privacy/comments/7meku7/alternative_to_youtube_account_youtube_rss/"&gt;Reddit is your friend&lt;/a&gt; and provides the answers:&lt;/p&gt;
&lt;p&gt;The URL for a channel&amp;rsquo;s RSS feed is&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;https://www.youtube.com/feeds/videos.xml?channel_id= + channel_id
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;where the channel ID can be found in the html source of the channel page or may even be part of the channel URL. In any case, I now subscribe to my YouTube channels via boring, old RSS feeds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2020-10-15:&lt;/strong&gt; My very good friend &lt;a href="https://bullenscheisse.de/"&gt;Zeitschlag&lt;/a&gt; tells me that for those channels that do not have set a custom URL, it&amp;rsquo;s enough to just use the channel URL.&lt;/p&gt;
&lt;p&gt;For example, Fat Freddy&amp;rsquo;s Drop - the world&amp;rsquo;s very best band btw. - has the channel URL &lt;code&gt;https://www.youtube.com/channel/UCsLGIbOjsV8TFTco9cL6HHA&lt;/code&gt;. Those random characters at the end is the channel ID. When I add this URL to my &lt;a href="https://freshrss.org/"&gt;FreshRSS&lt;/a&gt; instance, it finds the RSS feed no problem.&lt;/p&gt;
&lt;p&gt;In the case of the hip, young, cool YouTubers like Armen Hammer at &lt;code&gt;https://www.youtube.com/c/ArmenHammerTV&lt;/code&gt;, the channel URL doesn&amp;rsquo;t include this ID but a custom name/slug/identifier. Here, you&amp;rsquo;ll have to go the tedious way as described above.&lt;/p&gt;</description></item><item><title>The Tracks Of My Tears</title><link>https://flowfx.de/blog/the-tracks-of-my-tears/</link><pubDate>Sat, 08 Aug 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-tracks-of-my-tears/</guid><description>&lt;p&gt;I love cover songs. I love bands that take a good song and make it better. Bands like &lt;a href="https://www.youtube.com/watch?v=f9rCUQjmkxU"&gt;Cake&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=QHpU0ZfXZ_g"&gt;Reel Big Fish&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=Q9jJufz9RNE"&gt;Guano Apes&lt;/a&gt;, and &lt;a href="https://www.youtube.com/watch?v=oYFe76uvmms"&gt;Rainer von Vielen&lt;/a&gt;. Joe Cocker made a whole career of it.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s why &lt;a href="https://flowfx.de/blog/hard-to-handle"&gt;Napster was the best!&lt;/a&gt;. Napster had everything, every cover and live version anyone had ever published. Napster would have had this super, mega, uber amazing live version of &lt;a href="https://flowfx.de/blog/hard-to-handle"&gt;Hard To Handle&lt;/a&gt; by the Black Crows, if Napster had survived until 2005.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/ilFOdcrLvHo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;(Spotify doesn&amp;rsquo;t.)&lt;/p&gt;
&lt;p&gt;Napster would have had this super fun rock version of the Temptations &lt;a href="https://www.youtube-nocookie.com/watch?v=PV97roslmt0"&gt;Get Read&lt;/a&gt; by Wishbone Ash.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/NLqyFH6wo4k?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;(Spotify doesn&amp;rsquo;t.)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;code&gt;SNAP&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m always trying to find cover versions of songs. Many times, there are amazing versions out there. And then there&amp;rsquo;s Smokey Robinson&amp;rsquo;s Tracks of My Tears. This song has many, &lt;strong&gt;many&lt;/strong&gt; cover versions available on Spotify. Everyone in music apparently took a shot at it at one time. And they all failed. There&amp;rsquo;s not a single cover version that makes the song better. And please don&amp;rsquo;t go looking for the Bryan Adams recording of it. You&amp;rsquo;re welcome.&lt;/p&gt;
&lt;p&gt;It seems to me that in this rare case, the originial is the best there is, and noone can improve upon it.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/rNS6D4hSQdA?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;I challenge everyone to show me that I&amp;rsquo;m wrong.&lt;/p&gt;
&lt;p&gt;(Seriously. I recently started playing in a rock cover band, and I want my first proposal for a new song to be a real good one. A hard-rock version of Tracks Of My Tears would be amazing. I&amp;rsquo;ll add the horn section myself.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update Sep 10th, 2020:&lt;/strong&gt; There is actually a pretty decent cover version, recorded by Boyzone. It does not change the song in any way, but the production is superb, and the horn parts are really well done!&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/s17xomf6RN8?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>3 episodes in one day</title><link>https://flowfx.de/blog/3-episodes-in-one-day/</link><pubDate>Thu, 12 Mar 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/3-episodes-in-one-day/</guid><description>&lt;p&gt;Recently, Nick and I published 3 episodes of &lt;a href="https://severalwaystolive.com/"&gt;Several Ways To Live&lt;/a&gt; in a single day. How did we do that, do you ask? Easy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Record several times over the span of many weeks&lt;/li&gt;
&lt;li&gt;Edit and upload 3 episodes&lt;/li&gt;
&lt;li&gt;Let Nick do his thing&lt;/li&gt;
&lt;li&gt;Nick does his thing and adds shownotes to all 3 episodes in one evening&lt;/li&gt;
&lt;li&gt;Publish all 3 episodes at the same time&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here you go. :)&lt;/p&gt;
&lt;div class="episode-container"&gt;
&lt;iframe title="Podlove Web Player: Several Ways To Live In Mexico City - SW027 Kristin's Place" width="320" height="400" src="https://severalwaystolive.com/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/lib/modules/podlove_web_player/player_v4/dist/share.html?episode=https%3A%2F%2Fseveralwaystolive.com%2F%3Fpodlove_player4%3D158" frameborder="0" scrolling="no" tabindex="0" loading="lazy"&gt;&lt;/iframe&gt;⎈
&lt;/div&gt;
&lt;div class="episode-container"&gt;
&lt;iframe title="Podlove Web Player: Several Ways To Live In Mexico City - SW028 Valldemossa" width="320" height="400" src="https://severalwaystolive.com/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/lib/modules/podlove_web_player/player_v4/dist/share.html?episode=https%3A%2F%2Fseveralwaystolive.com%2F%3Fpodlove_player4%3D162" frameborder="0" scrolling="no" tabindex="0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;div class="episode-container"&gt;
&lt;iframe title="Podlove Web Player: Several Ways To Live In Mexico City - SW029 Roma Norte, Mexico City" width="320" height="400" src="https://severalwaystolive.com/wp-content/plugins/podlove-podcasting-plugin-for-wordpress/lib/modules/podlove_web_player/player_v4/dist/share.html?episode=https%3A%2F%2Fseveralwaystolive.com%2F%3Fpodlove_player4%3D165" frameborder="0" scrolling="no" tabindex="0" loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;</description></item><item><title>A simple new theme</title><link>https://flowfx.de/blog/a-simple-new-theme/</link><pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/a-simple-new-theme/</guid><description>&lt;p&gt;A few weeks ago I updated the &lt;a href="https://getnikola.com/"&gt;Nikola&lt;/a&gt; that powers this site to version 8. At the same time, I started looking into how I could get rid of all external dependencies, e.g. JavaScript and fonts.&lt;/p&gt;
&lt;p&gt;The first step now is to switch to the very basic &lt;a href="https://themes.getnikola.com/v8/base-jinja/"&gt;base-jinja theme&lt;/a&gt;. So far, I&amp;rsquo;ve only changed the main color to the familiar red, added a &lt;code&gt;.video-container&lt;/code&gt; CSS class that helps making embedded YouTube videos responsive, and removed all JavaScript from the theme templates.&lt;/p&gt;
&lt;p&gt;There are still embedded videos and tweets that load external files. But I&amp;rsquo;m okay with that for now.&lt;/p&gt;
&lt;p&gt;Sometime in the future I&amp;rsquo;ll have to make the site a bit prettier. I really liked the old styling. But for now, this has to do.&lt;/p&gt;</description></item><item><title>Linktipp: Zeitplanung und Heimarbeit</title><link>https://flowfx.de/blog/linktipp-zeitplanung-und-heimarbeit/</link><pubDate>Wed, 11 Mar 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/linktipp-zeitplanung-und-heimarbeit/</guid><description>&lt;p&gt;Es ist kein Geheimnis, dass ich großer Fan davon bin, meine Arbeit außerhalb des Firmenbüros zu erledigen. Meist passiert dies in meinem Heimbüro, äh, zuhause. Letzte Woche war ich aber zum Beispiel auch ganz woanders, im tiefsten Niedersachsen, in einem dunklen Keller ohne Mobilfunkempfang, und das hat ebenfalls sehr gut für mich funktioniert.&lt;/p&gt;
&lt;p&gt;Der &lt;a href="https://bullenscheisse.de"&gt;Nathan&lt;/a&gt; macht neuerdings &lt;a href="https://alleinzu.haus/"&gt;einen Podcast&lt;/a&gt;, in dem er davon erzählt, wie er lernt, 100% von zuhause aus zu arbeiten. Das hat nämlich durchaus seine Tücken. In den nächsten Tagen bin ich mit ihm verabredet, um mal ganz kurz über das verteilte Arbeiten von unterwegs zu reden. Meine Erfahrungen der letzten Woche drehen sich hauptsächlich um den ergonomischen Arbeitsplatz und veränderte Routinen.&lt;/p&gt;
&lt;p&gt;Auslöser für diesen kurzen Eintrag war aber Leahs neuer Artikel &amp;ldquo;&lt;a href="https://leah.is/posts/zeitplanung-und-heimarbeit/"&gt;Zeitplanung und Heimarbeit&lt;/a&gt;&amp;rdquo;, den ich euch wärmstens empfehlen möchte. Insbesondere bei ihrer Beobachtung zu den maximal möglichen, konzentrierten Arbeitsstunden pro Tag bin ich voll und ganz bei ihr.&lt;/p&gt;</description></item><item><title>Copy &amp; paste from tmux to system clipboard</title><link>https://flowfx.de/blog/copy-paste-from-tmux-to-system-clipboard/</link><pubDate>Thu, 16 Jan 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/copy-paste-from-tmux-to-system-clipboard/</guid><description>&lt;p&gt;For the first time in many years I am using a Linux machine for my work. In general I am extremely pleased with the system I&amp;rsquo;ve set up. But of course, there are things that don&amp;rsquo;t &amp;ldquo;just work&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Like&amp;hellip; copy selected text from a tmux pane to the clipboard.&lt;/p&gt;
&lt;p&gt;As usual, &lt;a href="https://unix.stackexchange.com/a/349020"&gt;StackOverflow&lt;/a&gt; knows the answer. In short:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-Bash" data-lang="Bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# .tmux.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set-option -g mouse on
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;set-option -s set-clipboard off
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel &lt;span style="color:#e6db74"&gt;&amp;#34;xclip -se c -i&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How to get rid of GitHub notifications</title><link>https://flowfx.de/blog/how-to-get-rid-of-github-notifications/</link><pubDate>Thu, 16 Jan 2020 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/how-to-get-rid-of-github-notifications/</guid><description>&lt;p&gt;I don&amp;rsquo;t like notifications. I&amp;rsquo;ve minimized the number of notifications I receive on my phone to basically: direct messages, and phone calls from my wife. I also don&amp;rsquo;t like notifications on my desktop system. I&amp;rsquo;ve turned everything off on every system I use.&lt;/p&gt;
&lt;p&gt;But there&amp;rsquo;s one place that I visit constantly, every day, every hour, where I couldn&amp;rsquo;t get rid of the tiny blue dot that indicates that something changed, someone commented, or something new has to be reviewed. And that&amp;rsquo;s GitHub.&lt;/p&gt;
&lt;p&gt;During my last vacation, I logged out of GitHub on all systems, just to avoid seeing that blue dot telling me that my colleagues at work are busy saving the world. I didn&amp;rsquo;t do any programming during that time, but I still had to visit GitHub sometimes!&lt;/p&gt;
&lt;p&gt;Anyways. &lt;a href="https://mastodon.social/@l3viathan/103480435257611605"&gt;The internet&lt;/a&gt;, of course, has a solution. Using &lt;a href="https://addons.mozilla.org/de/firefox/addon/ublock-origin/"&gt;uBlock Origin&lt;/a&gt;, I can remove only the tiny blue notifications indicator from my github.com. It&amp;rsquo;s something like &amp;ldquo;right click &amp;raquo; block element &amp;raquo; select the blue dot&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In the uBlock settings under &amp;ldquo;My filters&amp;rdquo; there&amp;rsquo;s now this entry:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;! 1/15/2020 https://github.com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;github.com##.unread.mail-status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;which solves all my problems. :D&lt;/p&gt;</description></item><item><title>Auf geht's Freiburg, kämpfen und siegen!</title><link>https://flowfx.de/blog/auf-gehts-freiburg-kampfen-und-siegen/</link><pubDate>Sat, 21 Sep 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/auf-gehts-freiburg-kampfen-und-siegen/</guid><description>&lt;p&gt;Gestern war ich das erste Mal seit 20 Jahren beim Eishockey. Nachdem ich damals einige Spiele der &lt;a href="http://www.providencebruins.com/"&gt;Providence Bruins&lt;/a&gt; miterleben durfte, war es diesmal ein DEL-Spiel zwischen den Adlern aus Mannheim und einer Brausetruppe aus München in der SAP-Arena hier um die Ecke.&lt;/p&gt;
&lt;p&gt;Da ich weder die Regeln noch die Taktik dieses Spiels verstehe, habe ich mich auf die wichtigen Beobachtungen konzentriert.&lt;/p&gt;
&lt;h2 id="die-pausenshow"&gt;Die Pausenshow&lt;/h2&gt;
&lt;p&gt;Die zwei Eispolierfahrzeuge brauchen zu zweit 5 Minuten, um die Eisfläche einmal abzufahren. Dabei hätten sie dafür bis zu 18 Minuten Zeit. Ich spüre deutliches Optimierungspotenzial.&lt;/p&gt;
&lt;h2 id="der-bierstand"&gt;Der Bierstand&lt;/h2&gt;
&lt;p&gt;Die Stadionwurst konnte ich mit Bargeld bezahlen. Das kenne ich aus den Fußballarenen der Neuzeit nicht mehr. Dafür ist das Bier genauso schlecht wie überall sonst auch.&lt;/p&gt;
&lt;p&gt;Eben jener Bierstand ist zwischen den Halbzeitpausen übrigens wie leergefegt. Ideal, um die Toiletten zu besuchen und den Getränkevorrat aufzufüllen.&lt;/p&gt;
&lt;h2 id="die-fans"&gt;Die Fans&lt;/h2&gt;
&lt;p&gt;Die Fangesänge sind dieselben wie im Fußballstadion. Es werden allerdings nur die einfachen Songs gesungen, die die ich also auch noch mitsingen kann. Die individuellen Mannschafts- oder Städtenamen waren allerdings unverständlich, weshalb mein Gehirn überall immer &amp;ldquo;Freiburg&amp;rdquo; eingefügt hat. Sehr angenehm!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;RaBa München bringt genauso viele Auswärtsfans mit wie RaBa Leipzig. Das war schon ziemlich lächerlich, denn Mannheim ist immer eine Reise wert.&lt;/p&gt;
&lt;h2 id="das-spiel"&gt;Das Spiel&lt;/h2&gt;
&lt;p&gt;Neben 9 Toren fiel mir vom Spiel noch auf:&lt;/p&gt;
&lt;p&gt;Da heult keiner, weil er mal unsanft zu Boden gebracht wird. Erfrischend anders. Andererseits war ich irritiert, dass es gar keine Faustkämpfe auf dem Eis gab. Das habe ich anders in Erinnerung.&lt;/p&gt;
&lt;p&gt;Und der Videobeweis ist scheiße.&lt;/p&gt;</description></item><item><title>Anki vs. the RZL</title><link>https://flowfx.de/blog/anki-vs-the-rzl/</link><pubDate>Fri, 05 Jul 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/anki-vs-the-rzl/</guid><description>&lt;p&gt;Last week I went to our local hackspace, the &lt;a href="https://raumzeitlabor.de/"&gt;RaumZeitLabor&lt;/a&gt;, and I talked to &lt;a href="https://chaos.social/web/accounts/12919"&gt;Cheatha&lt;/a&gt; about my recent adventures with &lt;a href="https://apps.ankiweb.net/"&gt;Anki&lt;/a&gt;. There were a few other people there that listened to my ramblings as well, and their reactions were not at all what I had expected.&lt;/p&gt;
&lt;p&gt;It wasn&amp;rsquo;t a well-prepared talk or anything, but the ensuing discussion was eye-opening.&lt;/p&gt;
&lt;p&gt;There were a few firmly held opinions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;memorizing facts using the flashcard method (Karteikartenlernen) is horrifying to many.&lt;/li&gt;
&lt;li&gt;the same people say that it doesn&amp;rsquo;t make sense for learning a programming language, because learning how to program is a matter of practice and practice alone.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I even confused Cheatha, which is hard to do. So my main takeaway from the evening is that there are many more ideas in what I&amp;rsquo;m working on than I realized, all of which I tried to put into one short talk. But that simply doesn&amp;rsquo;t work. The ideas are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;What is &lt;a href="https://en.wikipedia.org/wiki/Spaced_repetition"&gt;spaced-repetition&lt;/a&gt; learning? How and why does it work? What&amp;rsquo;s it good for? &lt;em&gt;(boring but necessary)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;How to leverage Anki&amp;rsquo;s templating system to efficiently create effective flashcards. &lt;em&gt;(fun for nerds like us, but…)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;How I captured and memorized vocabulary for learning Spanish when I lived in Mexico, and how I&amp;rsquo;m capturing and memorizing vocabulary while learning Ruby now. &lt;em&gt;(my main focus right now)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;How I try to remember more of what I read: books, articles, documentation. &lt;em&gt;(still a little fuzzy, also for me)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;tbc&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&amp;rsquo;ll have to explore each of these ideas separately. And I will, because I still believe that it will benefit me. So I guess the very next question I have to answer is: what benefit do I hope to get from memorizing all this information? It&amp;rsquo;s a valid question that until now got drowned by my excitement of learning the new tools and the perception of &amp;ldquo;making progress&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Better Anki Learning Steps</title><link>https://flowfx.de/blog/better-anki-learning-steps/</link><pubDate>Sun, 23 Jun 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/better-anki-learning-steps/</guid><description>&lt;p&gt;I&amp;rsquo;ve been playing around with &lt;a href="https://apps.ankiweb.net/"&gt;Anki&lt;/a&gt;, the &lt;a href="https://en.wikipedia.org/wiki/Spaced_repetition"&gt;spaced repetition&lt;/a&gt; application, A LOT in the last few weeks. This will certainly not be the last post about Anki, but I&amp;rsquo;ll start with a simple reference post for me to remember where I learned &lt;strong&gt;how Anki&amp;rsquo;s learning steps work&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Check out this video:&lt;/p&gt;
&lt;div class="video-container"&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/1XaJjbCSXT0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen loading="lazy"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;It explains&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;the different &lt;strong&gt;types&lt;/strong&gt; of cards in Anki,&lt;/li&gt;
&lt;li&gt;how learning &lt;strong&gt;intervals&lt;/strong&gt; are &lt;strong&gt;calculated&lt;/strong&gt;,&lt;/li&gt;
&lt;li&gt;what the &lt;strong&gt;ease&lt;/strong&gt; and &lt;strong&gt;interval modifiers&lt;/strong&gt; are,&lt;/li&gt;
&lt;li&gt;what the &lt;strong&gt;ease factor&lt;/strong&gt; is, and&lt;/li&gt;
&lt;li&gt;how &lt;strong&gt;answers modify&lt;/strong&gt; the interval.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It also talks in depth about &amp;ldquo;Ease Hell&amp;rdquo;, what it is, and how to avoid it.&lt;/p&gt;
&lt;p&gt;Now I finally understand what Anki&amp;rsquo;s Learning Phase is all about (&lt;a href="https://youtu.be/1XaJjbCSXT0?t=753"&gt;12:34&lt;/a&gt;), and how to best use it. Money quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Answering a card incorrectly in the learning phase does not change its ease factor.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The proposed settings for the Learning Phase are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Steps (minutes): 15 1440 8640&lt;/li&gt;
&lt;li&gt;Graduating Interval (days): 15&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These numbers are based on the SuperMemo 2 algorithm (&lt;a href="https://youtu.be/1XaJjbCSXT0?t=1134"&gt;18:34&lt;/a&gt;), which is what Anki is actually using, just not with sane default. Watch the whole video for more details. It&amp;rsquo;s worth it!&lt;/p&gt;</description></item><item><title>What I've learned about the Irish</title><link>https://flowfx.de/blog/what-ive-learned-about-the-irish/</link><pubDate>Thu, 28 Feb 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/what-ive-learned-about-the-irish/</guid><description>&lt;p&gt;I spent the last few days in Dublin, Ireland, visiting a very good friend of mine. These are a few observations I made during my stay:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Irish consider themselves much less European than I had thought.&lt;/li&gt;
&lt;li&gt;Mainland Europe is simply called &amp;ldquo;Europe&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;They hate the English.&lt;/li&gt;
&lt;li&gt;Until recently, Ireland had been living in the Middle Ages, as is accurately portrayed in the 1991 movie &lt;a href="https://www.imdb.com/title/tt0101605/?ref_=nv_sr_1"&gt;The Commitments&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;They frickin&amp;rsquo; &lt;strong&gt;love&lt;/strong&gt; The Commitments.&lt;/li&gt;
&lt;li&gt;Germans are forgiven for not knowing anything about Rugby.&lt;/li&gt;
&lt;li&gt;I have a better chance of catching an SC Freiburg match in Dublin than I do in Mannheim.&lt;/li&gt;
&lt;li&gt;They know how to make a good breakfast.&lt;/li&gt;
&lt;li&gt;They call Americano an Americano.&lt;/li&gt;
&lt;li&gt;Guinness is owned by big alcohol and employs mob tactics to block other beer makers from getting their products into pubs.&lt;/li&gt;
&lt;li&gt;Irish pub culture is as strong and real as it is advertised. Loving it!&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Jason Swett: How I write characterization tests</title><link>https://flowfx.de/blog/jason-swett-how-i-write-characterization-tests/</link><pubDate>Mon, 25 Feb 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/jason-swett-how-i-write-characterization-tests/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Let’s say I come across a piece of code that I want to refactor but
unfortunately&lt;/p&gt;
&lt;p&gt;a) I don’t understand what it does and&lt;br&gt;
b) it’s not covered by tests.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yupp. That&amp;rsquo;s a problem. &lt;a href="https://www.codewithjason.com/write-characterization-tests/"&gt;How I write characterization
tests&lt;/a&gt; shows a
technique for how to deal with this situation. I, too, use tests to figure out
how a piece of code actually works. Works better for me than actually
reading the code. 🤨&lt;/p&gt;</description></item><item><title>Speeding up RSpec with bundler standalone and springified binstubs</title><link>https://flowfx.de/blog/speeding-up-rspec-with-bundler-standalone-and-springified-binstubs/</link><pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/speeding-up-rspec-with-bundler-standalone-and-springified-binstubs/</guid><description>&lt;p&gt;Testing Rails with RSpec is slow, or at least it feels slow to me in all the
projects I am working on. Any speed gain helps my productivity when it reduces
the time I&amp;rsquo;m waiting between writing code and running tests.&lt;/p&gt;
&lt;p&gt;There are quite a few posts out there that tackle this problem. But most are pretty old, and none really worked for me, so I&amp;rsquo;m not going to link to them.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.amazon.de/Effective-Testing-RSpec-Build-Confidence/dp/1680501984"&gt;The book I&amp;rsquo;m reading&lt;/a&gt; inspired me to look into the &lt;code&gt;bundler --standalone&lt;/code&gt; command. Not that I really understand what&amp;rsquo;s happening there, but at least I got a little bit of a speed bump out of it.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s what I did, and how I&amp;rsquo;m running my tests now.&lt;/p&gt;
&lt;h2 id="spring"&gt;Spring&lt;/h2&gt;
&lt;p&gt;First I made sure my Rails app is installed with &lt;a href="https://github.com/rails/spring"&gt;Spring&lt;/a&gt; enabled. Luckily, this is the default. In order to later run RSpec from spring, I added the &lt;a href="https://github.com/jonleighton/spring-commands-rspec"&gt;spring-commands-rspec&lt;/a&gt; gem to my Gemfile.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem &lt;span style="color:#e6db74"&gt;&amp;#39;spring-commands-rspec&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="bundler"&gt;Bundler&lt;/h2&gt;
&lt;p&gt;Next, I used bundler&amp;rsquo;s standalone command,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ bundle install --standalone --path .bundle
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and then &lt;a href="https://github.com/rails/spring#setup"&gt;&amp;ldquo;springified&amp;rdquo; the installed binstubs&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ bundle exec spring binstub --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="problems"&gt;Problems&lt;/h2&gt;
&lt;p&gt;I encountered a problem with SQLite 1.4.0. I didn&amp;rsquo;t investigate it further, but pinned the gem to version 1.3 instead.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;group &lt;span style="color:#e6db74"&gt;:development&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;:test&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gem &lt;span style="color:#e6db74"&gt;&amp;#34;sqlite3&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;~&amp;gt; 1.3.6&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Afterwards I repeated the install command.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ bundle install --standalone --path .bundle
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anytime you want to use &lt;code&gt;bundle install&lt;/code&gt;, you now have to use &lt;code&gt;bundle install --standalone&lt;/code&gt; instead. I created the bash alias &lt;code&gt;bis&lt;/code&gt; for that.&lt;/p&gt;
&lt;h2 id="vim-test"&gt;vim-test&lt;/h2&gt;
&lt;p&gt;I recently started &lt;a href="https://flowfx.de/blog/running-rspec-with-a-single-keystroke-in-a-separate-tmux-session"&gt;using the vim-test&lt;/a&gt; plugin. That plugin has a neat option that makes it use the springified binstubs.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; .vimrc&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test&lt;/span&gt;#&lt;span style="color:#a6e22e"&gt;ruby&lt;/span&gt;#&lt;span style="color:#a6e22e"&gt;use_spring_binstub&lt;/span&gt; = &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, when I&amp;rsquo;m editing &lt;code&gt;app/models/transformer_spec.rb&lt;/code&gt; and I hit the return key in normal mode, &lt;code&gt;vim-test&lt;/code&gt; executes&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ./bin/spring rspec spec/models/transformer_spec.rb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Because of spring, everything&amp;rsquo;s faster and I have actually seen tests being executed in less than a second. Still not super fast but better than before.&lt;/p&gt;</description></item><item><title>Teach vim-rails about request specs</title><link>https://flowfx.de/blog/teach-vim-rails-about-request-specs/</link><pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/teach-vim-rails-about-request-specs/</guid><description>&lt;p&gt;Slowly but surely I&amp;rsquo;m getting to know the really interesting Rails-related Vim
plugins. First and foremost: &lt;a href="https://github.com/tpope/vim-rails"&gt;vim-rails&lt;/a&gt;.
A new feature that I started using recently is the &lt;code&gt;:A&lt;/code&gt; &lt;strong&gt;alternate file&lt;/strong&gt;
command. Basically, this makes it super quick to jump from a model file to its model spec file. Or from a controller to its spec.&lt;/p&gt;
&lt;p&gt;Since Rails 5.?, controller specs have fallen out of DHH&amp;rsquo;s favor. We now use &lt;strong&gt;request specs&lt;/strong&gt;. Unfortunately, &lt;code&gt;vim-rails&lt;/code&gt; doesn&amp;rsquo;t know about request specs. Fortunately, we can tell it about them.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim-rails&lt;/code&gt; is very well documented, and &lt;code&gt;:help rails-projections&lt;/code&gt; provides the solution to this problem. This is what I put in my &lt;code&gt;.vimrc&lt;/code&gt;, and now &lt;code&gt;:A&lt;/code&gt; jumps between my controller files and the related request specs.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;g&lt;/span&gt;:&lt;span style="color:#a6e22e"&gt;rails_projections&lt;/span&gt; = {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;app/controllers/*_controller.rb&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;test&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;spec/controllers/{}_controller_spec.rb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;spec/requests/{}_spec.rb&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ },
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;spec/requests/*_spec.rb&amp;#34;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;alternate&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ &lt;span style="color:#e6db74"&gt;&amp;#34;app/controllers/{}_controller.rb&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ ],
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; \ }}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Running RSpec with a single keystroke in a separate tmux session</title><link>https://flowfx.de/blog/running-rspec-with-a-single-keystroke-in-a-separate-tmux-session/</link><pubDate>Mon, 11 Feb 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/running-rspec-with-a-single-keystroke-in-a-separate-tmux-session/</guid><description>&lt;p&gt;This is a tiny update to &lt;a href="https://thoughtbot.com/blog/running-specs-from-vim-sent-to-tmux-via-tslime"&gt;Running Specs from Vim, Sent to tmux via Tslime&lt;/a&gt; from the thoughtbot blog. Go read it, and realize that it&amp;rsquo;s six years old.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/thoughtbot/vim-rspec"&gt;vim-rspec&lt;/a&gt; has not been updated in two years. It probably still works fine, but there&amp;rsquo;s a new vim plugin that does what vim-rspec does, just better: &lt;a href="https://github.com/janko/vim-test"&gt;vim-test&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I finally set this up yesterday:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-vim" data-lang="vim"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; Add vim-test and tslime to vim plugins.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Plug&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;janko/vim-test&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;Plug&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;jgdavey/tslime.vim&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; Configure vim-test to execute test command using tslime&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test&lt;/span&gt;#&lt;span style="color:#a6e22e"&gt;strategy&lt;/span&gt; = &lt;span style="color:#e6db74"&gt;&amp;#34;tslime&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; Configure &amp;lt;CR&amp;gt; aka the Return key to run my test file.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;nmap&lt;/span&gt; &amp;lt;&lt;span style="color:#a6e22e"&gt;CR&lt;/span&gt;&amp;gt; :&lt;span style="color:#a6e22e"&gt;TestFile&lt;/span&gt;&amp;lt;&lt;span style="color:#a6e22e"&gt;CR&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; I&amp;#39;m still figuring out which test commands make the most sense&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;&amp;#34; in my workflow. Right now, this feels pretty good.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;nmap&lt;/span&gt; &amp;lt;&lt;span style="color:#a6e22e"&gt;leader&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style="color:#a6e22e"&gt;CR&lt;/span&gt;&amp;gt; :&lt;span style="color:#a6e22e"&gt;TestLast&lt;/span&gt;&amp;lt;&lt;span style="color:#a6e22e"&gt;CR&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, when I&amp;rsquo;m in normal mode and hit the return key, rspec gets executed for the current file &lt;strong&gt;in a different tmux pane (!!)&lt;/strong&gt;. What I didn&amp;rsquo;t understand before using this was how it would select the correct pane. Turns out, it&amp;rsquo;s super easy. On the first run, it asks me for the tmux session, window, and pane (if necessary). After that, it remembers and it always sends the test command there. Super cool!&lt;/p&gt;</description></item><item><title>Unit testing and test parametrization with RSpec?</title><link>https://flowfx.de/blog/unit-testing-and-test-parametrization-with-rspec/</link><pubDate>Sun, 27 Jan 2019 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/unit-testing-and-test-parametrization-with-rspec/</guid><description>&lt;p&gt;Last year I made the switch from developing with Python and Django to working with Ruby and Rails. With that, I also had to learn a new test runner. No more &lt;a href="https://docs.pytest.org/en/latest/"&gt;pytest&lt;/a&gt; :(.&lt;/p&gt;
&lt;p&gt;For some reason, a very popular test runner for testing Rails apps is &lt;a href="https://rspec.info/"&gt;RSpec&lt;/a&gt;. Its domain-specific language (DSL) is written with Behavior Driven Development in mind. Hence its tag line:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Behaviour Driven Development for Ruby.
Making TDD Productive and Fun.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&amp;rsquo;m really struggling with using RSpec, and I wonder why. Most of the time, I&amp;rsquo;m fighting the framework instead of enjoying its benefits. So I want to explore these questions and hopefully get some answers how to do this better. This is the first post on this topic.&lt;/p&gt;
&lt;h2 id="testing-simple-functions"&gt;Testing simple functions&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s take a simple function that adds two numbers.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(a, b):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; a &lt;span style="color:#f92672"&gt;+&lt;/span&gt; b
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Ruby&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;add&lt;/span&gt;(a, b)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; a &lt;span style="color:#f92672"&gt;+&lt;/span&gt; b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Using pytest, it takes 2 lines of code to test this function with one set of parameters.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_add&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; add(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Using RSpec, this takes me at least 5 loc.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;describe &lt;span style="color:#e6db74"&gt;&amp;#39;#add&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; it &lt;span style="color:#e6db74"&gt;&amp;#39;returns the sum of 2 integers&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expect(add(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq(&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or 4 if I use the &lt;code&gt;subject&lt;/code&gt; shorthand notation.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;describe &lt;span style="color:#e6db74"&gt;&amp;#39;#add&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subject { add(&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; it { is_expected&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s &lt;em&gt;a lot&lt;/em&gt; of words for just a simple assertion.&lt;/p&gt;
&lt;h2 id="test-parametrization"&gt;Test parametrization&lt;/h2&gt;
&lt;p&gt;Now I want to test not only one set of test parameters, but many. With pytest I use the parametrize marker.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.mark.parametrize&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;a, b, expected&amp;#34;&lt;/span&gt;, [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_add&lt;/span&gt;(a, b, expected):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; add(a, b) &lt;span style="color:#f92672"&gt;==&lt;/span&gt; expected
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In case of a test failure, pytest shows me exactly which parameters lead to the error.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;========&lt;/span&gt; FAILURES &lt;span style="color:#f92672"&gt;=========&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;________ test_add&lt;span style="color:#f92672"&gt;[&lt;/span&gt;1-2-4&lt;span style="color:#f92672"&gt;]&lt;/span&gt; ______
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;a &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 1, b &lt;span style="color:#f92672"&gt;=&lt;/span&gt; 2, expected &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; @pytest.mark.parametrize&lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;a, b, expected&amp;#34;&lt;/span&gt;, &lt;span style="color:#f92672"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;5, 4, 9&lt;span style="color:#f92672"&gt;)&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;1, 2, 4&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; def test_add&lt;span style="color:#f92672"&gt;(&lt;/span&gt;a, b, expected&lt;span style="color:#f92672"&gt;)&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;gt; assert add&lt;span style="color:#f92672"&gt;(&lt;/span&gt;a, b&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;==&lt;/span&gt; expected
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;E assert 3 &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;E + where 3 &lt;span style="color:#f92672"&gt;=&lt;/span&gt; add&lt;span style="color:#f92672"&gt;(&lt;/span&gt;1, 2&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="rspec-1"&gt;RSpec 1&lt;/h3&gt;
&lt;p&gt;A naïve Ruby implementation would be to loop over an array of parameter arrays.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;params &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;describe &lt;span style="color:#e6db74"&gt;&amp;#39;#add&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; params&lt;span style="color:#f92672"&gt;.&lt;/span&gt;each &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; &lt;span style="color:#f92672"&gt;|&lt;/span&gt;p&lt;span style="color:#f92672"&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; it &lt;span style="color:#e6db74"&gt;&amp;#39;returns the sum of 2 integers&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expect(add(p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;, p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq(p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Failure output is not very helpful as I don&amp;rsquo;t see which parameters caused the error.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Failures&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#75715e"&gt;#add returns the sum of 2 integers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;Failure&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Error&lt;/span&gt;: expect(add(p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;, p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq(p&lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;expected&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;got&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (compared using &lt;span style="color:#f92672"&gt;==&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# ./demo02_spec.rb:16:in `block (3 levels) in &amp;lt;top (required)&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="rspec-2"&gt;RSpec 2&lt;/h3&gt;
&lt;p&gt;Another approach, that I found on the internets, includes writing a test function and call that function repeatedly using different parameters.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_add&lt;/span&gt;(a, b, expected)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; describe &lt;span style="color:#e6db74"&gt;&amp;#39;#add&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; subject { add(a, b) }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; it { is_expected&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq expected }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test_add &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test_add &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;test_add &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The test function looks a little obscure, but the last part is very readable. Also, when a failure occurs, we can see the exact line where it happens.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Failures&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#75715e"&gt;#add should eq 4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;Failure&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Error&lt;/span&gt;: it { is_expected&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq expected }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;expected&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;got&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (compared using &lt;span style="color:#f92672"&gt;==&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# ./demo03_spec.rb:12:in `block (2 levels) in test_add&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="rspec-parametrized"&gt;rspec-parametrized&lt;/h3&gt;
&lt;p&gt;Lastly, there is the &lt;a href="https://github.com/tomykaira/rspec-parameterized"&gt;rspec-parameterized&lt;/a&gt; plugin that provides a syntax that&amp;rsquo;s very close to pytest.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;require &lt;span style="color:#e6db74"&gt;&amp;#39;rspec-parameterized&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;describe &lt;span style="color:#e6db74"&gt;&amp;#39;#add&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; where(&lt;span style="color:#e6db74"&gt;:a&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;:b&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;:expected&lt;/span&gt;) &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; with_them &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; it &lt;span style="color:#e6db74"&gt;&amp;#39;returns the sum of 2 integers&amp;#39;&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; expect(add(a, b))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq expected
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Failure output is actually helpful, even if not as clean as pytest:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;Failures&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;) &lt;span style="color:#75715e"&gt;#add a: 1, b: 2, expected: 4 returns the sum of 2 integers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;Failure&lt;/span&gt;&lt;span style="color:#f92672"&gt;/&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Error&lt;/span&gt;: expect(add(a, b))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;to eq expected
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;expected&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;got&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (compared using &lt;span style="color:#f92672"&gt;==&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# ./demo05_spec.rb:20:in `block (3 levels) in &amp;lt;top (required)&amp;gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The reason we have not yet introduced this plugin into our test suite at work is that the gem has a few dependencies that have not been updated in &lt;em&gt;many&lt;/em&gt; years:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;abstract_type&lt;/code&gt;, current version: 0.0.7 (2013)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;adamantium&lt;/code&gt; 0.2.0 (2014)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;concord&lt;/code&gt; 0.1.5 (2014)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;proc_to_ast&lt;/code&gt; 0.1.0 (2015)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="conclusion"&gt;Conclusion?&lt;/h2&gt;
&lt;p&gt;All-in-all, I am still very confused about how to best use RSpec. Testing simple functions includes &lt;em&gt;a lot&lt;/em&gt; of boilerplate code that&amp;rsquo;s hard to write and slow to read. Test parameterization is doable but no clear best practice has emerged, yet.&lt;/p&gt;
&lt;p&gt;If you can help me out and give me some pointers, or if you can tell me that I&amp;rsquo;m going at this completely wrong, please mention me on &lt;a href="https://chaos.social/@flowfx/"&gt;Mastodon&lt;/a&gt; (preferred) or &lt;a href="https://twitter.com/flowfx_"&gt;Twitter&lt;/a&gt; or &lt;a href="https://flowfx.de/contact"&gt;contact me another way&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Possible future questions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hypothesis.works/articles/what-is-property-based-testing/"&gt;Property-based testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GIVEN-WHEN-THEN&lt;/li&gt;
&lt;li&gt;Utilizing &lt;code&gt;--format documentation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FactoryBot.create&lt;/code&gt; vs. &lt;code&gt;FactoryBot.build&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Update August 2018</title><link>https://flowfx.de/blog/update-august-2018/</link><pubDate>Wed, 15 Aug 2018 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/update-august-2018/</guid><description>&lt;p&gt;Working a full-time job in an office is something different. Add 3 hours of commute each day, and my life is a lot different than it was a year ago. I firmly believe that I&amp;rsquo;m about as productive now than I was when I was working fewer hours but alone in my home office. But that&amp;rsquo;s for another day.&lt;/p&gt;
&lt;p&gt;More time to and at work means a lot less time for other things, which is something I am still struggling to get used to. Combine that with having moved across the Atlantic, finding and moving into a new apartment, and dealing with German bureaucracy! All things considered, I guess I&amp;rsquo;m dealing with it pretty well.&lt;/p&gt;
&lt;p&gt;Still, I had to pause a lot of activities during the last four months, including this blog. As I&amp;rsquo;m learning a new programming language (Ruby) and a new web framework (Rails), there should be enough fun topics to write about (There are). Just like last year with Django and software testing. But who has the time? Not me at the moment. At least I played my first gig with my old band two weeks ago. That was good, and it won&amp;rsquo;t be the last time.&lt;/p&gt;
&lt;p&gt;Lastly, in case you&amp;rsquo;re reading this and wonder why, after almost four months back in Germany, I haven&amp;rsquo;t managed to come visit you: I&amp;rsquo;m sorry, I&amp;rsquo;m working on it. In the meantime, our guestroom is large, has an even larger bed and is open to you anytime!&lt;/p&gt;</description></item><item><title>Moving back to Germany</title><link>https://flowfx.de/blog/moving-back-to-germany/</link><pubDate>Wed, 04 Apr 2018 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/moving-back-to-germany/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/blog/looking-for-work-django-developer-can-do-a-lot"&gt;My search for a new job&lt;/a&gt; has been successful. I&amp;rsquo;m starting a new position as a Ruby-On-Rails developer with a company at the Frankfurt Airport on May 2nd (I will commute from Mannheim). In the end it took me 4 months, 7 applications, 5 interviews and 2 job offers. This doesn&amp;rsquo;t sound too bad, but still, it&amp;rsquo;s not an experience I want to repeat anytime soon.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Check my &lt;a href="https://flowfx.de/now"&gt;Now page&lt;/a&gt; to see where I&amp;rsquo;m currently at in the process of moving back to Germany.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Wait. Rails?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yupp. Rails.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ll need to update the about page.&lt;/p&gt;
&lt;p&gt;To hear what it feels like to leave Mexico and start something completely new, you&amp;rsquo;ll have to listen to one of the next episodes of &lt;a href="https://severalwaystolive.com/"&gt;Several Ways To Live&lt;/a&gt;. There Nick and I will discuss the coming-home part of being an expat.&lt;/p&gt;
&lt;p&gt;Let me just quickly give you an incomplete and unordered list of things I am looking forward to in Germany:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Döner Kebap&lt;/li&gt;
&lt;li&gt;my friends&lt;/li&gt;
&lt;li&gt;my family&lt;/li&gt;
&lt;li&gt;silence&lt;/li&gt;
&lt;li&gt;good beer&lt;/li&gt;
&lt;li&gt;bike tours&lt;/li&gt;
&lt;li&gt;chaos events&lt;/li&gt;
&lt;li&gt;my Reggae band&lt;/li&gt;
&lt;li&gt;clean air&lt;/li&gt;
&lt;li&gt;forests&lt;/li&gt;
&lt;li&gt;good bread&lt;/li&gt;
&lt;li&gt;cross-country skiing&lt;/li&gt;
&lt;li&gt;drinking beer in public&lt;/li&gt;
&lt;li&gt;Rindsrouladen&lt;/li&gt;
&lt;li&gt;affordable good cheese&lt;/li&gt;
&lt;li&gt;affordable good sausage&lt;/li&gt;
&lt;li&gt;public swimming pools&lt;/li&gt;
&lt;li&gt;lactose-free butter&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Oh, yes. Döner!!&lt;/p&gt;</description></item><item><title>How to listen to your audio books using your favorite podcast app</title><link>https://flowfx.de/blog/how-to-listen-to-your-audio-books-using-your-favorite-podcast-app/</link><pubDate>Sun, 18 Mar 2018 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/how-to-listen-to-your-audio-books-using-your-favorite-podcast-app/</guid><description>&lt;p&gt;This post talks about two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;how to save backup copies of your Audible audio books&lt;/li&gt;
&lt;li&gt;how to create an podcast feed of your audio books&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Update 2018-05-27: Audible stopped offering to download the audio files in &amp;ldquo;Format 4&amp;rdquo;. There are solutions out there, but I haven&amp;rsquo;t gotten around to studying them, yet.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2018-05-29: The solution is on GitHub and is called &lt;a href="https://github.com/KrumpetPirate/AAXtoMP3"&gt;KrumpetPirate/AAXtoMP3&lt;/a&gt;. Thanks to &lt;a href="https://social.tchncs.de/@igami/100110445500880332"&gt;@igami@social.tchncs.de&lt;/a&gt; for the tipp!&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="why"&gt;Why?&lt;/h2&gt;
&lt;p&gt;I buy all ebooks from the Amazon Kindle store, because I know I can save a backup copy of each book in a non-DRM format. This is not about sharing ebooks but rather about making sure that I can keep a copy of my books in a digital format that I will be able to read in the future, too. Also, I want to be able to use any ebook reading app or device I want to, not just Amazon&amp;rsquo;s Kindle apps. Incidentally, I read most of my ebooks on a Kindle Paperwhite because it&amp;rsquo;s just a great device. I sync the books via the Calibre app, though, and the Kindle device is not registered with my Amazon account.&lt;/p&gt;
&lt;p&gt;Anyways.&lt;/p&gt;
&lt;p&gt;I want the same for my for &lt;a href="https://www.audible.de/"&gt;Audible&lt;/a&gt; books. I love audio books, but I hate that I have to rely on the Audible app, with no protection against someone closing down my Amazon account or what not. Turns out, there is a way to do that, without even removing any DRM, because, apparently, there is no DRM on these files.&lt;/p&gt;
&lt;h2 id="how-to-backup-your-audible-books"&gt;How to backup your Audible books&lt;/h2&gt;
&lt;p&gt;Creating a backup mp3 of audible books is surprisingly simple. Thanks to &lt;a href="https://chaos.social/@octotherp"&gt;@octotherp&lt;/a&gt; for &lt;a href="https://chaos.social/@octotherp/99688008980687106/"&gt;this tipp&lt;/a&gt;!&lt;/p&gt;
&lt;iframe src="https://chaos.social/@octotherp/99688008980687106/embed" class="mastodon-embed" style="max-width: 100%; border: 0" width="400" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;script src="https://chaos.social/embed.js" async="async"&gt;&lt;/script&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://www.audible.de/lib"&gt;your Audible library&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In the upper right hand corner, select &amp;ldquo;Format 4&amp;rdquo; as the download audio format.&lt;/li&gt;
&lt;li&gt;Use ffmpeg to convert the downloaded files to mp3.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To convert a single audio book, the shell command is:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ ffmpeg -i IAmABook.aa -codec copy IAmABook.mp3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To convert all downloaded audio files, use a shell for loop:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ for file in *.aa; do ffmpeg -i &amp;quot;$file&amp;quot; -codec copy &amp;quot;${file/%aa/mp3}&amp;quot;; done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This converts all files with the extension &lt;code&gt;.aa&lt;/code&gt; and renames them with the extension &lt;code&gt;.mp3&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="how-to-create-a-podcast-feed-of-your-audio-books"&gt;How to create a podcast feed of your audio books&lt;/h2&gt;
&lt;p&gt;To create a podcast (RSS) feed from a collection of mp3s is surprisingly easy, too. Because others have solved the problem for us.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m using the PHP script &lt;a href="http://www.dircaster.org/"&gt;DirCaster&lt;/a&gt; and my shared hosting account at my favorite web host &lt;a href="https://www.dreamhost.com/hosting/shared/"&gt;DreamHost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Download and unzip DirCaster in a directory&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $ wget http://dircaster.org/DirCasterV09k.zip
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $ mkdir audiobooks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $ cd audiobooks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; $ unzip ../DirCasterV09k.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Edit &lt;code&gt;config_inc.php&lt;/code&gt; to set the title and description of the feed. I also add a feed image:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$rssImageUrlTAG &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;https://myaudiobookfeed.com/books.png&amp;#34;&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To keep thinks neat, I put the mp3 files into a subfolder &lt;code&gt;books&lt;/code&gt; and edit the &lt;code&gt;config_inc.php&lt;/code&gt; accordingly:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$mediaDir &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;./books&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;audiobooks&lt;/code&gt; directory now has to be served by a web server. A simple one that runs PHP is enough though. I put my feed at a random subdomain that no-one is going to find by accident.&lt;/p&gt;
&lt;p&gt;At least my favorite podcast app &lt;a href="https://play.pocketcasts.com/"&gt;Pocket Casts&lt;/a&gt; has no problem subscribing to it. I also tried adding password protection using HTTP auth, but that didn&amp;rsquo;t work.&lt;/p&gt;
&lt;p&gt;If you have questions about any of this, please &lt;a href="https://flowfx.de/contact"&gt;send me a message&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The Xochimilco Trilogy</title><link>https://flowfx.de/blog/the-xochimilco-trilogy/</link><pubDate>Tue, 13 Feb 2018 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-xochimilco-trilogy/</guid><description>&lt;p&gt;A few months ago I started a new podcast project &lt;a href="https://severalwaystolive.com/"&gt;Several Ways to Live in Mexico City&lt;/a&gt; with my friend &lt;a href="https://chaos.social/@nickfarr"&gt;Nick&lt;/a&gt;. We talk about Mexico and food and culture. And now I think we have created our first highlight of the series, a 3 episode expedition to the town of Xochimilco, where we talked to my friends Jahshua and Edgar.&lt;/p&gt;
&lt;p&gt;Episode 8 is a short preview, recorded on the way back from Xochimilco. Episode 9 talks about the history and culture of Xochimilco. And episode 10 starts tackling some questions about -isms that we have observed but could not explain just yet.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://severalwaystolive.com/sw008-segundo-piso/"&gt;SW008 Segundo Piso&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://severalwaystolive.com/sw009-xochimilco-i/"&gt;SW009 Xochimilco I&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://severalwaystolive.com/sw010-xochimilco-ii/"&gt;SW010 Xochimilco II: Chilling on the Chinampas&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you have comments or questions, please don&amp;rsquo;t hesitate to talk to us on Twitter or Mastodon!&lt;/p&gt;</description></item><item><title>A short work history. Looking for more.</title><link>https://flowfx.de/blog/looking-for-work-django-developer-can-do-a-lot/</link><pubDate>Tue, 09 Jan 2018 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/looking-for-work-django-developer-can-do-a-lot/</guid><description>&lt;p&gt;&lt;strong&gt;Update 04/04/2018: &lt;a href="https://flowfx.de/blog/moving-back-to-germany"&gt;There&amp;rsquo;s been a development&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;My wife Kathrin will not like this post. She will find it self-deprecating and underselling my abilities. But this is my blog, so I don&amp;rsquo;t care.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR: I am looking for a job as a Django/Python web developer or a test (automation) engineer, working remotely or in the Rhein-Neckar area in Germany. Starting now.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="2017"&gt;2017&lt;/h2&gt;
&lt;p&gt;2017 was a pretty good year for me workwise. I spent it working as a Django developer for the local LegalTech startup &lt;a href="https://www.lexa.mx/"&gt;Lexa.mx&lt;/a&gt;. The basic idea of Lexa is that of a Mexican &lt;a href="http://legalzoom.com/"&gt;LegalZoom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While being the sole developer, I also led our product development efforts. These included understanding the structures of Mexican legal agreements, translating the requirements into web forms and making those useful and into a good experience for the users. It was a very interesting inter-disciplinary project that included 3 Mexican lawyers and a designer.&lt;/p&gt;
&lt;p&gt;At the same time, this was my first serious Django project. I had to learn &lt;em&gt;a lot&lt;/em&gt;. And I did, thanks to mainly the &lt;a href="https://docs.djangoproject.com/en/1.11/"&gt;Django documentation&lt;/a&gt;, &lt;a href="https://stackoverflow.com/questions/tagged/django"&gt;Stack Overflow&lt;/a&gt; and the best of them all: &lt;a href="http://ccbv.co.uk/"&gt;ccbv.co.uk&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote class="twitter-tweet" data-lang="en"&gt;&lt;p lang="en" dir="ltr"&gt;&amp;quot;Do you use the LAMP Stack or the SMACK Stack?&amp;quot;&lt;br&gt;&amp;quot;I always use the GPS Stack&amp;quot;&lt;br&gt;&amp;quot;I don&amp;#39;t know that one&amp;quot;&lt;br&gt;&amp;quot;Google&lt;br&gt; Python&lt;br&gt; Stack Overflow&amp;quot;&lt;br&gt;&amp;quot;...&amp;quot;&lt;/p&gt;&amp;mdash; Joel Grus (@joelgrus) &lt;a href="https://twitter.com/joelgrus/status/884536268058574848?ref_src=twsrc%5Etfw"&gt;July 10, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;p&gt;My favorite part of the Lexa app is how we use &lt;a href="http://jinja.pocoo.org/"&gt;Jinja2&lt;/a&gt; templates and &lt;a href="https://en.wikipedia.org/wiki/LaTeX"&gt;LaTeX&lt;/a&gt; to dynamically generate the contract PDFs. I&amp;rsquo;ve wanted to do this for a long time, ever since a friend and I got the idea for &lt;a href="https://github.com/FlowFX/unkenmathe.de"&gt;Unkenmathe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The frontend is &amp;hellip; subject to future improvements. I don&amp;rsquo;t feel comfortable writing CSS because it is so much trial and error for me. For a little bit of dynamic behavior, I sprinkled some &lt;a href="https://vuejs.org/"&gt;VueJS&lt;/a&gt; and jQuery on top of everything, mainly the forms, which works nicely. But before I do more JavaScript development I first have to learn how to test that stuff. Developing the backend following the &lt;abbr title="Test-Driven Development"&gt;TDD&lt;/abbr&gt; methodology and then testing all the frontend functions manually in the browser feels very wrong.&lt;/p&gt;
&lt;p&gt;I also set up and maintained our continuous delivery pipeline using GitHub, CircleCI and &lt;a href="https://www.pythonanywhere.com/"&gt;PythonAnywhere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;During my time at Lexa I essentially worked remotely. Mexico City is so big that every in-person meeting requires a long commute for everyone involved. But what can I say? I loved it! Working from my quiet home on a schedule that I set myself suits me well, and I&amp;rsquo;ve never been more productive.&lt;/p&gt;
&lt;p&gt;The main reason why I do not continue working for Lexa is that Kathrin and I will definitely move back to Germany this year, and Lexa is looking to open an office in the city. Remote work that goes beyond the &amp;ldquo;home office&amp;rdquo; is pretty much unheard of in Mexico and does not fit with the work culture, which is a shame.&lt;/p&gt;
&lt;p&gt;For those not interested in my further work history and how I got to where I am today, here&amp;rsquo;s &lt;a href="#to-the-table"&gt;what else I&amp;rsquo;m bringing to the table&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="2009"&gt;2009&lt;/h2&gt;
&lt;p&gt;A little bit of history.&lt;/p&gt;
&lt;p&gt;I left University in early 2009 with a degree in physics, the good-old German &amp;ldquo;Diplom&amp;rdquo; (equivalent to a Master of Science). From time to time I am reminded of what I learned in University, and that is a particular way of thinking, ingrained into us students by endless exercises in higher Mathematics. One example is &lt;a href="https://flowfx.de/blog/list-comprehensions-for-physicists/"&gt;this story of how I finally understood list comprehensions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;But 2009 was not a good year for anybody looking for a job, let alone someone without any real world skills. My only coding skills back then consisted of a little bit of Matlab, numerically solving ordinary differential equations. Sounds amazing, but it&amp;rsquo;s really not. At least I got to experience working as a bike messenger for a few months.&lt;/p&gt;
&lt;p&gt;This was also the year when I remembered my 90&amp;rsquo;s experimentations with HTML and started playing around with &lt;a href="https://wordpress.org/"&gt;WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="2011"&gt;2011&lt;/h2&gt;
&lt;p&gt;2011 I got my first &amp;ldquo;real&amp;rdquo; job.&lt;/p&gt;
&lt;blockquote class="twitter-tweet" data-lang="en"&gt;&lt;p lang="de" dir="ltr"&gt;Suche Arbeit. Bin Physiker. Kann alles. Plz RT. &lt;a href="http://t.co/SaYLdCst"&gt;http://t.co/SaYLdCst&lt;/a&gt;&lt;/p&gt;&amp;mdash; Florian Posdziech (@flowfx_) &lt;a href="https://twitter.com/flowfx_/status/117235531968036865?ref_src=twsrc%5Etfw"&gt;September 23, 2011&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="https://platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;
&lt;blockquote&gt;
&lt;p&gt;Looking for work. Am a physicist. Can do everything.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yes, this tweet actually worked and landed me a job at a SAP consulting firm, solely based on my degree. It lasted about 18 months before both the company and I were happy to part ways.&lt;/p&gt;
&lt;p&gt;Considering that my tasks involved business processes and code, two things I can be very passionate about, it&amp;rsquo;s still a little bit of a mystery why I never got the hang of it, why the work never clicked for me. My best explanation is that I not only lacked mentorship but &lt;em&gt;also&lt;/em&gt; there was virtually no relevant documentation that I could study on my own. So much of the company&amp;rsquo;s knowledge was never explicitly written down that it made it too hard even for me to acquire enough of it to succeed in that particular industry.&lt;/p&gt;
&lt;h2 id="2013"&gt;2013&lt;/h2&gt;
&lt;p&gt;My favorite job during these years was working for the &lt;a href="http://www.ganter.com/brau-erlebnis.html"&gt;Ganter&lt;/a&gt; brewery where I learned a skill that I am very proud of: tapping the perfect beer. Seriously.&lt;/p&gt;
&lt;p&gt;All the while I was developing WordPress sites for clients and administering web hosting accounts. The one service that I am still providing to a number of clients today is securing and backing up their WordPress installations.&lt;/p&gt;
&lt;h2 id="2014"&gt;2014&lt;/h2&gt;
&lt;p&gt;2014 I not only met Kathrin, but we also moved to Mexico City. Our first year in Mexico I worked at the German school where Kathrin is teaching. There I finally learned that teaching is not for me. And I didn&amp;rsquo;t even teach. Also, I can&amp;rsquo;t handle saying good morning to 30 people each and every day.&lt;/p&gt;
&lt;p&gt;But this way I got to know my friend &lt;a href="https://angelica-ramos.com/"&gt;Angélica&lt;/a&gt; with whom I have since collaborated on various web projects using WordPress and &lt;a href="https://getkirby.com/"&gt;Kirby CMS&lt;/a&gt;. She also later worked with me on the Lexa project.&lt;/p&gt;
&lt;h2 id="2016"&gt;2016&lt;/h2&gt;
&lt;p&gt;I had wanted to learn to program for a long time, but it had never clicked. Reading &amp;ldquo;programming&amp;rdquo; books never worked for me.&lt;/p&gt;
&lt;p&gt;2016 it finally did click, and it took a book written for non-developers: &lt;a href="hellowebbooks.com/learn-django/"&gt;Hello Web App&lt;/a&gt; by &lt;a href="https://twitter.com/limedaring"&gt;Tracy Osborn&lt;/a&gt;. It&amp;rsquo;s an introduction to Django for designers and provided me with enough knowledge to later advance to the two other Django books that I cannot recommend enough: &lt;a href="http://www.obeythetestinggoat.com/pages/book.html"&gt;&lt;s&gt;Obey the Testing Goat&lt;/s&gt; Test-Driven Development with Python&lt;/a&gt; by &lt;a href="@hjwp"&gt;Harry Percival&lt;/a&gt; and &lt;a href="https://www.twoscoopspress.com/"&gt;Two Scoops of Django&lt;/a&gt; by &lt;a href="https://twitter.com/audreyr"&gt;Audrey Roy Greenfeld&lt;/a&gt; and &lt;a href="https://twitter.com/pydanny"&gt;Daniel Roy Greenfeld&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve since started working on a couple personal side projects, most notably &lt;a href="https://github.com/FlowFX/unkenmathe.de/"&gt;Unkenmathe&lt;/a&gt; and &lt;a href="https://github.com/FlowFX/reggae-cdmx.com"&gt;Reggae CDMX&lt;/a&gt; which are both still works in progress.&lt;/p&gt;
&lt;p&gt;In December of 2016 Angélica and I then sat down with the 3 lawyers that had the idea for Lexa.mx, and that would be my primary occupation for the next 12 months.&lt;/p&gt;
&lt;p&gt;&lt;a name="to-the-table"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-else-im-bringing-to-the-table"&gt;What else I&amp;rsquo;m bringing to the table&lt;/h2&gt;
&lt;p&gt;I am looking for a job as a &lt;strong&gt;Django/Python web developer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;After working on many projects as the sole developer, it&amp;rsquo;s way past time for me to join a team of developers and learn that part of software and web development.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I want to learn from others and teach them whenever I can.&lt;/li&gt;
&lt;li&gt;I can take charge of a project when needed but prefer working among equals.&lt;/li&gt;
&lt;li&gt;I love to collaborate with experts from non-technical fields – analyzing their problems, and developing and implementing technical solutions.&lt;/li&gt;
&lt;li&gt;I&amp;rsquo;m pretty high on the TDD band wagon, and my testing framework of choice is &lt;a href="https://docs.pytest.org/en/latest/"&gt;pytest&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As I very much enjoy automated software testing, I am also interested in working as a &lt;strong&gt;test engineer&lt;/strong&gt;. I am well aware that this includes much more than writing automated tests. But it&amp;rsquo;s something that I believe I would enjoy doing, and I definitely know that I can learn it and be good at it.&lt;/p&gt;
&lt;h2 id="timetable"&gt;Timetable&lt;/h2&gt;
&lt;p&gt;My current plan is to remain in Mexico while Kathrin finishes the school year and for us to move back to the Rhein-Neckar area in Germany in early July. But I am happy to relocate earlier as necessary.&lt;/p&gt;
&lt;p&gt;If all this makes you want to think about maybe hiring me, or if you know a friend who might, then &lt;a href="https://flowfx.de/contact"&gt;let&amp;rsquo;s talk&lt;/a&gt;! I also have a detailed CV prepared if that&amp;rsquo;s your sort of thing.&lt;/p&gt;
&lt;p&gt;Until then I&amp;rsquo;ll be happily working on Udacity&amp;rsquo;s &lt;a href="https://www.udacity.com/course/full-stack-web-developer-nanodegree--nd004"&gt;Full Stack Web Development Nanodegree&lt;/a&gt; program to fill some knowledge gaps.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;&lt;strong&gt;Update 13/01/2018: minor edits.&lt;/strong&gt;&lt;/small&gt;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Speeding up Django unit tests with SQLite, reuse-db and RAMDisk</title><link>https://flowfx.de/blog/speeding-up-django-unit-tests-with-sqlite-reuse-db-and-ramdisk/</link><pubDate>Tue, 12 Dec 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/speeding-up-django-unit-tests-with-sqlite-reuse-db-and-ramdisk/</guid><description>&lt;p&gt;Recently, &lt;a href="https://twitter.com/hjwp/"&gt;Harry&lt;/a&gt; wrote a post about &lt;a href="http://www.obeythetestinggoat.com/speeding-up-django-unit-tests-with-sqlite-keepdb-and-devshm.html"&gt;how to speed up Django unit-testing&lt;/a&gt; by using a persistent in-memory SQLite database.&lt;/p&gt;
&lt;p&gt;While Harry uses the default Django testrunner and a Linux machine, I use &lt;code&gt;pytest&lt;/code&gt; with &lt;code&gt;pytest-django&lt;/code&gt; on a Mac. This changes a few things, and this post will show the differences. So it&amp;rsquo;s very specific to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Django&lt;/li&gt;
&lt;li&gt;pytest&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="create-and-mount-the-ramdisk"&gt;Create and mount the RAMDisk&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/dev/shm&lt;/code&gt; is a Linux thing. But Harry already provided the link to &lt;a href="https://stackoverflow.com/questions/2033362/does-os-x-have-an-equivalent-to-dev-shm#2033417"&gt;a working solution on Stack Overflow&lt;/a&gt; to how to do this on macOS.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ hdiutil attach -nomount ram://&lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1024&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt; SIZE_IN_MB&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/dev/disk2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ diskutil eraseVolume HFS+ RAMDisk /dev/disk2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This creates an in-memory Volume that can store the persistent SQLite database.&lt;/p&gt;
&lt;h2 id="use-sqlite"&gt;Use SQLite&lt;/h2&gt;
&lt;p&gt;Maybe I&amp;rsquo;m doing this all wrong, but because I use pytest, I configure the test database in a separate configuration file like this.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# config/settings/testing.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; .common &lt;span style="color:#f92672"&gt;import&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DATABASES &lt;span style="color:#f92672"&gt;=&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;default&amp;#39;&lt;/span&gt;: {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;ENGINE&amp;#39;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;django.db.backends.sqlite3&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;NAME&amp;#39;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;:memory:&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;TEST&amp;#39;&lt;/span&gt;: {}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="use-it-in-memory"&gt;Use it in-memory&lt;/h2&gt;
&lt;p&gt;What &lt;code&gt;--keepdb&lt;/code&gt; is for the default testrunner, &lt;code&gt;--reuse-db&lt;/code&gt; is for pytest-django. I usually set this as the default for all test runs in &lt;code&gt;pytest.ini&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# pytest.ini&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[pytest]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DJANGO_SETTINGS_MODULE&lt;span style="color:#f92672"&gt;=&lt;/span&gt;config&lt;span style="color:#f92672"&gt;.&lt;/span&gt;settings&lt;span style="color:#f92672"&gt;.&lt;/span&gt;testing
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;addopts &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#f92672"&gt;--&lt;/span&gt;reuse&lt;span style="color:#f92672"&gt;-&lt;/span&gt;db
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To not re-use the database, pytest-django&amp;rsquo;s argument is &lt;code&gt;--create-db&lt;/code&gt;. So Harry&amp;rsquo;s&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;keepdb&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;becomes&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;create-db&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;in my case. To use the RAMDisk:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# config/settings/testing.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#f92672"&gt;...&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; sys
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;create-db&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# and this allows you to use --reuse-db to skip re-creating the db,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# even faster!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DATABASES[&lt;span style="color:#e6db74"&gt;&amp;#39;default&amp;#39;&lt;/span&gt;][&lt;span style="color:#e6db74"&gt;&amp;#39;TEST&amp;#39;&lt;/span&gt;][&lt;span style="color:#e6db74"&gt;&amp;#39;NAME&amp;#39;&lt;/span&gt;] &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;/Volumes/RAMDisk/myfunnyproject.test.db.sqlite3&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="when-theres-no-ramdisk"&gt;When there&amp;rsquo;s no RAMDisk&lt;/h2&gt;
&lt;p&gt;If there is no RAMDisk, for example after a reboot, then the test run fails as soon as it hits the database. Obviously.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt; conn &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Database&lt;span style="color:#f92672"&gt;.&lt;/span&gt;connect(&lt;span style="color:#f92672"&gt;**&lt;/span&gt;conn_params)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;E django&lt;span style="color:#f92672"&gt;.&lt;/span&gt;db&lt;span style="color:#f92672"&gt;.&lt;/span&gt;utils&lt;span style="color:#f92672"&gt;.&lt;/span&gt;OperationalError: unable to open database file
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I just throw another if statement in there to check for the existence of the RAMDisk.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; os&lt;span style="color:#f92672"&gt;.&lt;/span&gt;path&lt;span style="color:#f92672"&gt;.&lt;/span&gt;isdir(&lt;span style="color:#e6db74"&gt;&amp;#39;/Volumes/RAMDisk&amp;#39;&lt;/span&gt;) &lt;span style="color:#f92672"&gt;and&lt;/span&gt; &lt;span style="color:#f92672"&gt;not&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;create-db&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; sys&lt;span style="color:#f92672"&gt;.&lt;/span&gt;argv:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;You can check a full test configuration here:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/FlowFX/unkenmathe.de/blob/master/src/config/settings/testing.py"&gt;https://github.com/FlowFX/unkenmathe.de/blob/master/src/config/settings/testing.py&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Test-driven Python learning</title><link>https://flowfx.de/blog/test-driven-python-learning/</link><pubDate>Tue, 05 Dec 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/test-driven-python-learning/</guid><description>&lt;p&gt;Bugs are nice because I can learn from them. Recently I found a bug that taught me about floats in Python and how not to use them. I found it thanks to an automated test.&lt;/p&gt;
&lt;h2 id="the-test"&gt;The test&lt;/h2&gt;
&lt;p&gt;In a legal contract I had to print a monetary amount in a format similar to&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MXN $11,600.00 (eleven thousand, six hundred pesos 00/100 cents)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;My tests check the LaTeX source of the resulting PDF, looking for the correctly formatted string &lt;code&gt;11,600.00&lt;/code&gt;, which represents an amount of &lt;code&gt;11,000&lt;/code&gt; something plus a VAT of 16%, and also for the string &lt;code&gt;eleven thousand, six hundred&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It essentially goes like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; app.models &lt;span style="color:#f92672"&gt;import&lt;/span&gt; LeaseAgreement
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_contract_states_rent_plus_vat&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Test correct statement of rent amount with and without IVA (VAT (USt (MWSt))).&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; contract &lt;span style="color:#f92672"&gt;=&lt;/span&gt; LeaseAgreement&lt;span style="color:#f92672"&gt;.&lt;/span&gt;build( 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; rent_amount&lt;span style="color:#f92672"&gt;=&lt;/span&gt;Decimal(&lt;span style="color:#ae81ff"&gt;10000.00&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tex &lt;span style="color:#f92672"&gt;=&lt;/span&gt; contract&lt;span style="color:#f92672"&gt;.&lt;/span&gt;render_tex()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;10,000.00&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; tex
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;11,600.00&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; tex
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;eleven thousand, six hundred&amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;in&lt;/span&gt; tex
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The first two asserts did not fail, the third one did. My code actually printed&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MXN $11,600.00 (eleven thousand, five hundred and ninety-nine pesos 00/100 cents)&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="the-bug"&gt;The bug&lt;/h2&gt;
&lt;p&gt;Turns out I had misused Python&amp;rsquo;s &lt;code&gt;Decimal&lt;/code&gt; class to calculate the amount plus VAT. Like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; x &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Decimal(&lt;span style="color:#ae81ff"&gt;10000&lt;/span&gt;) &lt;span style="color:#f92672"&gt;*&lt;/span&gt; Decimal(&lt;span style="color:#ae81ff"&gt;1.16&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Printing the number in the desired format works fine.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; print(&lt;span style="color:#e6db74"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#e6db74"&gt;{:,.2f}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;.&lt;/span&gt;format(x))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;11&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;600.00&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;But rounding down for only printing the amount without decimal places does not.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/span&gt; num2words(int(x))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;eleven thousand, five hundred and ninety-nine&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That is because floats are not exact.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; Decimal(1.16)
Decimal(&amp;#39;1.1599999999999999200639422269887290894985198974609375&amp;#39;)
&amp;gt;&amp;gt;&amp;gt; int(Decimal(1.16)*10000)
11599
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="the-fix"&gt;The fix&lt;/h2&gt;
&lt;p&gt;Working with monetary amounts that round to 2 digits requires care. Thanks to &lt;a href="https://chaos.social/@rami"&gt;Rami&lt;/a&gt; and others, I now know that I should have used e.g.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Decimal(&amp;#39;1.16&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Decimal(&amp;#39;1.16&amp;#39;).quantize(Decimal(&amp;#39;.01&amp;#39;), rounding=ROUND_HALF_UP)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;when apropriate.&lt;/p&gt;</description></item><item><title>Several Ways To Live In Mexico City</title><link>https://flowfx.de/blog/several-ways-to-live-in-mexico-city/</link><pubDate>Mon, 27 Nov 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/several-ways-to-live-in-mexico-city/</guid><description>&lt;p&gt;There are several ways to live, and many more in Mexico City. &lt;a href="https://twitter.com/Nickf4rr"&gt;Nick Farr&lt;/a&gt; and I have joined up to talk about life and food in Mexico. We named this English language podcast&lt;/p&gt;
&lt;p&gt;&lt;a href="https://severalwaystolive.com/"&gt;&lt;strong&gt;Several Ways To Live In Mexico&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today we released &lt;a href="https://severalwaystolive.com/sw002-fonda-fina/"&gt;episode 2&lt;/a&gt;, and we have enough topics to produce quite some more.&lt;/p&gt;
&lt;p&gt;Check it out, and give us feedback on the Twitter or Mastodon!&lt;/p&gt;</description></item><item><title>Test Django with Selenium, pytest and user authentication</title><link>https://flowfx.de/blog/test-django-with-selenium-pytest-and-user-authentication/</link><pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/test-django-with-selenium-pytest-and-user-authentication/</guid><description>&lt;p&gt;When testing a Django app with &lt;a href="http://selenium-python.readthedocs.io/"&gt;Selenium&lt;/a&gt;, how do you authenticate the user and test pages that require to be logged in?&lt;/p&gt;
&lt;p&gt;Of course: &lt;strong&gt;&lt;a href="https://stackoverflow.com/a/22497239"&gt;StackOverflow has the answer&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The following is the actual code that I use to make this work with &lt;a href="https://docs.pytest.org/en/latest/"&gt;pytest&lt;/a&gt;. It requires &lt;a href="https://pytest-django.readthedocs.io/"&gt;pytest-django&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="pytest-fixtures"&gt;pytest fixtures&lt;/h2&gt;
&lt;p&gt;In pytest everything is contained in neat test fixtures.&lt;/p&gt;
&lt;h3 id="browser"&gt;Browser&lt;/h3&gt;
&lt;p&gt;The first fixture provides a broser/webdriver instance with an anonymous user. The default way of using Selenium.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# system_tests/conftest.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; selenium &lt;span style="color:#f92672"&gt;import&lt;/span&gt; webdriver
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.fixture&lt;/span&gt;(scope&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;module&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;browser&lt;/span&gt;(request):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Provide a selenium webdriver instance.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# SetUp&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; options &lt;span style="color:#f92672"&gt;=&lt;/span&gt; webdriver&lt;span style="color:#f92672"&gt;.&lt;/span&gt;ChromeOptions()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; options&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_argument(&lt;span style="color:#e6db74"&gt;&amp;#39;headless&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser_ &lt;span style="color:#f92672"&gt;=&lt;/span&gt; webdriver&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Chrome(chrome_options&lt;span style="color:#f92672"&gt;=&lt;/span&gt;options)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;yield&lt;/span&gt; browser_
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# TearDown&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser_&lt;span style="color:#f92672"&gt;.&lt;/span&gt;quit()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="user"&gt;User&lt;/h3&gt;
&lt;p&gt;To be able to authenticate, I need a user in the database. Using &lt;a href="https://factoryboy.readthedocs.io/en/latest/orms.html#django"&gt;Factory Boy&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# system_tests/conftest.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; django.contrib.auth.hashers &lt;span style="color:#f92672"&gt;import&lt;/span&gt; make_password
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; accounts.factories &lt;span style="color:#f92672"&gt;import&lt;/span&gt; UserFactory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TESTEMAIL &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;test-user@example.com&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TESTPASSWORD &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;a-super-secret-password&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.fixture&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;user&lt;/span&gt;(db):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Add a test user to the database.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user_ &lt;span style="color:#f92672"&gt;=&lt;/span&gt; UserFactory&lt;span style="color:#f92672"&gt;.&lt;/span&gt;create(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;I am a test user&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; email&lt;span style="color:#f92672"&gt;=&lt;/span&gt;TESTEMAIL,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; password&lt;span style="color:#f92672"&gt;=&lt;/span&gt;make_password(TESTPASSWORD),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; user_
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="authenticated-browser"&gt;Authenticated browser&lt;/h3&gt;
&lt;p&gt;To get the authenticated browser, the first two fixtures are required, plus the Django &lt;code&gt;TestClient&lt;/code&gt; and &lt;code&gt;LiveServer&lt;/code&gt; fixtures which, for pytest, are provided by &lt;code&gt;pytest-django&lt;/code&gt;. Using the code from SO:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# system_tests/conftest.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.fixture&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;authenticated_browser&lt;/span&gt;(browser, client, live_server, user):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Return a browser instance with logged-in user session.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; client&lt;span style="color:#f92672"&gt;.&lt;/span&gt;login(email&lt;span style="color:#f92672"&gt;=&lt;/span&gt;TESTEMAIL, password&lt;span style="color:#f92672"&gt;=&lt;/span&gt;TESTPASSWORD)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; cookie &lt;span style="color:#f92672"&gt;=&lt;/span&gt; client&lt;span style="color:#f92672"&gt;.&lt;/span&gt;cookies[&lt;span style="color:#e6db74"&gt;&amp;#39;sessionid&amp;#39;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(live_server&lt;span style="color:#f92672"&gt;.&lt;/span&gt;url)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_cookie({&lt;span style="color:#e6db74"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;sessionid&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;value&amp;#39;&lt;/span&gt;: cookie&lt;span style="color:#f92672"&gt;.&lt;/span&gt;value, &lt;span style="color:#e6db74"&gt;&amp;#39;secure&amp;#39;&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;path&amp;#39;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#39;/&amp;#39;&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;refresh()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; browser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-tests"&gt;The tests&lt;/h2&gt;
&lt;p&gt;Now the Selenium test can use the &lt;code&gt;authenticated_browser&lt;/code&gt; fixture.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# system_tests/test_django.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_django_with_authenticated_user&lt;/span&gt;(live_server, authenticated_browser):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;A Selenium test.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser &lt;span style="color:#f92672"&gt;=&lt;/span&gt; authenticated_browser
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Open the home page&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(live_server&lt;span style="color:#f92672"&gt;.&lt;/span&gt;url)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To test logging in and out of the app, I use the unauthenticated browser instance plus the &lt;code&gt;user&lt;/code&gt; fixture.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# system_tests/test_django.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_login_of_anonymous_user&lt;/span&gt;(live_server, browser, user):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Open the home page&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;get(live_server&lt;span style="color:#f92672"&gt;.&lt;/span&gt;url)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Click the &amp;#39;login&amp;#39; button&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; browser&lt;span style="color:#f92672"&gt;.&lt;/span&gt;find_element_by_id(&lt;span style="color:#e6db74"&gt;&amp;#39;id_link_to_login&amp;#39;&lt;/span&gt;))&lt;span style="color:#f92672"&gt;.&lt;/span&gt;click()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;…&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;These are the pytest fixtures that I use to test a Django app with an authenticated user.&lt;/p&gt;
&lt;p&gt;If there is a better way to do this, &lt;a href="https://flowfx.de/contact"&gt;please tell me!&lt;/a&gt; I want to know.&lt;/p&gt;</description></item><item><title>pytest parameter matrices</title><link>https://flowfx.de/blog/pytest-parameter-matrices/</link><pubDate>Tue, 10 Oct 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/pytest-parameter-matrices/</guid><description>&lt;p&gt;A few months ago I explained how I efficiently &lt;a href="https://flowfx.de/blog/testing-django-forms-with-pytest-parameterization"&gt;test Django forms with pytest parameterization&lt;/a&gt;. Last week, I learned a new trick from &lt;a href="https://github.com/hackebrot"&gt;Raphael Pierzina&lt;/a&gt;&amp;rsquo;s post about &lt;a href="https://hackebrot.github.io/pytest-tricks/param_id_func/"&gt;ids for fixtures and parametrize&lt;/a&gt;, which is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You you can add multiple parametrization markers to a test function which then create a test parameter matrix.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The list of test cases can thus be written much more clearly. Compare the example code from &lt;a href="https://flowfx.de/blog/testing-django-forms-with-pytest-parameterization"&gt;my previous post&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; django &lt;span style="color:#f92672"&gt;import&lt;/span&gt; forms
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ExampleForm&lt;/span&gt;(forms&lt;span style="color:#f92672"&gt;.&lt;/span&gt;Form):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; name &lt;span style="color:#f92672"&gt;=&lt;/span&gt; forms&lt;span style="color:#f92672"&gt;.&lt;/span&gt;CharField(required&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; age &lt;span style="color:#f92672"&gt;=&lt;/span&gt; forms&lt;span style="color:#f92672"&gt;.&lt;/span&gt;IntegerField(min_value&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.mark.parametrize&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;name, age, validity&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [(&lt;span style="color:#e6db74"&gt;&amp;#39;Hugo&amp;#39;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;Egon&amp;#39;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;17&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;Balder&amp;#39;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;18&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ])
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_example_form&lt;/span&gt;(name, age, validity):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; form &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ExampleForm(data&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;: name,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;age&amp;#39;&lt;/span&gt;: age,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; form&lt;span style="color:#f92672"&gt;.&lt;/span&gt;is_valid() &lt;span style="color:#f92672"&gt;is&lt;/span&gt; validity
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to the same test using multiple parameterization markers:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.mark.parametrize&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;name, valid_name&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;Hugo&amp;#39;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;&amp;#39;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.mark.parametrize&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;age, valid_age&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;18&amp;#39;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#e6db74"&gt;&amp;#39;17&amp;#39;&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#66d9ef"&gt;None&lt;/span&gt;, &lt;span style="color:#66d9ef"&gt;False&lt;/span&gt;),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_example_form&lt;/span&gt;(name, age, valid_name, valid_age):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; form &lt;span style="color:#f92672"&gt;=&lt;/span&gt; ExampleForm(data&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;name&amp;#39;&lt;/span&gt;: name,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;age&amp;#39;&lt;/span&gt;: age,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; })
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;assert&lt;/span&gt; form&lt;span style="color:#f92672"&gt;.&lt;/span&gt;is_valid() &lt;span style="color:#f92672"&gt;is&lt;/span&gt; (valid_name &lt;span style="color:#f92672"&gt;and&lt;/span&gt; valid_age)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This tests all 9 possible combinations of the three test cases each for &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;age&lt;/code&gt;. Maybe that&amp;rsquo;s overkill, but on the other hand I can be sure that I touch all the relevant combinations.&lt;/p&gt;
&lt;p&gt;Take note of the last line that checks that the form only validates when &lt;em&gt;both&lt;/em&gt; input parameters are valid.&lt;/p&gt;
&lt;p&gt;The main advantage I see is legibility. For each form field, I only have to understand the list of test parameters for exactly that field, and not any additional combinations with other fields.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m loving it!&lt;/p&gt;</description></item><item><title>Continuous deployment of a Django app from Travis CI to PythonAnywhere</title><link>https://flowfx.de/blog/continuous-delivery-of-a-django-app-from-travis-ci-to-pythonanywhere/</link><pubDate>Thu, 27 Jul 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/continuous-delivery-of-a-django-app-from-travis-ci-to-pythonanywhere/</guid><description>&lt;p&gt;This post describes the configuration of a continuous deployment pipeline that deploys a Django project from &lt;a href="https://github.com/FlowFX/unkenmathe.de/"&gt;GitHub&lt;/a&gt; via &lt;a href="https://travis-ci.org/"&gt;Travis CI&lt;/a&gt; to &lt;a href="https://www.pythonanywhere.com/user/flowfx/consoles/"&gt;PythonAnywhere&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All code samples come from a pet project of mine: &lt;a href="https://www.unkenmathe.de"&gt;Unkenmathe&lt;/a&gt; (&lt;a href="https://github.com/flowfx/unkenmathe.de"&gt;GitHub repository&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Please note that this is no introduction to Travis CI, PythonAnywhere nor Git.&lt;/p&gt;
&lt;p&gt;Here are the steps that I take.&lt;/p&gt;
&lt;h2 id="1-deploy-django-project"&gt;1. Deploy Django project&lt;/h2&gt;
&lt;p&gt;PythonAnywhere&amp;rsquo;s guide for &lt;a href="https://help.pythonanywhere.com/pages/DeployExistingDjangoProject"&gt;Deploying an existing Django project on PythonAnywhere&lt;/a&gt; explains everything to manually set up the web app.&lt;/p&gt;
&lt;p&gt;For reference, the Unkenmathe code is checked out to&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/var/www/sites/unkenmathe.de
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and the virtual environment lives at&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/.virtualenvs/unkenmathe.de/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-prepare-git-push-deployment"&gt;2. Prepare Git push deployment&lt;/h2&gt;
&lt;p&gt;PythonAnywhere has a comprehensive guide to set up &lt;a href="https://blog.pythonanywhere.com/87/"&gt;Git push deployments&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My bare repository is located at&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~/bare-repos/unkenmathe.git
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The &lt;code&gt;post-receive&lt;/code&gt; hook looks like this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# ~/bare-repos/unkenmathe.git/hooks/post-receive
#!/bin/bash

BASE_DIR=/var/www/sites/unkenmathe.de
PYTHON=$HOME/.virtualenvs/unkenmathe.de/bin/python
PIP=$HOME/.virtualenvs/unkenmathe.de/bin/pip
MANAGE=$BASE_DIR/manage.py

echo &amp;#34;=== configure Django ===&amp;#34;
export DJANGO_SETTINGS_MODULE=config.settings.production

echo &amp;#34;=== create base directory ===&amp;#34;
mkdir -p $BASE_DIR

echo &amp;#34;=== checkout new code ===&amp;#34;
GIT_WORK_TREE=$BASE_DIR git checkout -f

echo &amp;#34;=== install dependencies in virtual environment ===&amp;#34;
$PIP install -q -r $BASE_DIR/requirements/production.txt

echo &amp;#34;=== collect static files ===&amp;#34;
$PYTHON $MANAGE collectstatic --no-input

echo &amp;#34;=== update database ===&amp;#34;
$PYTHON $MANAGE migrate --no-input
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="3-custom-deployment-with-travis-ci"&gt;3. Custom deployment with Travis CI&lt;/h2&gt;
&lt;p&gt;I set up the repository in Travis CI for automatic builds on pull requests and branch pushes. In order to deploy to PythonAnywhere, I use Travis&amp;rsquo;s &lt;a href="https://docs.travis-ci.com/user/deployment/custom/"&gt;Custom deployment&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;All Travis related files live in the &lt;code&gt;.travis&lt;/code&gt; subdirectory of the Django project. This is of course completely arbitrary.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;~ $ cd ~/code/unkenmathe/
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;unkenmathe $ mkdir .travis
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;unkenmathe $ cd .travis
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="create-ssh-keys"&gt;Create SSH keys&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;git push&lt;/code&gt; uses SSH, so I need a pair of SSH keys.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.travis $ ssh-keygen -t rsa -b &lt;span style="color:#ae81ff"&gt;4096&lt;/span&gt; -C &lt;span style="color:#e6db74"&gt;&amp;#39;hallo@example.com&amp;#39;&lt;/span&gt; -f deploy_key
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copy the public key to the PythonAnywhere account (see PythonAnywhere: &lt;a href="https://help.pythonanywhere.com/pages/SSHAccess"&gt;SSH access&lt;/a&gt;).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.travis $ ssh-copy-id -i deploy_key flowfx@ssh.pythonanywhere.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="encrypt-ssh-key-and-add-it-to-the-repository"&gt;Encrypt SSH key and add it to the repository&lt;/h3&gt;
&lt;p&gt;Travis offers a tool to encrypt files that allows to add the SSH private key to the Git repository. See &lt;a href="https://docs.travis-ci.com/user/encrypting-files/"&gt;Encrypting files&lt;/a&gt; for a complete how-to.&lt;/p&gt;
&lt;p&gt;First, I encrypt the deploy key,&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.travis $ travis login
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.travis $ travis encrypt-file deploy_key --add
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;then add it to the Git repository.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.travis $ git add deploy_key.enc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Last, I make sure the decrypted key is never pushed to the public GitHub repository:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;unkenmathe $ echo &lt;span style="color:#e6db74"&gt;&amp;#39;deploy_key&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; .gitignore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="configure-travis-ci"&gt;Configure Travis CI&lt;/h3&gt;
&lt;p&gt;A simplified &lt;code&gt;.travis.yml&lt;/code&gt; configuration file (&lt;a href="https://github.com/FlowFX/unkenmathe.de/blob/master/.travis.yml"&gt;here the one used for Unkenmathe&lt;/a&gt;) looks like this. The &lt;code&gt;before_install&lt;/code&gt; part is added automatically by the &lt;code&gt;travis encrypt-file deploy_key --add&lt;/code&gt; command. The &lt;code&gt;ssh_known_hosts&lt;/code&gt; line is also required for push deployment with Git/SSH.&lt;/p&gt;
&lt;p&gt;Hopefully, the rest is documented sufficiently by the comments.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# .travis.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;language&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;python&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;cache&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;pip&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;python&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#ae81ff"&gt;3.6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;addons&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# add PythonAnywhere server to known hosts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ssh_known_hosts&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;ssh.pythonanywhere.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;before_install&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# decrypt ssh private key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;openssl aes-256-cbc -K $encrypted_xxxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxxx_iv -in .travis/deploy_key.enc -out deploy_key -d&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;install&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;pip install -r requirements/testing.txt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;script&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# run test suite&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;pytest --cov&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;after_success&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# start ssh agent and add private key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;eval &amp;#34;$(ssh-agent -s)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;chmod 600 deploy_key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;ssh-add deploy_key&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# configure remote repository&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;git remote add pythonanywhere flowfx@ssh.pythonanywhere.com:/home/flowfx/bare-repos/unkenmathe.git&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# push master branch to production &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;git push -f pythonanywhere master&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# reload PythonAnywhere web app via the API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;python .travis/reload-webapp.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;after_deploy&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# update coveralls.io&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; - &lt;span style="color:#ae81ff"&gt;coveralls&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;notifications&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# spare me from email notifications&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;email&lt;/span&gt;: &lt;span style="color:#66d9ef"&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="reload-web-app"&gt;Reload web app&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;after_success&lt;/code&gt; step includes a call to &lt;code&gt;.travis/reload-webapp.py&lt;/code&gt;, which is a Python script that reloads the web app via the &lt;a href="https://help.pythonanywhere.com/pages/API/"&gt;PythonAnywhere API&lt;/a&gt;. This is more or less copied directly from the documentation.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# .travis/reload-webapp.py
&amp;#34;&amp;#34;&amp;#34;Script to reload the web app via the PythonAnywhere API.

&amp;#34;&amp;#34;&amp;#34;
import os
import requests

my_domain = os.environ[&amp;#39;PYTHONANYWHERE_DOMAIN&amp;#39;]
username = os.environ[&amp;#39;PYTHONANYWHERE_USERNAME&amp;#39;]
token = os.environ[&amp;#39;PYTHONANYWHERE_API_TOKEN&amp;#39;]

response = requests.post(
 &amp;#39;https://www.pythonanywhere.com/api/v0/user/{username}/webapps/{domain}/reload/&amp;#39;.format(
 username=username, domain=my_domain
 ),
 headers={&amp;#39;Authorization&amp;#39;: &amp;#39;Token {token}&amp;#39;.format(token=token)}
)
if response.status_code == 200:
 print(&amp;#39;All OK&amp;#39;)
else:
 print(&amp;#39;Got unexpected status code {}: {!r}&amp;#39;.format(response.status_code, response.content))
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="set-environment-variables"&gt;Set environment variables&lt;/h3&gt;
&lt;p&gt;To make all this actually work, you need to set some environment variables in the Travis project settings. Namely &lt;code&gt;PYTHONANYWHERE_DOMAIN&lt;/code&gt;, &lt;code&gt;PYTHONANYWHERE_USERNAME&lt;/code&gt; and &lt;code&gt;PYTHONANYWHERE_API_TOKEN&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Also, don&amp;rsquo;t forget to set &lt;code&gt;DJANGO_SECRET_KEY&lt;/code&gt;!&lt;/p&gt;
&lt;h2 id="summary"&gt;Summary&lt;/h2&gt;
&lt;p&gt;These are the resources you need:&lt;/p&gt;
&lt;h3 id="pythonanywhere"&gt;PythonAnywhere&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.pythonanywhere.com/pages/DeployExistingDjangoProject"&gt;Deploying an existing Django project on PythonAnywhere&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.pythonanywhere.com/87/"&gt;Git push deployments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.pythonanywhere.com/pages/SSHAccess"&gt;SSH Access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.pythonanywhere.com/pages/API/"&gt;PythonAnywhere API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="travis-ci"&gt;Travis CI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.travis-ci.com/user/deployment/custom/"&gt;Custom deployment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.travis-ci.com/user/encrypting-files/"&gt;Encrypting files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="future"&gt;Future&lt;/h3&gt;
&lt;p&gt;I need to look into Travis&amp;rsquo;s &lt;a href="https://docs.travis-ci.com/user/deployment/script/"&gt;Script deployment&lt;/a&gt; which looks like a much cleaner way to run the deployment commands.&lt;/p&gt;
&lt;h3 id="comment"&gt;Comment!&lt;/h3&gt;
&lt;p&gt;If you find the one error that I missed, &lt;a href="https://flowfx.de/contact"&gt;please tell me about it&lt;/a&gt;!&lt;/p&gt;
&lt;h2 id="updates"&gt;Updates&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;5/9/2017: used Unkenmathe as example project, formatting.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Use Django in-memory file storage with pytest</title><link>https://flowfx.de/blog/use-django-in-memory-file-storage-with-pytest/</link><pubDate>Thu, 13 Jul 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/use-django-in-memory-file-storage-with-pytest/</guid><description>&lt;p&gt;In my current project, I create PDF files from Jinja2/LaTeX templates. In each test run, several PDFs are created and saved to disk. How do you test this without filling up the hard drive?&lt;/p&gt;
&lt;p&gt;I use an in-memory data storage. For Django there is a package that makes it really easy: &lt;a href="https://github.com/waveaccounting/dj-inmemorystorage"&gt;dj-inmemorystorage&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A non-persistent in-memory data storage backend for Django.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Using &lt;a href="http://doc.pytest.org/en/latest/fixture.html"&gt;pytest fixtures&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# tests/conftest.py
import pytest
import inmemorystorage

from django.conf import settings

@pytest.fixture
def in_memory():
 settings.DEFAULT_FILE_STORAGE = 'inmemorystorage.InMemoryStorage'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;rsquo;s it. When using this &lt;code&gt;in_memory&lt;/code&gt; fixture in a test function, the files will never be written on disk.&lt;/p&gt;
&lt;h3 id="update-592017"&gt;Update 5/9/2017&lt;/h3&gt;
&lt;p&gt;It&amp;rsquo;s actually much easier than this. I now configure the in-memory file storage directly in the Django configuration file that pytest uses.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# config/settings/testing.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Django configuration for testing and CI environments.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; .common &lt;span style="color:#f92672"&gt;import&lt;/span&gt; &lt;span style="color:#f92672"&gt;*&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Use in-memory file storage&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DEFAULT_FILE_STORAGE &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;inmemorystorage.InMemoryStorage&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Neue Podcastfolgen Juli 2017</title><link>https://flowfx.de/blog/neue-podcastfolgen-juli-2017/</link><pubDate>Wed, 05 Jul 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/neue-podcastfolgen-juli-2017/</guid><description>&lt;p&gt;Nach langen Monaten habe ich diese Woche gleich zwei neue Podcastepisoden veröffentlicht.&lt;/p&gt;
&lt;h3 id="mexiko"&gt;Mexiko&lt;/h3&gt;
&lt;p&gt;Schon im Januar hatte ich &lt;a href="https://tacosundlimetten.de/02-beatriz/"&gt;die zweite Folge von Tacos und Limetten&lt;/a&gt; aufgenommen. Es wurden zweieinhalb spannende Stunden über die Geschichte und Gesellschaft Mexikos. Außerdem gibt&amp;rsquo;s Reisetipps!&lt;/p&gt;
&lt;h3 id="c3s"&gt;C3S&lt;/h3&gt;
&lt;p&gt;Und auch &lt;a href="https://podcast.c3s.cc/cc020-generalversammlung-genossenschaft-vs-verwertungsgesellschaft-neue-verwaltungsrate-gnupg/"&gt;der C3S-Podcast ist wieder am Start&lt;/a&gt;. In der neuen Episode berichtet mir m.eik von der letzten Generalversammlung und den Wirren der deutschen Gesetzgebung in Sachen Verwertungsgesellschaften.&lt;/p&gt;</description></item><item><title>Reggae Freiburg</title><link>https://flowfx.de/blog/reggae-freiburg/</link><pubDate>Sat, 24 Jun 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/reggae-freiburg/</guid><description>&lt;p&gt;Reggae Freiburg hat ein neues Zuhause und läuft endlich unter der würdigen Domain&lt;/p&gt;
&lt;center&gt;[**www.reggae-freiburg.de**](http://www.reggae-freiburg.de/)&lt;/center&gt;
&lt;p&gt;Checkt das!&lt;/p&gt;</description></item><item><title>Install an extra LaTeX font package on PythonAnywhere</title><link>https://flowfx.de/blog/install-an-extra-latex-font-package-on-pythonanywhere/</link><pubDate>Fri, 09 Jun 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/install-an-extra-latex-font-package-on-pythonanywhere/</guid><description>&lt;p&gt;This week I installed a LaTeX font package in my &lt;a href="https://www.pythonanywhere.com/"&gt;PythonAnywhere&lt;/a&gt; account. &lt;a href="#tldr"&gt;The TL;DR&lt;/a&gt;: just install it manually.&lt;/p&gt;
&lt;hr&gt;
I've been using LaTeX on and off for more than 10 years now. But I never dove into the depths of the system, typesetting mathematical expressions was fun enough for me.
&lt;p&gt;So I rely on Google a good bit. But that&amp;rsquo;s fine, as there are always new things to discover. Plus: the PythonAnywere support is superb! I had a very helpful email exchange with Giles. Thanks!&lt;/p&gt;
&lt;p&gt;Using the TeXLive distribution on my Mac, and on the Ubuntu server that runs PythonAnywhere, the way to install packages nowadays is to use the &lt;code&gt;tlmgr&lt;/code&gt; command, which I can only assume to be an abbreviation for &lt;em&gt;TeX Live manager&lt;/em&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr install roboto
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Well, that didn&amp;rsquo;t work, because I am not root nor sudo. Turns out, &lt;a href="https://tex.stackexchange.com/questions/288545/installing-with-tlmgr-without-sudo-to-texmf/288639#288639"&gt;there is a tlmgr User Mode&lt;/a&gt; which, after initializing a local user tree&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr init-usertree
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;allows me to install additional LaTeX packages into my home directory under &lt;code&gt;~/texmf&lt;/code&gt;. So:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr --usermode install roboto
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;should have done it. Unfortunately I got the following error message.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr --usermode install roboto
/usr/bin/tlmgr: could not find a usable xzdec.
/usr/bin/tlmgr: Please install xzdec and try again.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Thanks to Giles, it was easy to install the missing &lt;code&gt;xz&lt;/code&gt; package.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget https://tukaani.org/xz/xz-5.2.3.tar.gz
$ tar xf xz-5.2.3.tar.gz 
$ cd xz-5.2.3/
$ ./configure --prefix=$HOME/.local
$ make
$ make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That actually worked. But then &lt;code&gt;tlmgr&lt;/code&gt; spit out this:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Unknown directive ...containerchecksum
06c8c1fff8b025f6f55f8629af6e41a6dd695e13bbdfe8b78b678e9cb0cfa509826355f4ece20d8a99b49bcee3c5931b8d766f0fc3dae0d6a645303d487600b0..., please fix it! at /usr/share/texlive/tlpkg/TeXLive/TLPOBJ.pm line 210, &amp;lt;$retfh&amp;gt; line 5761.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a clear case for Google, and Google didn&amp;rsquo;t disappoint. The installed version of Tex Live is from 2013 and doesn&amp;rsquo;t work with the current package repositories.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr --version
(running on Debian, switching to user mode!)
tlmgr revision 32912 (2014-02-08 00:49:53 +0100)
tlmgr using installation: /usr/share/texlive
TeX Live (http://tug.org/texlive) version 2013
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After setting the repository to an old archived one,&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ tlmgr option repository ftp://tug.org/historic/systems/texlive/2013/tlnet-final
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;the TeX Live installation was happy.&lt;/p&gt;
&lt;p&gt;But, it turns out, the 2013 repository doesn&amp;rsquo;t even include the &lt;code&gt;roboto&lt;/code&gt; font package. So…&lt;/p&gt;
&lt;p&gt;&lt;a name="tldr"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="tldr"&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;… in the end, I installed the font by hand,
following the instructions here:
&lt;a href="http://www.ctan.org/tex-archive/fonts/roboto/"&gt;http://www.ctan.org/tex-archive/fonts/roboto/&lt;/a&gt;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget http://mirror.ctan.org/install/fonts/roboto.tds.zip
$ cd ~/texmf
$ unzip ~/roboto.tds.zip
$ texhash
$ updmap --enable Map=roboto.map
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;And now I have the &lt;code&gt;roboto&lt;/code&gt; font available for pdflatex on &lt;a href="https://www.pythonanywhere.com/"&gt;PythonAnywhere&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>How to test django template tags</title><link>https://flowfx.de/blog/how-to-test-django-template-tags/</link><pubDate>Tue, 09 May 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/how-to-test-django-template-tags/</guid><description>&lt;p&gt;&lt;a href="https://krzysztofzuraw.com/blog/2017/how-to-test-django-template-tags.html"&gt;Testing django template tags&lt;/a&gt; by Krzysztof Żuraw.&lt;/p&gt;</description></item><item><title>Populate your Django test database with pytest fixtures</title><link>https://flowfx.de/blog/populate-your-django-test-database-with-pytest-fixtures/</link><pubDate>Fri, 05 May 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/populate-your-django-test-database-with-pytest-fixtures/</guid><description>&lt;p&gt;I&amp;rsquo;m working on a side project that uses data from an external API. For performance reasons I store this data in a local database. But when running pytest, all my tests always start with a clean database. That&amp;rsquo;s not good, as I need the data to run many of the tests, and adding it from the API is very time consuming.&lt;/p&gt;
&lt;p&gt;Of course, Django has a solution for this, confusingly called &lt;code&gt;fixtures&lt;/code&gt;, and pytest has a way to use Django fixtures in a custom pytest fixture to &lt;a href="https://pytest-django.readthedocs.io/en/latest/database.html#populate-the-database-with-initial-test-data"&gt;populate the database with initial test data&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Because it took me a while to find this, I document it here. It works like this:&lt;/p&gt;
&lt;h2 id="dump-the-data"&gt;Dump the data&lt;/h2&gt;
&lt;p&gt;Using Django&amp;rsquo;s own &lt;a href="https://docs.djangoproject.com/en/1.11/ref/django-admin/#dumpdata"&gt;&lt;code&gt;dumpdata&lt;/code&gt;&lt;/a&gt; management command, you dump all or selected tables from your local database into a JSON file in a subfolder of the app named &lt;code&gt;fixtures&lt;/code&gt;. My Django app is called &lt;code&gt;potatoes&lt;/code&gt;, and I want the data for my two models &lt;code&gt;Potato&lt;/code&gt; and &lt;code&gt;SturdyPotato&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ ./manage.py dumpdata potatoes.Potato potatoes.SturdyPotato -o potatoes/fixtures/potatoes_data.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="load-the-data"&gt;Load the data&lt;/h2&gt;
&lt;p&gt;The corresponding &lt;a href="https://docs.djangoproject.com/en/1.11/ref/django-admin/#loaddata"&gt;&lt;code&gt;loaddata&lt;/code&gt;&lt;/a&gt; command can be used with pytest&amp;rsquo;s &lt;code&gt;django_db_setup&lt;/code&gt; fixture to load the data into the test database.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# tests/conftest.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;import&lt;/span&gt; pytest
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;from&lt;/span&gt; django.core.management &lt;span style="color:#f92672"&gt;import&lt;/span&gt; call_command
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.fixture&lt;/span&gt;(scope&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;session&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;django_db_setup&lt;/span&gt;(django_db_setup, django_db_blocker):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;with&lt;/span&gt; django_db_blocker&lt;span style="color:#f92672"&gt;.&lt;/span&gt;unblock():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; call_command(&lt;span style="color:#e6db74"&gt;&amp;#39;loaddata&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;potatoes_data.json&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="use-pytest-fixture"&gt;Use pytest fixture&lt;/h2&gt;
&lt;p&gt;Now, in every test that needs it, I use this session-scoped fixture, and the test data is available.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# tests/test_models.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_my_potatoes&lt;/span&gt;(db, django_db_setup):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# GIVEN a full database of potatoes, as provided by the django_db_setup fixture&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; all_my_potatoes &lt;span style="color:#f92672"&gt;=&lt;/span&gt; Potato&lt;span style="color:#f92672"&gt;.&lt;/span&gt;objects&lt;span style="color:#f92672"&gt;.&lt;/span&gt;all()
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>The Cat Empire live at Lowlands festival 2014</title><link>https://flowfx.de/blog/the-cat-empire-live-at-lowlands-festival-2014/</link><pubDate>Tue, 02 May 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-cat-empire-live-at-lowlands-festival-2014/</guid><description>&lt;p&gt;Hach…&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/6G5zUjQxf2g?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Disable Django/Python logging with pytest fixture</title><link>https://flowfx.de/blog/disable-django-logging-with-pytest-fixture/</link><pubDate>Mon, 10 Apr 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/disable-django-logging-with-pytest-fixture/</guid><description>&lt;p&gt;Yesterday, I added &lt;a href="https://sentry.io/"&gt;Sentry error tracking&lt;/a&gt; to my Django app, and configured it to register every log entry with level INFO and above. Now, everytime I ran my test suite, there were events logged with Sentry that I didn&amp;rsquo;t really care about. Naturally, I wanted to disable the default logging behavior for tests.&lt;/p&gt;
&lt;p&gt;StackOverflow, naturally, provides part of the answer:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;logging.disable(logging.CRITICAL)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;will disable all logging calls with levels less severe than or equal to CRITICAL.&lt;/p&gt;
&lt;p&gt;(&lt;a href="http://stackoverflow.com/a/5255760"&gt;http://stackoverflow.com/a/5255760&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But how to run this on every test? Pytest to the rescue! I use an &lt;a href="https://docs.pytest.org/en/latest/fixture.html#autouse-fixtures-xunit-setup-on-steroids"&gt;autouse fixture&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;if an autouse fixture is defined in a &lt;strong&gt;conftest.py&lt;/strong&gt; file then all tests in all test modules below its directory will invoke the fixture.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;And this is what I put into my &lt;code&gt;conftest.py&lt;/code&gt; files:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;@pytest.fixture&lt;/span&gt;(autouse&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;True&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;disable_logging&lt;/span&gt;():
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Disable logging in all tests.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; logging&lt;span style="color:#f92672"&gt;.&lt;/span&gt;disable(logging&lt;span style="color:#f92672"&gt;.&lt;/span&gt;INFO)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it. Love it!&lt;/p&gt;</description></item><item><title>How to install a Python virtual environment on macOS</title><link>https://flowfx.de/blog/install-a-python-virtual-environment-on-macos/</link><pubDate>Fri, 24 Mar 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/install-a-python-virtual-environment-on-macos/</guid><description>&lt;p&gt;&lt;strong&gt;Update 23/02/2018: don&amp;rsquo;t do this! Do this: &lt;a href="https://jacobian.org/writing/python-environment-2018/"&gt;My Python Development Environment, 2018 Edition&lt;/a&gt; by Jacop Kaplan-Moss.&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This one is for my amazing designer &lt;a href="https://angelica-ramos.com"&gt;Angélica&lt;/a&gt;. I should have written it before I failed to install a Python virtual environment on her machine this week.&lt;/p&gt;
&lt;p&gt;First of all: trust me, when I tell you that you want to use a virtual environment for your Python work. Second: there are many ways to install and use virtual environments. This one works for me(TM).&lt;/p&gt;
&lt;h2 id="install-homebrew"&gt;Install homebrew&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://brew.sh/index_es.html"&gt;Homebrew&lt;/a&gt; is a package manager for macOS that allows us to install a current version of Python, e.g. Python 3.6 at the moment. This is what we want.&lt;/p&gt;
&lt;p&gt;Start your terminal.app and copy and paste the installation command from the Homebrew website into it. Then hit enter.&lt;/p&gt;
&lt;h2 id="install-python3"&gt;Install Python3&lt;/h2&gt;
&lt;p&gt;When homebrew is installed, stay in the terminal.app and install Python3 using this command.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ brew install python3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, the commands &lt;code&gt;python3&lt;/code&gt; and &lt;code&gt;pip3&lt;/code&gt; are available on the command line. You can check the installed Python version with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ python3 --version
Python 3.6.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="install-virtualenvwrapper"&gt;Install virtualenvwrapper&lt;/h2&gt;
&lt;p&gt;Next, use &lt;code&gt;pip3&lt;/code&gt; to install the virtualenvwrapper tool (&lt;a href="http://virtualenvwrapper.readthedocs.io/en/latest/install.html"&gt;Official documentation&lt;/a&gt;) that makes working with virtual environments easy. I don&amp;rsquo;t even know how much easier, because I only ever use virtualenvwrapper.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ pip3 install virtualenvwrapper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Open the file &lt;code&gt;/Users/&amp;lt;your_username&amp;gt;/.bashrc&lt;/code&gt; in your text editor (like SublimeText), and add the following lines at the bottom.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quit and reload the terminal.app&lt;/p&gt;
&lt;h2 id="create-a-virtual-environment"&gt;Create a virtual environment&lt;/h2&gt;
&lt;p&gt;Finally, we can create a virtual environment. Go into our project directory (e.g. &lt;code&gt;~/code/secret_project/&lt;/code&gt;,&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd code/secret_project/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;type into the terminal,&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ mkvirtualenv --python==python3.6 secret_project
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and hit enter. This creates a new virtual environment in&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~/.virtualenvs/secret_project
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="activate-virtual-environment"&gt;Activate virtual environment&lt;/h2&gt;
&lt;p&gt;You activate it with&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ workon secret_project
&lt;/code&gt;&lt;/pre&gt;
&lt;!-- Der Clou kommt mit ZSH und dem 'virtualenvwrapper' plugin.

`(venv) ➜ current_directory git:(current_branch)`
</description></item><item><title>Using the pytest-mock plugin</title><link>https://flowfx.de/blog/using-the-pytest-mock-plugin/</link><pubDate>Fri, 17 Mar 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/using-the-pytest-mock-plugin/</guid><description>&lt;p&gt;After hearing about it &lt;a href="https://twitter.com/brianokken/status/842551389968461826"&gt;from Brian Okken&lt;/a&gt;, I today tried out the &lt;a href="https://pypi.python.org/pypi/pytest-mock"&gt;pytest-mock plugin&lt;/a&gt;. It is surprisingly simple to use and useful, too.&lt;/p&gt;
&lt;p&gt;The other day I wrote about &lt;a href="https://flowfx.de/blog/mocking-database-calls-when-testing-django-views"&gt;mocks in Django views&lt;/a&gt;. The example test uses the &lt;code&gt;with&lt;/code&gt; statement for patching the object.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from mock import patch

def test_detail_view(client):
 &amp;quot;&amp;quot;&amp;quot;Test the detail view for a Potato object with the Django test client.&amp;quot;&amp;quot;&amp;quot;
 potato = PotatoFactory.build()
 
 with patch.object(PotatoDetailView, 'get_object', return_value=potato):
 
 url = reverse('detail', kwargs={'pk': 1234}) # pk can be anything
 
 ... 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works fine when only one patch is applied, but probably gets tedious quickly with more than one.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Enter&lt;/em&gt;: the pytest-mock plugin and its &lt;code&gt;mocker&lt;/code&gt; fixture. Using this fixture, the test looks much cleaner.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;test_detail_view_with_mocker&lt;/span&gt;(client, mocker):
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Same test as above, but using the mocker fixture from pytest-mock.&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; potato &lt;span style="color:#f92672"&gt;=&lt;/span&gt; PotatoFactory&lt;span style="color:#f92672"&gt;.&lt;/span&gt;build()
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# This is new&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; mocker&lt;span style="color:#f92672"&gt;.&lt;/span&gt;patch&lt;span style="color:#f92672"&gt;.&lt;/span&gt;object(PotatoDetailView, &lt;span style="color:#e6db74"&gt;&amp;#39;get_object&amp;#39;&lt;/span&gt;, return_value&lt;span style="color:#f92672"&gt;=&lt;/span&gt;potato)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; url &lt;span style="color:#f92672"&gt;=&lt;/span&gt; reverse(&lt;span style="color:#e6db74"&gt;&amp;#39;detail&amp;#39;&lt;/span&gt;, kwargs&lt;span style="color:#f92672"&gt;=&lt;/span&gt;{&lt;span style="color:#e6db74"&gt;&amp;#39;pk&amp;#39;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1234&lt;/span&gt;})
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; [&lt;span style="color:#f92672"&gt;...&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;pytest awesomeness!&lt;/p&gt;</description></item><item><title>django-crispy-forms and the 'cancel' button</title><link>https://flowfx.de/blog/django-crispy-forms-and-the-cancel-button/</link><pubDate>Wed, 15 Mar 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/django-crispy-forms-and-the-cancel-button/</guid><description>&lt;p&gt;I use &lt;a href="http://django-crispy-forms.readthedocs.io/en/latest/"&gt;crispy-forms&lt;/a&gt; to render my Django forms. With crispy-forms there is almost no need to write any HTML. The template for form views can look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block content %}

{% crispy form %}

{% endblock content %}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;By itself, this does not render a submit button. It has to be added to the form definition (cf. the &lt;a href="http://django-crispy-forms.readthedocs.io/en/latest/crispy_tag_forms.html#fundamentals"&gt;crispy-forms documentation&lt;/a&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from potatoes.models import Potato

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit

from django import forms


class PotatoForm(forms.ModelForm):
 &amp;quot;&amp;quot;&amp;quot;ModelForm for the Potato model.&amp;quot;&amp;quot;&amp;quot;

 class Meta: # noqa
 model = Potato
 fields = (
 'weight',
 'variety',
 )

 def __init__(self, *args, **kwargs):
 &amp;quot;&amp;quot;&amp;quot;Initiate form with Crispy Form's FormHelper.&amp;quot;&amp;quot;&amp;quot;
 super(PotatoForm, self).__init__(*args, **kwargs)
 self.helper = FormHelper()
 
 # Add 'Submit' button
 self.helper.add_input(Submit('submit', 'Submit'))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A view that uses this form is &lt;a href="https://github.com/FlowFX/sturdy-potato/"&gt;my example project&lt;/a&gt;&amp;rsquo;s &lt;code&gt;PotatoCreateView&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class PotatoCreateView(CreateView):
 &amp;quot;&amp;quot;&amp;quot;Create view for the Potato model.&amp;quot;&amp;quot;&amp;quot;

 model = Potato
 form_class = PotatoForm
 template_name = 'potatoes/potato_form.html'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A submit button is nice, but I also want a cancel button. I add it to the crispy-forms &lt;code&gt;helper&lt;/code&gt;, but that just shows a button that does the same as the submit button.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Add &amp;#39;Submit&amp;#39; button&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;helper&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_input(Submit(&lt;span style="color:#e6db74"&gt;&amp;#39;submit&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;Submit&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;helper&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_input(Submit(&lt;span style="color:#e6db74"&gt;&amp;#39;cancel&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;Cancel&amp;#39;&lt;/span&gt;, css_class&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;btn-danger&amp;#39;&lt;/span&gt;,)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I need to overwrite the view&amp;rsquo;s &lt;code&gt;post&lt;/code&gt; method to do what I want, when the cancel button is clicked. For this, I use a model mixin, because why not.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;class FormActionMixin(object):

    def post(self, request, *args, **kwargs):
        &amp;quot;&amp;quot;&amp;quot;Add 'Cancel' button redirect.&amp;quot;&amp;quot;&amp;quot;
        if &amp;quot;cancel&amp;quot; in request.POST:
 	url = reverse('index') # or e.g. reverse(self.get_success_url())
 	return HttpResponseRedirect(url)
        else:
 	return super(FormActionMixin, self).post(request, *args, **kwargs)
 	

class PotatoCreateView(FormActionMixin, CreateView):
 &amp;quot;&amp;quot;&amp;quot;Create view for the Potato model.&amp;quot;&amp;quot;&amp;quot;

 ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When the cancel button is clicked, the resulting &lt;code&gt;POST&lt;/code&gt; request includes the &lt;code&gt;name&lt;/code&gt; attribute of the button. Overwriting the &lt;code&gt;post&lt;/code&gt; method for this case let&amp;rsquo;s me redirect the user to whatever page I want.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(note to self: research the Django way of redirecting to the previous page.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Now I have a submit and a cancel button. But on my CreateView it complains about required form fields.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://flowfx.de/images/screenshot-cancel-button-validates-form.png" alt="Screenshot"&gt;&lt;/p&gt;
&lt;p&gt;This has to do with HTML, and I found the solution &lt;a href="https://coderwall.com/p/itb2hq/cancel-button-on-a-form-with-required-fields"&gt;on Coderwall&lt;/a&gt;: the HTML attribute &lt;code&gt;formnovalidate&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;helper&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_input(Submit(&lt;span style="color:#e6db74"&gt;&amp;#39;submit&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;Submit&amp;#39;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;self&lt;span style="color:#f92672"&gt;.&lt;/span&gt;helper&lt;span style="color:#f92672"&gt;.&lt;/span&gt;add_input(Submit(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;cancel&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#39;Cancel&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; css_class&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;btn-danger&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; formnovalidate&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;formnovalidate&amp;#39;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(note to self: I need a test for this.)&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mocking database calls in Django view tests</title><link>https://flowfx.de/blog/mocking-database-calls-when-testing-django-views/</link><pubDate>Fri, 10 Mar 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mocking-database-calls-when-testing-django-views/</guid><description>&lt;p&gt;It took me a long time to understand the first thing about mocking in unit tests. The next few posts are intended to be a future reference to myself. Maybe you find them useful, or better, you can tell me how to do this better.&lt;/p&gt;
&lt;p&gt;I created a simple Django project to document my solutions in working code: &lt;a href="https://github.com/FlowFX/sturdy-potato"&gt;https://github.com/FlowFX/sturdy-potato&lt;/a&gt;. For the purpose of these posts I will use the models, views and tests from this project. All views are &lt;a href="https://docs.djangoproject.com/en/1.10/ref/class-based-views/"&gt;class-based views&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Why mocking? Because I want fast tests. Database calls are especially slow, and for many tests, it is not necessary to actually write to or load from the database. So I want to avoid these.&lt;/p&gt;
&lt;h2 id="a-simple-view-test"&gt;A simple view test&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;Potato&lt;/code&gt; model has two attributes: &lt;code&gt;weight&lt;/code&gt; and variety.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from django.db import models
from django.core.validators import MinValueValidator

class Potato(models.Model):
 &amp;quot;&amp;quot;&amp;quot;The Potato model.&amp;quot;&amp;quot;&amp;quot;

 slug = models.SlugField(unique=True)
 weight = models.IntegerField(validators=[MinValueValidator(1)])
 variety = models.CharField(max_length=255)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The URL for the detail page:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from django.conf.urls import url
from potatoes import views

urlpatterns = [
 [...]
 url(r'^potatoes/(?P&amp;lt;pk&amp;gt;[0-9]+)/$', views.PotatoDetailView.as_view(), name='detail'),
]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The view subclasses the &lt;a href="http://ccbv.co.uk/projects/Django/1.10/django.views.generic.detail/DetailView/"&gt;DetailView&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from potatoes.models import Potato

from django.views.generic import DetailView

class PotatoDetailView(DetailView):
 &amp;quot;&amp;quot;&amp;quot;Detail view for the Potato object.&amp;quot;&amp;quot;&amp;quot;
 
 model = Potato
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An simple way of testing this view is using the &lt;a href="https://docs.djangoproject.com/en/1.10/topics/testing/tools/#the-test-client"&gt;Django test client&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When using &lt;a href="http://doc.pytest.org/en/latest/"&gt;pytest&lt;/a&gt;, the test client is made available as a fixture by the &lt;a href="https://pytest-django.readthedocs.io/en/latest/"&gt;pytest-django&lt;/a&gt; plugin. Because I don&amp;rsquo;t use Django/unittest&amp;rsquo;s &lt;code&gt;TestCase&lt;/code&gt;, I need to make the test database available with the &lt;code&gt;@pytest.mark.django_db&lt;/code&gt; decorator.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from django.urls import reverse

from potatoes.factories import PotatoFactory

import pytest


@pytest.mark.django_db
def test_detail_view(client):
 &amp;quot;&amp;quot;&amp;quot;Test the detail view for a Potato object with the Django test client.&amp;quot;&amp;quot;&amp;quot;

 # (1) GIVEN a Potato object in the database
 potato = PotatoFactory.create() # saves to database

 # (2) WHEN calling the DetailView for this object
 url = reverse('detail', kwargs={'pk': potato.id})
 response = client.get(url)

 content = response.content.decode()
 # (3) THEN it shows the potato's ID and it's type
 assert response.status_code == 200
 assert str(potato.weight) in content
 assert potato.variety in content
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What&amp;rsquo;s happening here?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Using &lt;a href="https://factoryboy.readthedocs.io/en/latest/index.html"&gt;Factory Boy&lt;/a&gt;&amp;rsquo;s &lt;a href="https://factoryboy.readthedocs.io/en/latest/orms.html#django"&gt;DjangoModelFactory&lt;/a&gt;, a test &lt;code&gt;Potato&lt;/code&gt; is created and written to the database.&lt;/li&gt;
&lt;li&gt;The test client does a &lt;code&gt;GET&lt;/code&gt; request to the URL of the details page of this Potato. This reads from the database.&lt;/li&gt;
&lt;li&gt;It is checked whether the Potato&amp;rsquo;s attributes are displayed on the page.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This test hits the database twice, although I only want to test whether my view (and kind of my template) works or not. I&amp;rsquo;m pretty sure the Django ORM works fine.&lt;/p&gt;
&lt;h2 id="view-test-with-mock"&gt;View test with mock&lt;/h2&gt;
&lt;p&gt;In the test above, the object is only saved to the database so that the DetailView can read it from there. The method that reads from the database is the &lt;code&gt;PotatoDetailView&lt;/code&gt;&amp;rsquo;s &lt;code&gt;get_object&lt;/code&gt; method.&lt;/p&gt;
&lt;p&gt;In order to avoid the database request, I can use a so-called monkey patch that provides a return value for the method, without hitting the database.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from mock import patch

def test_detail_view(client):
 &amp;quot;&amp;quot;&amp;quot;Test the detail view for a Potato object with the Django test client.&amp;quot;&amp;quot;&amp;quot;

 # (1) GIVEN a Potato object
 potato = PotatoFactory.build() # not saved to the database

 # (2) monkey-patching 
 with patch.object(PotatoDetailView, 'get_object', return_value=potato):
 
 # (3) WHEN calling the DetailView for this object
 url = reverse('detail', kwargs={'pk': 1234}) # pk can be anything
 response = client.get(url)
 content = response.content.decode()
 
 # THEN it shows the potato's ID and it's type
 assert response.status_code == 200
 assert str(potato.weight) in content
 assert potato.variety in content
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the same test with just a few changes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Potato instance is &lt;strong&gt;not&lt;/strong&gt; saved to the database. (Check Factory Boy&amp;rsquo;s &lt;code&gt;build()&lt;/code&gt; vs. &lt;code&gt;create()&lt;/code&gt; methods.)&lt;/li&gt;
&lt;li&gt;This is the fun part. The patch &lt;code&gt;patch.object(PotatoDetailView, &amp;lsquo;get_object&amp;rsquo;, return_value=potato)&lt;/code&gt;
takes the &lt;code&gt;PotatoDetailView&lt;/code&gt; and, first of all, disables the &lt;code&gt;get_object&lt;/code&gt; method. Second, it replaces the method by something that &lt;em&gt;always&lt;/em&gt; returns the &lt;code&gt;potato&lt;/code&gt; instance. Always.&lt;/li&gt;
&lt;li&gt;No matter what primary key we call the detail view with, it will always receive the test &lt;code&gt;potato&lt;/code&gt; to work with. Which is really all we need to assert stuff.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There is no database call, no need for the django_db mark, just more speed.&lt;/p&gt;
&lt;p&gt;For a &lt;a href="http://ccbv.co.uk/projects/Django/1.10/django.views.generic.list/ListView/"&gt;ListView&lt;/a&gt;, the method that has to be replaced by the patch is &lt;code&gt;get_queryset&lt;/code&gt;. Check out &lt;a href="https://github.com/FlowFX/sturdy-potato/blob/master/potatoes/tests/test_models_with_mocks.py#L32"&gt;&lt;code&gt;test_list_view&lt;/code&gt;&lt;/a&gt; in the example project.&lt;/p&gt;</description></item><item><title>Testing Django forms with pytest parameterization</title><link>https://flowfx.de/blog/testing-django-forms-with-pytest-parameterization/</link><pubDate>Tue, 07 Mar 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/testing-django-forms-with-pytest-parameterization/</guid><description>&lt;p&gt;Working on a largish Django project, I have to test a lot of web forms. My basic approach is to put data into the form and check if it validates. I started out using separate tests for valid and invalid input data, also thinking about for loops to handle different data sets. But you don&amp;rsquo;t want to do that.&lt;/p&gt;
&lt;p&gt;Pytest&amp;rsquo;s &lt;a href="http://doc.pytest.org/en/latest/parametrize.html"&gt;Parametrizing&lt;/a&gt; offers a really neat and concise solution to this problem. Consider this simple example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from django import forms

import pytest


class ExampleForm(forms.Form):
 name = forms.CharField(required=True)
 age = forms.IntegerField(min_value=18)


@pytest.mark.parametrize(
 'name, age, validity',
 [('Hugo', 18, True),
 ('Egon', 17, False),
 ('Balder', None, False),
 ('', 18, False),
 (None, 18, False),
 ])
def test_example_form(name, age, validity):
 form = ExampleForm(data={
 'name': name,
 'age': age,
 })

 assert form.is_valid() is validity
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here, three values are parameterized: the input for the two form fields and, given this data, whether or not the form should validate or not.&lt;/p&gt;
&lt;p&gt;When working in a TDD-style, I start with one test case, code the form logic, then add the next test case by adding just one line of parameters. And repeat.&lt;/p&gt;
&lt;p&gt;&lt;small&gt;If you think there is a better way to test Django forms, please drop me a line &lt;a href="https://www.twitter.com/flowfx_"&gt;on the Twitter&lt;/a&gt;!&lt;/small&gt;&lt;/p&gt;
&lt;h3 id="update-10102017-pytest-parameter-matrices"&gt;Update 10/10/2017: &lt;a href="https://flowfx.de/blog/pytest-parameter-matrices"&gt;pytest parameter matrices&lt;/a&gt;&lt;/h3&gt;</description></item><item><title>Queen - Live at LIVE AID 1985</title><link>https://flowfx.de/blog/queen-live-at-live-aid-1985/</link><pubDate>Fri, 20 Jan 2017 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/queen-live-at-live-aid-1985/</guid><description>&lt;p&gt;Does it get any better?&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/A22oy8dFjqc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>DreamHost is awesome!</title><link>https://flowfx.de/blog/dreamhost-is-awesome/</link><pubDate>Tue, 29 Nov 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/dreamhost-is-awesome/</guid><description>&lt;p&gt;There are many crappy hosting providers. In fact, almost all of them are crappy.&lt;/p&gt;
&lt;p&gt;Almost.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.dreamhost.com/r.cgi?2080860"&gt;DreamHost&lt;/a&gt; is awesome!&lt;/p&gt;
&lt;p&gt;In their standard &lt;a href="https://www.dreamhost.com/hosting/shared/"&gt;shared-hosting plan&lt;/a&gt; they provide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;unlimited webspace&lt;/li&gt;
&lt;li&gt;unlimited MySQL databases&lt;/li&gt;
&lt;li&gt;unlimited email accounts&lt;/li&gt;
&lt;li&gt;unlimited user accounts
&lt;ul&gt;
&lt;li&gt;with separate web spaces&lt;/li&gt;
&lt;li&gt;with SSH access
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://wp-cli.org/"&gt;wp-cli&lt;/a&gt; pre-installed&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;free &lt;a href="https://letsencrypt.org/"&gt;LetsEncrypt&lt;/a&gt; SSL certificates for every domain and subdomain&lt;/li&gt;
&lt;li&gt;up-to-date PHP and MySQL versions&lt;/li&gt;
&lt;li&gt;excellent and friendly customer support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;(to be continued…)&lt;/p&gt;
&lt;p&gt;They do offer domain registration as well, but I prefer using &lt;a href="https://hover.com/mdaQ1dJv"&gt;Hover&lt;/a&gt; for this. In cases where everything else is on DreamHost, I just switch the domain&amp;rsquo;s name servers to the DreamHost name servers. And it just works.&lt;/p&gt;
&lt;p&gt;By now, I recommend DreamHost to everyone who asks, especially to all my clients.&lt;/p&gt;</description></item><item><title>List comprehensions for physicists</title><link>https://flowfx.de/blog/list-comprehensions-for-physicists/</link><pubDate>Fri, 25 Nov 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/list-comprehensions-for-physicists/</guid><description>&lt;blockquote&gt;
&lt;p&gt;A list comprehension provides a compact way of mapping a list to another list by applying a function to each of the elements of the list.&lt;/p&gt;
&lt;p&gt;– &lt;cite&gt;From &amp;ldquo;Dive Into Python 3&amp;rdquo;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Yeah. Well. Talk English to me! Please.&lt;/p&gt;
&lt;p&gt;Until recently I had no clue what list comprehensions do or how to use them or what they&amp;rsquo;re good for. Reading &lt;a href="http://www.diveintopython3.net/"&gt;Dive Into Python 3&lt;/a&gt; about two years ago, without much prior programming knowledge, maybe wasn&amp;rsquo;t the best idea I ever had.&lt;/p&gt;
&lt;p&gt;Today I know quite a bit more about programming in general and about Python in particular. Still, list comprehensions kept eluding me until I read &lt;a href="https://python-history.blogspot.mx/2010/06/from-list-comprehensions-to-generator.html"&gt;From List Comprehensions to Generator Expressions&lt;/a&gt; by the inventor of Python himself, Guido van Rossum.&lt;/p&gt;
&lt;p&gt;In this article, he starts by showing how lists are stated in mathematics. As a physicist, an expression like&lt;/p&gt;
&lt;p&gt;$$ \{ x \in \mathbf{N}\ |\ x &amp;lt; 10 \} $$&lt;/p&gt;
&lt;p&gt;is perfectly clear to me. It&amp;rsquo;s the set of all natural numbers that are smaller than 10, i.e.:&lt;/p&gt;
&lt;p&gt;$$ \{1, 2, 3, 4, 5, 6, 7, 8, 9\} $$&lt;/p&gt;
&lt;p&gt;depending on your preference of zero being a natural number or not.&lt;/p&gt;
&lt;p&gt;A python list of these integers would be:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;5&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;7&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;8&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;9&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Und suddenly, everything became clear to me.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[f(x) &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; x &lt;span style="color:#f92672"&gt;in&lt;/span&gt; S &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; P(x)]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;is the list of the function values $f(x)$ of all $x$ in the set $\mathbf{S}$ that fulfill the condition $\mathbf{P}$.&lt;/p&gt;
&lt;p&gt;Using a Python list comprehension, the first mathematical expression above reads:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[x &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; x &lt;span style="color:#f92672"&gt;in&lt;/span&gt; N &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; x &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;10&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Of course, this list is not possible, because $\mathbf{N}$ is infinite.&lt;/p&gt;
&lt;p&gt;The function value $f(x)$ is very handy as well. The set of the squares of all integers between 1 and 4:&lt;/p&gt;
&lt;p&gt;$$ \{ y\ |\ y = x^{2}; x \in \mathbf{N}; 0 &amp;lt; x &amp;lt; 5 \} $$&lt;/p&gt;
&lt;p&gt;expressed via a list comprehension is:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[x&lt;span style="color:#f92672"&gt;**&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; x &lt;span style="color:#f92672"&gt;in&lt;/span&gt; [&lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;,&lt;span style="color:#ae81ff"&gt;4&lt;/span&gt;]]
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Looking at list comprehensions in mathematical terms helped me understand them. It&amp;rsquo;s a great example of one and the same idea expressed differently in different fields and thus more or less understandable by people in that field.&lt;/p&gt;</description></item><item><title>Run Selenium from PyCharm</title><link>https://flowfx.de/blog/run-selenium-from-pycharm/</link><pubDate>Wed, 16 Nov 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/run-selenium-from-pycharm/</guid><description>&lt;p&gt;In order to run the Selenium WebDriver from within PyCharm, you need to explicitly add the path of the browser driver executable.&lt;/p&gt;
&lt;p&gt;It is in fact &lt;em&gt;not&lt;/em&gt; necessary to add the &lt;a href="http://www.seleniumhq.org/projects/webdriver/"&gt;PyCharm Selenium plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My PyTest fixture for the Selenium browser now looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from selenium import webdriver
import pytest

@pytest.fixture(scope=&amp;quot;session&amp;quot;)
def browser():
 browser = webdriver.PhantomJS(executable_path=&amp;quot;/usr/local/bin/phantomjs&amp;quot;,
 desired_capabilities={
 'phantomjs.page.settings.loadImages': 'false',
 })
 browser.implicitly_wait(3)

 yield browser

 browser.quit()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I&amp;rsquo;m using &lt;a href="http://phantomjs.org/"&gt;PhantomJS&lt;/a&gt; as a headless browser because it is &lt;em&gt;way&lt;/em&gt; faster than Firefox or Chrome. I wish I could disable all loading of CSS files.&lt;/p&gt;
&lt;h2 id="update-2017-01-18"&gt;Update 2017-01-18&lt;/h2&gt;
&lt;p&gt;Putting the explicit path to the browser driver executable into the test fixture causes problems when I run the same test on &lt;a href="https://snap-ci.com/"&gt;Snap CI&lt;/a&gt;. A better solution is to add the directory of the (PhantomJS) executable into PyCharm itself.&lt;/p&gt;
&lt;p&gt;In my PyCharm Community Edition 2016.2 I go to &lt;code&gt;Run &amp;raquo; Edit Configurations…&lt;/code&gt;, select the run configuration that runs my functional test and put&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;PATH=/usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;into &lt;code&gt;Environment variabls&lt;/code&gt;. That&amp;rsquo;s all. Now PyCharm finds the executable of PhantomJS in that directory and I can remove the &lt;code&gt;executable_path&lt;/code&gt; line from the fixture.&lt;/p&gt;
&lt;p&gt;I do not know why PyCharm doesn&amp;rsquo;t just import the $PATH from my shell.&lt;/p&gt;</description></item><item><title>Disable CSRF validation when unit-testing a Flask app!</title><link>https://flowfx.de/blog/disable-csrf-validation-when-unit-testing-a-flask-app/</link><pubDate>Mon, 14 Nov 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/disable-csrf-validation-when-unit-testing-a-flask-app/</guid><description>&lt;p&gt;In my current Flask project, I wanted to test a view method that includes a form with a POST request. But it wouldn&amp;rsquo;t work.&lt;/p&gt;
&lt;p&gt;The view method looks something like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# views.py
@tennis.route('/tournaments/add', methods=['GET', 'POST'])
def add_tournament():
 form = AddTournamentForm()
 
 if form.validate_on_submit():
 t = Tournament(name=form.name.data)
 db.session.add(t)
 db.session.commit()
 
 flash('A tournament was added to the database.')
 return redirect(url_for('tennis.index'))

 return render_template('tennis/add_tournament.html',
 form=form)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="https://pythonhosted.org/Flask-Testing/"&gt;Flask-Testing&lt;/a&gt; provides a &lt;code&gt;TestCase&lt;/code&gt; class with several useful assert methods. So the test would look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# test_views.py 
from flask_testing import TestCase

class TestTennisViews(TestCase): 
 […] 
 
 def test_tennis_add_tournament(self):
 # WHEN submitting correct form data to the add_tournament view
 r = self.client.post('/tennis/tournaments/add',
 data=dict(
 name='Chicharito Open',
 ))
 
 # THEN it redirects to the tennis overview page
 self.assertRedirects(r,'/tennis/')
 # and it shows a message
 self.assertMessageFlashed('A tournament was added to the database.')
 # and there is a tournament in the database
 assert Tournament.query.count() &amp;gt; 0
 # and it has the correct tournament
 t = Tournament.query.first()
 assert t.name == 'Chicharito Open'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;assertRedirects&lt;/code&gt;&lt;/strong&gt; checks if the status code is &lt;code&gt;301&lt;/code&gt; or &lt;code&gt;302&lt;/code&gt;. In my tests, it was always &lt;code&gt;200&lt;/code&gt;, and the test failed. Of course, nothing was added to the database, either.&lt;/p&gt;
&lt;p&gt;I googled &lt;em&gt;a lot&lt;/em&gt;, without success. I tried all combinations of the following keywords, among others:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flask
unit test
wtforms
POST request
testing
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The solution hit me when taking a break (it works!). It lies in the &lt;code&gt;form.validate_on_submit()&lt;/code&gt; part of the view function. &lt;code&gt;validate_on_submit()&lt;/code&gt; does two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It validates the form fields according to the validators specified in the form definition.&lt;/li&gt;
&lt;li&gt;It validates a &lt;a href="https://flask-wtf.readthedocs.io/en/stable/csrf.html"&gt;CSRF token&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Guess what: there is no CSRF token generated when executing a POST request directly in the test.&lt;/p&gt;
&lt;p&gt;The solution is easy, as &lt;code&gt;FLASK-WTF&lt;/code&gt; provides a &lt;a href="https://flask-wtf.readthedocs.io/en/stable/config.html#forms-and-csrf"&gt;configuration option to disable CSRF&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# config.py

[…]

class TestingConfig(Config):
 TESTING = True
 WTF_CSRF_ENABLED = False
 
 […]
 
class FunctionalTestingConfig(TestingConfig)
 WTF_CSRF_ENABLED = False
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course, only disable CSRF in your test configuration! I created a separate configuration for my functional tests, so that CSRF is enabled in those. When using the browser with Selenium, the CSRF token is provided by the WTForms form on the web page.&lt;/p&gt;</description></item><item><title>Testing Bootstrap select dropdown field with Selenium (Python)</title><link>https://flowfx.de/blog/testing-bootstrap-select-dropdown-field-with-selenium-python/</link><pubDate>Mon, 17 Oct 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/testing-bootstrap-select-dropdown-field-with-selenium-python/</guid><description>&lt;p&gt;I am building a &lt;a href="http://flask.pocoo.org/"&gt;Flask&lt;/a&gt; app that uses the &lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt; CSS framework. Forms fields are generated with &lt;a href="https://wtforms.readthedocs.io/en/latest/"&gt;WTForms&lt;/a&gt; via the &lt;a href="https://flask-wtf.readthedocs.io/en/stable/"&gt;Flask-WTF&lt;/a&gt; extension.&lt;/p&gt;
&lt;p&gt;One of my forms includes a select field:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;div class=&amp;quot;form-group &amp;quot;&amp;gt;
 &amp;lt;label class=&amp;quot;control-label&amp;quot; for=&amp;quot;surface&amp;quot;&amp;gt;Surface&amp;lt;/label&amp;gt;
 
 &amp;lt;select class=&amp;quot;form-control&amp;quot; id=&amp;quot;surface&amp;quot; name=&amp;quot;surface&amp;quot;&amp;gt;
 &amp;lt;option value=&amp;quot;clay&amp;quot;&amp;gt;Clay&amp;lt;/option&amp;gt;
 &amp;lt;option value=&amp;quot;hard&amp;quot;&amp;gt;Hard&amp;lt;/option&amp;gt;
 &amp;lt;option value=&amp;quot;grass&amp;quot;&amp;gt;Grass&amp;lt;/option&amp;gt;
 &amp;lt;/select&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;My functional tests with &lt;a href="https://selenium-python.readthedocs.io/index.html"&gt;Selenium&lt;/a&gt; went fine until I changed the desired test value from the default (&amp;ldquo;Clay&amp;rdquo;) to a different option (&amp;ldquo;Hard&amp;rdquo;). (duh!!) So I knew I did something wrong and looked for the correct way to choose an option from a select field.&lt;/p&gt;
&lt;p&gt;All the tests use the Selenium WebDriver.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from selenium import webdriver

browser = webdriver.Firefox()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="how-it-doesnt-work"&gt;How it doesn&amp;rsquo;t work&lt;/h2&gt;
&lt;p&gt;Via Google and Stackoverflow I found several possible solutions, none of which worked for me. 
My favorite one uses the &lt;a href="https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.select"&gt;Selenium Webdriver Select class&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from selenium.webdriver.support.ui import Select

select = Select(browser.find_element_by_id('surface'))
select.select_by_visible_text(&amp;quot;Hard&amp;quot;)
select.click()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then there are solutions using the &lt;code&gt;find_element_by_xpath&lt;/code&gt; method:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;option = browser.find_element_by_xpath(&amp;quot;//select[@id='surface']/option[@value='hard']&amp;quot;)
option.click()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or &lt;code&gt;find_element_by_css_selector&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;option = browser.find_element_by_css_selector(&amp;quot;select#surface &amp;gt; option[value='hard']&amp;quot;)
option.click()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and one other looking for the &lt;code&gt;option&lt;/code&gt; fields:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dropdown = browser.find_element_by_id('surface')
for option in dropdown.find_elements_by_tag_name('option'):
 if option.text == 'Hard':
 option.click()
 break
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apparently, Bootstrap does not play with Selenium. Or whatever. &lt;/p&gt;
&lt;h2 id="how-it-does-works"&gt;How it does works&lt;/h2&gt;
&lt;p&gt;I don&amp;rsquo;t remember where I got the idea to my solution, but it&amp;rsquo;s simple and obvious. It selects the dropdown menu, and then types in the text that I want to click. Then hits enter and voilá, the desired option is selected.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from selenium.webdriver.common.keys import Keys

dropdown = browser.find_element_by_id('surface')
dropdown.send_keys('Hard')
dropdown.send_keys(Keys.ENTER) 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you have a better way to select an option in a Bootstrap select field with the Selenium WebDriver, then &lt;a href="https://flowfx.de/contact/"&gt;please tell me&lt;/a&gt;!&lt;/p&gt;</description></item><item><title>serving society</title><link>https://flowfx.de/blog/i-serve-society-by-rocking/</link><pubDate>Fri, 07 Oct 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/i-serve-society-by-rocking/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Dude. I service society by rocking! I&amp;rsquo;m out there on the front lines, liberating people with my music. Rockin&amp;rsquo; ain&amp;rsquo;t no walk in the park, lady!&lt;/p&gt;
&lt;p&gt;– &lt;cite&gt;Jack Black in &amp;ldquo;School of Rock&amp;rdquo;&lt;/cite&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Tolle Dinge in Deutschland</title><link>https://flowfx.de/blog/tolle-dinge-in-deutschland/</link><pubDate>Thu, 11 Aug 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/tolle-dinge-in-deutschland/</guid><description>&lt;p&gt;Im Juli waren wir auf Deutschlandbesuch. Dort sind mir natürlich viele gute Dinge aufgefallen. Gute Dinge, die es teilweise nur dort gibt, und sicher nicht in Mexiko:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sauberes und leckeres Wasser direkt aus der Leitung&lt;/li&gt;
&lt;li&gt;Lecker Brötchen&lt;/li&gt;
&lt;li&gt;Filterkaffee&lt;/li&gt;
&lt;li&gt;Lecker Bier&lt;/li&gt;
&lt;li&gt;Döner Kebap&lt;/li&gt;
&lt;li&gt;Stille&lt;/li&gt;
&lt;li&gt;Waldwege&lt;/li&gt;
&lt;li&gt;Sofortwarme Duschen&lt;/li&gt;
&lt;li&gt;Lecker Brot&lt;/li&gt;
&lt;li&gt;Lecker Kuchen&lt;/li&gt;
&lt;li&gt;Bier auf der Straße trinken&lt;/li&gt;
&lt;li&gt;Öffentliche Mülleimer&lt;/li&gt;
&lt;li&gt;Zwiebelmett&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Was es nicht gibt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Essensstände im Park&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Too Good To Be Good</title><link>https://flowfx.de/blog/too-good-to-be-good/</link><pubDate>Mon, 11 Jul 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/too-good-to-be-good/</guid><description>&lt;p&gt;&lt;a href="http://mobile.nytimes.com/2016/07/13/world/what-in-the-world/at-mexicos-top-restaurants-service-too-good-to-be-good.html"&gt;This New York Times article&lt;/a&gt; makes some very good observations that are not only true for the &amp;quot;upscale Polanco neighboorhood&amp;quot;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Waiters will grab a plate from under your fork.&lt;/p&gt;
&lt;p&gt;[&amp;hellip;]&lt;/p&gt;
&lt;p&gt;30 servers searched for someone to serve among the restaurant&amp;rsquo;s 15
diners.&lt;/p&gt;
&lt;p&gt;[&amp;hellip;]&lt;/p&gt;
&lt;p&gt;In other words: Behind every obsequious waiter is an arrogant
customer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some interesting information I didn&amp;rsquo;t know before but, judging from my
own observations, have no doubt are true:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The World Economic Forum says Mexico has the second highest level of
income inequality among 35 nations in the Organization for Economic
Cooperation and Development. The 10 percent of Mexico&amp;rsquo;s population
with the highest income use more than one-third of the nation&amp;rsquo;s
resources, while the bottom 10 percent use less than 2 percent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&amp;rsquo;s one crazy country.&lt;/p&gt;</description></item><item><title>Code, code, code</title><link>https://flowfx.de/blog/code-code-code/</link><pubDate>Tue, 07 Jun 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/code-code-code/</guid><description>&lt;p&gt;A plain and short post by &lt;a href="https://twitter.com/pydanny"&gt;Daniel Roy Greenfeld&lt;/a&gt; about how to get better at coding: &lt;a href="http://www.pydanny.com/code-code-code.html"&gt;Code, Code, Code&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Reminds of the cardinal rule of long-distance running: You learn how to run only by running.&lt;/p&gt;</description></item><item><title>Cooperations don't want employees</title><link>https://flowfx.de/blog/cooperations-dont-want-employees/</link><pubDate>Tue, 07 Jun 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/cooperations-dont-want-employees/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://danielmiessler.com/blog/corporations-dont-want-employees/"&gt;The only reason hundreds of millions of people in the United
States&amp;mdash;and elsewhere in the world as well&amp;mdash;have jobs at all, is
because companies have not yet solved the problem of human
employment.&lt;/a&gt;
&amp;ndash; Daniel Miessler&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Word.&lt;/p&gt;</description></item><item><title>Reggae CDMX</title><link>https://flowfx.de/blog/reggae-cdmx/</link><pubDate>Sun, 05 Jun 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/reggae-cdmx/</guid><description>&lt;p&gt;A couple of months ago I started a new side project: &lt;code&gt;Reggae CDMX&lt;/code&gt;&lt;em&gt;. Clearly inspired by the popular but very local website reggae-freiburg.de.vu&lt;/em&gt;, it&amp;rsquo;s a collection of all local events that are related to Reggae, Dub or Ska music and culture.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m building this site with the amazing &lt;code&gt;Kirby CMS&lt;/code&gt;_, and it is a great opportunity for me to learn.&lt;/p&gt;
&lt;p&gt;.. _&lt;code&gt;Reggae CDMX&lt;/code&gt;: &lt;a href="https://reggae-cdmx.com"&gt;https://reggae-cdmx.com&lt;/a&gt;
.. _reggae-freiburg.de.vu: &lt;a href="http://reggae-freiburg.de.vu"&gt;http://reggae-freiburg.de.vu&lt;/a&gt;
.. _&lt;code&gt;Kirby CMS&lt;/code&gt;: &lt;a href="https://getkirby.com"&gt;https://getkirby.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So what are some things that I have leaned about so far?&lt;/p&gt;
&lt;h2 id="php"&gt;PHP&lt;/h2&gt;
&lt;p&gt;I never intended to learn any PHP, or at least not seriously. Well, that doesn&amp;rsquo;t work if you want to build cool things.&lt;/p&gt;
&lt;p&gt;nginx directive for cachebuster plugin.&lt;/p&gt;
&lt;p&gt;Structured data for events.&lt;/p&gt;
&lt;h2 id="kirby-controllers-vs-pagemodell-vs-pagemethods"&gt;Kirby: controllers vs pagemodell vs pagemethods&lt;/h2&gt;
&lt;p&gt;The author of Kirby himself provides a small &lt;code&gt;Kirby Cachebuster&lt;/code&gt;_ plugin. The proposed rewrite rules for Nginx did not work for me. So I googled a little bit and realised that the utilized cache busting technique is a standard way of doing this, not just when using Kirby. The Nginx rules that work for me are::&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;location ~* (.+)\.(?:\d+)\.(js|css|png|jpg|jpeg|gif)$ {
	try_files $uri $1.$2;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="facebook-instant-articles"&gt;Facebook Instant Articles&lt;/h2&gt;
&lt;p&gt;asdf&lt;/p&gt;
&lt;p&gt;.. _&lt;code&gt;Kirby Cachebuster&lt;/code&gt;: &lt;a href="https://github.com/getkirby/plugins/tree/master/cachebuster"&gt;https://github.com/getkirby/plugins/tree/master/cachebuster&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Es gibt keine Dreiecke</title><link>https://flowfx.de/blog/es-gibt-keine-dreiecke/</link><pubDate>Fri, 05 Feb 2016 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/es-gibt-keine-dreiecke/</guid><description>&lt;center&gt;Math with Bad Drawings: [There’s No Such Thing as Triangles](https://mathwithbaddrawings.com/2015/11/11/theres-no-such-thing-as-triangles/)&lt;/center&gt;</description></item><item><title>Hard To Handle</title><link>https://flowfx.de/blog/hard-to-handle/</link><pubDate>Wed, 08 Jul 2015 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/hard-to-handle/</guid><description>&lt;p&gt;Napster war super. Napster war für mich die glorreiche Zeit der
Musikentdeckungen. Durch die Suche nach Cover-Versionen habe ich viele
großartige Künstler erst kennengelernt. Nach einer langen Durststrecke
post-napster machen dies heute Spotify &amp;amp; Co wieder möglich. Dennoch war
die Zeit speziell.&lt;/p&gt;
&lt;p&gt;Meine Lieblingsgeschichte ist, wie einmal in der Harald Schmidt Show
Sasha zu Gast war (der später unter dem Namen Dick Brave berühmt werden
sollte). Zum Abschluss der Sendung sang er mit der Studioband den Song
&amp;ldquo;Hard To Handle&amp;rdquo;. Es war großartig.&lt;/p&gt;
&lt;p&gt;Sasha ist es also zu verdanken, dass auch ich Otis Redding kennenlernte:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/1ZxN9iQM7OY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;Es kann gut sein, dass ich damals auch zum ersten Mal Toots &amp;amp; The
Maytals hörte. Auf die Reggae-Schiene kam ich aber erst 2005, als ich in
Freiburg die Uplifters mitgründete.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/J5oANHA8wxE?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;Die eindrücklichste Version kam allerdings von der mir damals völlig
unbekannten Band The Black Crowes. Die genaue Aufnahme finde ich bei
YouTube nicht, aber sie spielen auch heute noch gut:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/k2PDUn_xsPY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Running my own web servers</title><link>https://flowfx.de/blog/running-my-own-web-servers/</link><pubDate>Sat, 09 May 2015 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/running-my-own-web-servers/</guid><description>&lt;p&gt;There are excellent &lt;a href="https://en.wikipedia.org/wiki/Shared_web_hosting_service"&gt;shared web hosting&lt;/a&gt; providers out there. Personally I prefer and recommend &lt;a href="https://uberspace.de/"&gt;Uberspace&lt;/a&gt; and &lt;a href="https://www.df.eu/int/domains/"&gt;domainFactory&lt;/a&gt;, if you are located in Europe and you speak German, and &lt;a href="https://www.dreamhost.com/"&gt;DreamHost&lt;/a&gt;, if you are living in North America. But even these are not perfect.&lt;/p&gt;
&lt;p&gt;While researching WordPress topics, I constantly noticed mentions of &lt;em&gt;nginx&lt;/em&gt;, &lt;em&gt;PHP-FPM&lt;/em&gt;, &lt;em&gt;APC&lt;/em&gt; and &lt;em&gt;memcached&lt;/em&gt;. Also, people are talking about &lt;strong&gt;fast&lt;/strong&gt; WordPress site. Like, really fast. I wanted that, too, but a shared hosting provider can’t deliver this. Maybe DreamHost’s &lt;a href="https://www.dreamhost.com/hosting/wordpress/"&gt;DreamPress&lt;/a&gt; WordPress hosting service does, but considering the number large of sites I manage, it’s too expensive for me.&lt;/p&gt;
&lt;p&gt;So I began researching about how to set up my own web server. Many of the better tutorials I found on &lt;a href="https://www.digitalocean.com/community/tutorials/"&gt;digitalocean.com&lt;/a&gt;. Only later I discovered that DigitalOcean offers Virtual Private Servers in several data centers around the world for a very good price. And today, I am a happy customer of theirs with VPSs in Frankfurt, Germany and San Francisco, USA – for my German and my Mexican clients respectively.&lt;/p&gt;
&lt;p&gt;I will not post a detailed tutorial about how to set up a web server, many others have done this before me. But I’d like to link to all the resources that I found useful. These will give a head start to anyone who wishes to try this herself.&lt;/p&gt;
&lt;p&gt;If you find anything that’s stupid, ridiculous or even dangerous, please &lt;a href="https://flowfx.de/contact"&gt;drop me a note&lt;/a&gt;!&lt;/p&gt;
&lt;!-- more --&gt;
&lt;h2 id="initial-server-setup"&gt;Initial server setup&lt;/h2&gt;
&lt;p&gt;It all starts with setting up, and somewhat securing, a virtual private server “droplet” at DigitalOcean. Because I am most familiar with Debian based GNU/Linux systems and because of the many, many existing tutorials, I choose the &lt;a href="http://www.ubuntu.com/server/"&gt;Ubuntu 14.04 LTS&lt;/a&gt; distribution as my server operating system.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04"&gt;Initial Server Setup with Ubuntu 14.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-ubuntu-14-04-servers"&gt;Additional Recommended Steps for New Ubuntu 14.04 Servers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I update the OpenSSH configuration according to the &lt;a href="https://bettercrypto.org/static/applied-crypto-hardening.pdf"&gt;Applied Crypto Hardening&lt;/a&gt; paper from &lt;a href="https://bettercrypto.org/"&gt;BetterCrypto.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="mosh"&gt;mosh&lt;/h3&gt;
&lt;p&gt;Where I work (i.e. Mexico), the internet connection is often unreliable. And as I use &lt;a href="https://en.wikipedia.org/wiki/Secure_Shell"&gt;SSH&lt;/a&gt; all the time to do work on the servers, the SSH replacement &lt;a href="https://mosh.mit.edu/"&gt;mosh&lt;/a&gt; is invaluable to me.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-mosh-on-a-vps"&gt;How To Install and Use Mosh on a VPS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wiki.ubuntuusers.de/Mosh"&gt;http://wiki.ubuntuusers.de/Mosh&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="automatic-security-upgrades"&gt;Automatic security upgrades&lt;/h3&gt;
&lt;p&gt;I like my servers to automatically install relevant security updates.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.ubuntu.com/lts/serverguide/automatic-updates.html"&gt;Ubuntu automatic updates&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="notification-emails"&gt;notification emails&lt;/h3&gt;
&lt;p&gt;I’m sure there must be a better solution, but to enable email notifications I install &lt;em&gt;sendmail&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo aptitude install sendmail
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="the-lemp-stack"&gt;The LEMP stack&lt;/h2&gt;
&lt;p&gt;The L&lt;strong&gt;E&lt;/strong&gt;MP stack differs from the ubiquitous L&lt;strong&gt;A&lt;/strong&gt;MP stack in the choice of the web server. Instead of &lt;a href="https://httpd.apache.org/"&gt;Apache&lt;/a&gt; there is &lt;a href="http://nginx.org/"&gt;nginx&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04"&gt;Digitalocean: How To Install Linux, nginx, MySQL, PHP (LEMP) stack on Ubuntu 14.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.chrismeller.com/configuring-and-optimizing-php-fpm-and-nginx-on-ubuntu-or-debian"&gt;@chrismeller: Configuring and Optimizing PHP-FPM and Nginx on Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fastcgi_params"&gt;fastcgi_params&lt;/h3&gt;
&lt;p&gt;To get PHP-FPM working, I need to add an extra line to the default &lt;code&gt;/etc/nginx/fastcgi_params&lt;/code&gt; configuration file, as found in the &lt;a href="http://wiki.nginx.org/PHPFcgiExample"&gt;nginx wiki&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="apc-vs-zend-opcache"&gt;APC vs. Zend Opcache&lt;/h2&gt;
&lt;p&gt;An OpCache caches compiled versions of the PHP scripts that e.g. WordPress runs on. This tremendously speeds up any PHP site. With PHP 5.5 came built-in support for the &lt;a href="https://pecl.php.net/package/ZendOpcache"&gt;Zend Opcache.&lt;/a&gt; which effectively renders other solutions, like &lt;a href="https://pecl.php.net/package/APC"&gt;APC&lt;/a&gt;, obsolete.&lt;/p&gt;
&lt;p&gt;To check if the OpCache is running, you can for example use&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/amnuts/opcache-gui"&gt;opcache-gui&lt;/a&gt; or&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rlerdorf/opcache-status"&gt;OPcache Status&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="zend-opcache-on-uberspace"&gt;Zend OPCache on Uberspace&lt;/h3&gt;
&lt;p&gt;To enable the Zend OPCache in an Uberspace shared hosting environment, you only need to specify your PHP version to e.g. 5.6.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://wiki.uberspace.de/development:php#php-version_einstellen"&gt;Select PHP version on Uberspace&lt;/a&gt; (German)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="memcached"&gt;memcached&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://memcached.org/"&gt;memcached&lt;/a&gt; caches database queries, among others. It’s so easy to install, there is no reason not to.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-memcache-on-ubuntu-14-04"&gt;Digitalocean: How To Install and Use Memcache on Ubuntu 14.04&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="memcached-and-wordpress"&gt;memcached and WordPress&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://wordpress.org/plugins/wp-ffpc/"&gt;WP-FFPC&lt;/a&gt; plugin turns memcached into an in-memory page cache for WordPress.&lt;/p&gt;
&lt;h2 id="php-pools"&gt;PHP pools&lt;/h2&gt;
&lt;p&gt;For security and possibly performance purposes, php-fpm “pools” separate php users for different web sites running on the same server.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-optimize-nginx-with-php-pools-on-an-ubuntu-13-04-vps"&gt;How To Optimize Nginx with PHP Pools on an Ubuntu 13.04 VPS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-next"&gt;What’s next&lt;/h2&gt;
&lt;h3 id="user-permissions"&gt;user permissions&lt;/h3&gt;
&lt;p&gt;I am still researching and experimenting with the best setup of user permissions on the server itself. I run sites from several users on the same server, so that’s important. I want my clients to have full access to their files, too. But I also won’t offer shared hosting to everybody. So for now, it’s not a big deal.&lt;/p&gt;
&lt;h3 id="my-config-files"&gt;my config files&lt;/h3&gt;
&lt;p&gt;Ideally I would publish all of my configuration files for reference. Maybe I will.&lt;/p&gt;
&lt;h3 id="ipv6"&gt;IPv6&lt;/h3&gt;
&lt;p&gt;It took me far too long to figure out how to enable &lt;a href="https://en.wikipedia.org/wiki/IPv6"&gt;IPv6&lt;/a&gt; support in the nginx configuration. When I know why my current settings work, I’ll write about it.&lt;/p&gt;
&lt;p&gt;To check IPv6 availability, I use &lt;a href="http://ipv6-test.com/validate.php"&gt;ipv6-test.com&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="varnish"&gt;Varnish&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.varnish-cache.org/"&gt;Varnish&lt;/a&gt; is a caching server that sits in front of the web server. Although I absolutely don’t need this for the sites I manage, I really want to try it out and play with it.&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Many of the sites that I have already moved to my web servers run &lt;em&gt;a lot&lt;/em&gt; faster than before, and more reliably as well. Google’s &lt;a href="https://developers.google.com/speed/pagespeed/insights/"&gt;PageSpeed Insights&lt;/a&gt; likes them, too. Also, I pay &lt;em&gt;less&lt;/em&gt; for my virtual servers than for all the shared hosting accounts.&lt;/p&gt;
&lt;p&gt;I am very happy so far.&lt;/p&gt;</description></item><item><title>Wichtiger als Facebook und WhatsApp</title><link>https://flowfx.de/blog/wichtiger-als-facebook-und-whatsapp/</link><pubDate>Sat, 10 Jan 2015 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wichtiger-als-facebook-und-whatsapp/</guid><description>&lt;p&gt;Vor zwei Monaten startete ich das Experiment "ohne Taschencomputer geht's doch auch". Ich verkaufte mein iPhone an meine Freundin und begnügte mich mit einem Notfalltelefon für Telefonate und SMS. Ich durfte aber ihren iPod Shuffle nutzen, und mir blieben natürlich noch mein MacBook Air und ein Kindle.
&lt;p&gt;Spätestens Weihnachten war leider klar, dass das Experiment gescheitert war. Nicht wegen fehlender Direktnachrichten oder Facebook, sondern wegen zwei ganz anderer Apps.&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Anki&lt;/h3&gt;
&lt;p&gt;Seit letztem Sommer lerne ich Vokablen, zum ersten Mal in meinem Leben überhaupt. &lt;a href="https://flowfx.de/blog/mexiko/"&gt;Spanische Vokabeln&lt;/a&gt; natürlich, und zwar mit der unfassbar großartiken &lt;a href="http://ankisrs.net/"&gt;Anki-App&lt;/a&gt; (Danke &lt;a href="https://twitter.com/scy"&gt;@scy&lt;/a&gt; für den Tipp!). Je mehr Vokabeln ich lerne, desto größer ist mein aktiver Wortschatz desto weniger anstrengend ist jede Unterhaltung, die ich hier vor Ort führe.&lt;/p&gt;
&lt;p&gt;In den letzten zwei Monaten wurden die Unterhaltungen zunehmend anstrengender. Anki hat auch eine Desktop-App, diese ersetzt aber nie das spontane 5-Minuten-zwischendurch Vokabellernen an Bushaltestelle, zwischen Unterrichtsstunden, im Park, morgens im Bett… Ich bin ja selbst über meinen Lernhunger erstaunt, aber mit Anki klappt&amp;rsquo;s halt auch.&lt;/p&gt;
&lt;p&gt;Allein dafür lohnt sich der Computer in der Hosentasche.&lt;/p&gt;
&lt;h3&gt;Podcasts&lt;/h3&gt;
&lt;p&gt;Der iPod Shuffle ist wirklich ein nettes kleines Gerät, für Podcasts ist er aber nicht gemacht. Wenn ich nicht gerade auf den Bus warte sondern drinsitze, wenn ich auf dem Fahrrad unterwegs bin, im FLugzeug, beim Geschirrspülen, dann höre ich Podcasts. Also brauche ich auch ein vernünftiges Gerät, um sie abzuspielen.&lt;/p&gt;
&lt;p&gt;q.e.d.&lt;/p&gt;
&lt;h3&gt;Fazit&lt;/h3&gt;
&lt;p&gt;Ohne Telefon geht, ohne ein paar essentielle Programme nicht. Neben Anki und einer Podcastapp würde ich auch die immer verfügbare Fotokamera dazuzählen. Ziemlich genau die Dinge, von denen ich schon anfangs wusste, dass sie mir fehlen würden.&lt;/p&gt;
&lt;p&gt;Gestern habe ich mir ein neues Telefon gekauft, was noch eine Geschichte für sich sein wird. Heute lerne ich wieder Vokabeln und genieße meine Podcasts und werde von Direktnachrichten nur so überschwemmt. o.O&lt;/p&gt;</description></item><item><title>Mein 31C3 beginnt *jetzt*</title><link>https://flowfx.de/blog/mein-31c3-beginnt-jetzt/</link><pubDate>Sun, 04 Jan 2015 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mein-31c3-beginnt-jetzt/</guid><description>&lt;p&gt;Ein großer Nachteil eines &lt;a href="https://flowfx.de/blog/mexiko/"&gt;Lebens in Mexiko&lt;/a&gt; ist die Ferne zu Deutschland. Insbesondere den diesjährigen &lt;a href="https://events.ccc.de/congress/2014/wiki/Static:Main_Page"&gt;Chaos Communication Congress&lt;/a&gt; habe ich doch sehr vermisst. Stattdessen musste ich im Strand spielen.
&lt;img src="https://flowfx.de/wp-content/uploads/2015/01/2015-01-03-Mein-31C3-1024x764.jpg" alt="FlowFX muss Urlaub am Strand machen" width="600" class="aligncenter size-large wp-image-2471 responsive-img"&gt;
&lt;p&gt;Deshalb beginnt mein 31C3 genau &lt;em&gt;jetzt&lt;/em&gt; mit den Aufzeichnungen auf &lt;a href="http://media.ccc.de/browse/congress/2014/index.html"&gt;media.ccc.de&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Welche Vorträge empfhielt ihr mir?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Schon gesehen habe ich:&lt;/p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6572_-_de_-_saal_1_-_201412301715_-_security_nightmares_-_frank_-_ron.html#video"&gt;Security Nightmares&lt;/a&gt; – frank &amp;amp; Ron&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6258_-_en_-_saal_1_-_201412282030_-_reconstructing_narratives_-_jacob_-_laura_poitras.html#video"&gt;Recunstructing Narratives&lt;/a&gt; – Jacob &amp;amp; Laura Poitras&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6109_-_de_-_saal_1_-_201412290015_-_fnord_news_show_-_frank_-_fefe.html#video"&gt;Fnord News Show&lt;/a&gt; – frank &amp;amp; Fefe&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6243_-_en_-_saal_1_-_201412292200_-_the_perl_jam_exploiting_a_20_year-old_vulnerability_-_netanel_rubin.html#video"&gt;The Perl Jam: Exploiting a 20 Year-old Vulnerability&lt;/a&gt; – Netanel Rubin&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6450_-_de_-_saal_1_-_201412272030_-_ich_sehe_also_bin_ich_du_-_starbug.html#video"&gt;Ich sehe, also bin ich ... Du&lt;/a&gt; – starbug&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6264_-_de_-_saal_1_-_201412271245_-_wir_beteiligen_uns_aktiv_an_den_diskussionen_-_martin_haase_maha.html#video"&gt;„Wir beteiligen uns aktiv an den Diskussionen“&lt;/a&gt; – Martin Haase/maha&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6558_-_de_-_saal_g_-_201412282300_-_traue_keinem_scan_den_du_nicht_selbst_gefalscht_hast_-_david_kriesel.html#video"&gt;Traue keinem Scan, den du nicht selbst gefälscht hast&lt;/a&gt; – David Kriesel&lt;/li&gt;
&lt;li&gt;&lt;a href="http://media.ccc.de/browse/congress/2014/31c3_-_6397_-_en_-_saal_6_-_201412301400_-_let_s_encrypt_-_seth_schoen.html#video"&gt;Let's Encrypt&lt;/a&gt; – Seth Schoen (EFF)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Was fehlt?&lt;/p&gt;</description></item><item><title>Freiheit für Laurence Maxwell Ilabaca</title><link>https://flowfx.de/blog/freiheit-fuer-laurence-maxwell-ilabaca/</link><pubDate>Mon, 24 Nov 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/freiheit-fuer-laurence-maxwell-ilabaca/</guid><description>&lt;p&gt;Letzten Donnerstag wurde auf einer Großdemo Moro, ein befreundeter Musiker, als einer von insgesamt 16 willkürlich festgenommen und sitzt seitdem im Gefängnis. Es liegt nun an seinen Freunden und seiner Familie, seine Unschuld zu beweisen.
&lt;p&gt;Mangels verlinkbarer Alternative hier eine Stellungnahme des &lt;em&gt;Komitees Freiheit für Laurence Maxwell Ilabaca&lt;/em&gt;.&lt;/p&gt;
&lt;/p&gt;&lt;h2&gt;Zweites offizielles Communiqé des Komitees Freiheit für Laurence Maxwell Ilabaca&lt;/h2&gt;
&lt;p&gt;“An die allgemeine Öffentlichkeit,&lt;/p&gt;
&lt;p&gt;Am 20. November fand in Mexiko Stadt eine weitere Demonstration für die 43 verschwundenen Studenten aus Ayotzinapa statt. Die Demonstration wurde von einer Breite an Menschen getragen, die in der Geschichte Mexikos seines Gleichen sucht. An ihr nahm die Zivilbevölkerung, studentische Bewegungen, Familien und Kinder teil. Alle taten sie ihre Unzufriedenheit kund ob der desolaten sozialen und politischen Situation in Mexiko. Ebenso haben sich weltweit tausende Personen der Proteste angeschlossen.&lt;/p&gt;
&lt;p&gt;Im Kontext dieser Proteste versucht die Mexikanische Regierung diesen jegliche Legitimität zu nehmen und die Mobilisierungen zu kriminalisieren. Dies zeigen die willkürlichen und gewalttätigen Verhaftungen, wie sie auch Laurence Maxwell Ilabaca zu spüren bekommen hat. Maxwell ist ein anerkannter Akademiker und Student mit einem Doktortitel mit Auszeichnung im Literarischen Institut der UNAM (Universidad Autónoma Nacional de México, Nationale Autonome Universität Mexiko). Maxwell befand sich am Abend des 20. November in der Nähe des &amp;ldquo;Zócalos&amp;rdquo; der Hauptstadt und war mit seinem Fahrrad unterwegs, als er verhaftet wurde.&lt;/p&gt;
&lt;p&gt;Laurence Maxwell wird kein fairer juristischer Prozess gemacht, im Gegenteil, dieser enthält einige Unklarheiten und Rechtswidrigkeiten:
 
Maxwell wurde nicht, wie üblich, zuerst zur Staatsanwaltschaft der Delegation Cuauthémoc, sondern direkt der Spezialabteilung für organisierte Kriminalität (SEIDO) überführt. Dies ist bereits der erste Hinweis darauf, dass die polizeilichen Handlungen als irregulär bezeichnet werden müssen.  
Später wurde ihm ein Pflichtverteidiger zugewiesen, welcher selbst der anklagenden Stelle, der Procuradoria General de la Republica, PGR, untersteht. Der Pflichtverteidiger, Rafael Lomas Loya, verweigert jegliche Information bezüglich Maxwell an Personen, die nicht seiner Familie angehören. Er legt mit dieser Informationssperre eine feindselige Haltung an den Tag, wohlweisslich, dass Laurence Maxwell, gebürtiger Chilene, über keine Familie in Mexiko verfügt.&lt;/p&gt;
&lt;p&gt;Als dritten Punkt in den Irregularitäten im Verfahren gegen Maxwell ist zu berichten, dass das Gesuch um den Austausch des Verteidigers zu erwirken, nicht akzeptiert wurde. Dies, obwohl Alejandro Jiménez, Anwalt des Mexikanischen Institutes der Menschenrechte (Instituto Mexicano de Derechos Humanos) mehrmalige Anstrenungen in dieser Sache unternommen hatte. Bis heute wird dieses Gesuch abgelehnt, ebenso wurden zwei Rekurse mit dem gleichen Begehren abgewiesen.&lt;/p&gt;
&lt;p&gt;Schliesslich wurde Laurence Maxwell um 07 Uhr morgens des 22. Novembers in das Hochsicherzeitsgefängnis CEEFERESO Nummer 5, (Centro Oriente, Villa Aldama) in den Bundesstaat Veracruz überführt – ohne eine Begründung und ohne seine Familie davon zu unterrichten.&lt;/p&gt;
&lt;p&gt;Laurence Maxwell ist eine anerkannte akademische und künstlerisch tätige Persönlichkeit. Er befindet sich nun in einem Hochsicherheitsgefängnis, bekannt unter dem Namen &amp;ldquo;El Perote&amp;rdquo;. In diesem Gefängnis befinden sich die gefährlichsten Personen des Landes, was uns sehr besorgt zurücklässt bezüglich der Wahrung der psychischen und physischen Integrität von Laurence Maxwell.&lt;/p&gt;
&lt;p&gt;Ohne Beweise vorlegen zu können, werden Laurence Maxwell Delikte wie Aufstand, versuchter Mord und Verbindungen zum organisierten Verbrechen angelastet – ohne sein legitimes Recht auf eine angemessene Verteidigung und bis heute ohne Kontakte nach Aussen.&lt;/p&gt;
&lt;p&gt;Diese Verhaftung hängt mit einer Serie von willkürlichen Festnahmen zusammen, die im Zusammenhang der Mobilisierungen für die Studenten von Ayotzinapa organisiert wurden.&lt;/p&gt;
&lt;p&gt;Wir fordern die Chilenische Regierung dazu auf, dringliche und effektive Massnahmen zu ergreifen, um die sofortige Freilassung von Laurence Maxwell zu erwirken, der sich in einem ordnungswidrigen Prozess befindet, in welchem jegliche Beweise für eine Straftat fehlen und die Grundrechte fundamental verletzt.&lt;/p&gt;
&lt;p&gt;Das Arbeitskomitee für die Freiheit von Laurence Maxwell solidarisiert sich mit den Familien und Freunden der Inhaftierten vom 20. November und mit den Familien der 43 Verschwundenen, von denen seit fast zwei Monaten jegliche Spur fehlt.&lt;/p&gt;
&lt;p&gt;Schliesslich rufen wir Studenten, Akademiker, Künstler, das Chilenische Volk und die Internationale Gemeinschaft dazu auf, sich mit unseren Anliegen zu solidarisieren und Druck aufzusetzen, damit die Wahrheit ans Licht kommt und Gerechtigkeit geübt wird.&lt;/p&gt;
&lt;p&gt;Sofortige Freilassung von Laurence Maxwell Ilabaca!”&lt;/p&gt;</description></item><item><title>Mexiko</title><link>https://flowfx.de/blog/mexiko/</link><pubDate>Sat, 09 Aug 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mexiko/</guid><description>&lt;p&gt;Kurze Servicedurchsage:
&lt;p&gt;&lt;strong&gt;Ich lebe seit heute in Mexiko&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;So in echt und so. Was sich ziemlich abgefahren anhört, ist es auch. &lt;a href="http://mexico.flowfx.de/2014/06/05/one-way-ticket/"&gt;Wie das so kam&lt;/a&gt; und wie es mir hier ergeht lest ihr am Besten auf &lt;a href="http://mexico.flowfx.de"&gt;mexico.flowfx.de&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Natürlich solltet ihr mir auch auf dem sozialen Netzwerk eurer Wahl folgen. Dieses &lt;a href="https://www.twitter.com/flowfxx"&gt;Twitter&lt;/a&gt;/&lt;a href="https://app.net/flowfx"&gt;ADN&lt;/a&gt;/&lt;a href="https://www.facebook.com/FlowFX/"&gt;Facebook&lt;/a&gt;/&lt;a href="https://www.instagram.com/flowfx_mexico"&gt;Instagram&lt;/a&gt;-Gedöns halt. Wer denkt, sie hätte Anspruch auf die etwas privateren Fotos, die schreibe mir bitte direkt. Man munkelt, es gäbe da ein &lt;a href="http://www.glassboard.com"&gt;Glasbrett&lt;/a&gt; für diese Fälle.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Physicists offer the best analogies</title><link>https://flowfx.de/blog/physicists-offer-the-best-analogies/</link><pubDate>Fri, 02 May 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/physicists-offer-the-best-analogies/</guid><description>&lt;blockquote&gt;
 Physicists offer the best analogies.
 They’re the best because they make no sense.
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://mathwithbaddrawings.files.wordpress.com/2013/12/410.jpg"&gt;&lt;img src="https://mathwithbaddrawings.files.wordpress.com/2013/12/410.jpg" width="500" height="375" alt="It's simple. Every electron lives in a cloud, except the cloud is the whole universe, and the electron is everywhere at once, but with low probability. See?" class&gt;&lt;/a&gt; Elektronenwolken&lt;/p&gt;
&lt;p&gt;via &lt;a href="https://mathwithbaddrawings.com/2014/04/30/physicists-give-the-best-analogies/"&gt;mathwithbaddrawings.com&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Cat Empire Live at Ancienne Belgique</title><link>https://flowfx.de/blog/cat-empire-live-ancienne-belgique/</link><pubDate>Tue, 15 Apr 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/cat-empire-live-ancienne-belgique/</guid><description>&lt;p&gt;Auf der Liste der &lt;strong&gt;Muss-ich-sehen-Bands&lt;/strong&gt; ab dem 19. Juli auf Platz 1: &lt;a href="http://thecatempire.com/"&gt;The Cat Empire&lt;/a&gt;.
&lt;div class="embed-responsive embed-responsive-16by9"&gt;
&lt;iframe width="1280" height="720" src="//www.youtube-nocookie.com/embed/eiY3xMM4DSk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Beste Szene: &lt;a href="https://youtu.be/eiY3xMM4DSk?t=1h40m8s"&gt;ab 1:40:10&lt;/a&gt; - Ja, auf der Bühne zu stehen ist besser als Sex!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>Wenn alle was mögen, kann das nicht richtig sein.</title><link>https://flowfx.de/blog/wenn-alle-was-moegen-kann-das-nicht-richtig-sein/</link><pubDate>Wed, 26 Mar 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wenn-alle-was-moegen-kann-das-nicht-richtig-sein/</guid><description>&lt;p&gt;Sonntag war ich zu Gast im &lt;a href="http://rautenradio.de/"&gt;Rautenradio&lt;/a&gt; und durfte mein harmloses Halbwissen zum &lt;a href="http://www.scfreiburg.com/"&gt;SC Freiburg&lt;/a&gt; zum Besten geben. Gute 25 Minuten rede ich mit Florian (für den HSV zuständig) und &lt;a href="https://twitter.com/herzi"&gt;Sven&lt;/a&gt; über mein Fan-Werden und die aktuelle Saison, entblöße eklatante Wissenslücken im Hinblick auf den HSV und bestätige das Klischee des symphathischen Vereins.
&lt;p&gt;Florian bringt es auf den Punkt:&lt;/p&gt;
&lt;/p&gt;&lt;blockquote&gt;
 Wenn alle was mögen, kann das nicht richtig sein.
&lt;/blockquote&gt;
&lt;p&gt;In dem Sinne, hört rein! Ich mag das Rautenradio.&lt;/p&gt;
&lt;p&gt;[podloveaudio mp3=&amp;ldquo;http://download.rautenradio.de/rr075.mp3&amp;rdquo; m4a=&amp;ldquo;http://download.rautenradio.de/rr075.m4a&amp;rdquo; poster=&amp;ldquo;http://www.rautenradio.de/wp-content/uploads/rautenradio-1400.png&amp;rdquo; title=&amp;ldquo;RR075 Zwölferspieler&amp;rdquo;]&lt;/p&gt;</description></item><item><title>Das nächste Album wird auf Tofu gepresst</title><link>https://flowfx.de/blog/das-naechste-album-wird-auf-tofu-gepresst/</link><pubDate>Thu, 13 Mar 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/das-naechste-album-wird-auf-tofu-gepresst/</guid><description>&lt;p&gt;Retardo besingt das harte Leben Freiburger Rapper. Treffend.
&lt;div class="embed-responsive embed-responsive-16by9"&gt;
&lt;iframe width="853" height="480" src="//www.youtube-nocookie.com/embed/0A4pbUHIkEE" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;Sein Interview bei Fudder ist ebenfalls lesenswert: &lt;a href="http://fudder.de/artikel/2014/03/13/oekos-sind-mir-lieber-als-hipster-interview-mit-dem-rapper-retardo-zu-seinem-musikvideo-freiburge/"&gt;“Ökos sind mir lieber als Hipster!”&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>What if the entire future is full of only horrible, boring things?</title><link>https://flowfx.de/blog/entire-future-full-horrible-boring-things/</link><pubDate>Wed, 26 Feb 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/entire-future-full-horrible-boring-things/</guid><description>&lt;p&gt;In den letzten Wochen spülen mir meine Timelines immer öfter Texte von Menschen mit Depressionen zu. Das finde ich sehr schön. Je mehr wir darüber reden, desto besser können wir ein allgemeines Bewusstsein schaffen, was alleine schon den Betroffenen hilft.
&lt;p&gt;Mir selbst fehlen bis heute die Worte, um meine eigene Geschichte aufzuschreiben. Vielleicht erstmal in kurz? Im August 2009 habe ich einsehen müssen, dass ich Hilfe brauchte. Mein Leben hatte ich schon länger nicht mehr im Griff, egal was der äußere Anschein war. Ich hatte großes Glück, direkt einen Termin bei einem Psychotherapeuten um die Ecke zu bekommen, den ich bis Frühling 2012 regelmäßig besuchte. Seit Dezember 2009 nehme ich auch Antidepressiva, glücklicherweise mit nur wenigen Nebenwirkungen. Seitdem weiß ich: das Zeug hilft! Es half mir beispielsweise dabei, die Therapie überhaupt wirken zu lassen. Wieder normale Gefühle zu entwickeln. Oder ganz profan: den Hof kehren zu können.&lt;/p&gt;
&lt;p&gt;Nun ja. Seitdem ist einiges passiert. Im Großen und Ganzen geht es mir sehr gut. Die Medikamente nehme ich weiterhin, und depressive Episoden kommen auch ab und an vor. Das ist alles ziemlicher Mist, aber es war schon schlimmer.&lt;/p&gt;
&lt;p&gt;In persönlichen Gesprächen rede ich sehr offen über meine Krankheit. Die wichtigsten Ratschläge, die ich jedem immer ans Herz lege sind:&lt;/p&gt;
&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;An Depressionen Leidende brauchen professionelle Hilfe. Als Freunde oder Familie könnt ihr letztendlich leider nicht viel helfen. &lt;/li&gt;
&lt;li&gt;Medikamente helfen! Sie ermöglichen wieder ein normales Leben zu führen. Nicht mehr und nicht weniger.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Im Netz fehlten mir wie gesagt bisher die Worte. Vielleicht ist das hier der Anfang? Auf jeden Fall möchte ich hier im Blog die Texte sammeln, auf die ich so stoße. Ein Was-zum-Lesen-Depri-Spezial also. Fangen wir an.&lt;/p&gt;
&lt;h3&gt;Die Dame in schwarz&lt;/h3&gt;
&lt;p&gt;Die eindrücklichste Beschreibung dessen, was während einer depressiven Episode in einem vor sich geht, die ich bisher gelesen habe, stand auf scilogs.de und hieß &lt;a href="http://www.scilogs.de/wblogs/blog/libertarian/allgemein/2012-02-26/die-dame-in-schwarz"&gt;Die Dame in schwarz&lt;/a&gt;. &lt;em&gt;Stand&lt;/em&gt;, weil der Text nicht mehr online ist. Schade. Ich würde mich sehr über eine Kopie davon freuen!&lt;/p&gt;
&lt;h3&gt;My fish are dead&lt;/h3&gt;
&lt;p&gt;Gleiches Thema, anderes Blog. Auf englich - natürlich - so wie fast alles, auf das ich dieser Tage stoße. Lest diesen Text auf keinen Fall in Pocket oder Instapaper! Die Zeichnungen sind viel zu gut dafür. Ich finde hier sehr viel Bekanntes wieder. Der Weg zurück in die normale Welt war bei mir anders, und Selbstmordabsichten hatte ich auch nie, aber wenn mich irgendwer fragen würde, wie sich Depressionen anfühlen: &lt;a href="http://hyperboleandahalf.blogspot.com/2013/05/depression-part-two.html"&gt;Depression part two&lt;/a&gt; ist der Text dazu.&lt;/p&gt;
&lt;h3&gt;Don’t try to fix things.&lt;/h3&gt;
&lt;p&gt;Ob meine Depressionen Mitschuld am Scheitern von mittlerweile zwei Beziehungen hatten? Keine Ahnung. Ich denke nein. Und ich habe große Angst dass Ja.&lt;/p&gt;
&lt;blockquote&gt;
 Make sure you take care of your own needs and do things for yourself that make you happy.
&lt;/blockquote&gt;
&lt;p&gt;So sieht&amp;rsquo;s aus. Ihr könnt nämlich eh nichts machen. Denke ich. Weiß ich nicht. Da arbeite ich noch dran. Bis dahin, orientiert euch an &lt;a href="http://www.feld.com/wp/archives/2014/02/suggestions-spouses-whose-partner-depressed.html"&gt;Suggestions for Spouses Whose Partner Is Depressed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Danke fürs Lesen!&lt;/p&gt;</description></item><item><title>Büroeinweihung der C3S am 14. Februar in Düsseldorf</title><link>https://flowfx.de/blog/bueroeinweihung-der-c3s-14-februar-duesseldorf/</link><pubDate>Mon, 03 Feb 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/bueroeinweihung-der-c3s-14-februar-duesseldorf/</guid><description>&lt;p&gt;In knapp zwei Wochen ist es soweit: die C3S weiht ihr erstes eigenes Büro ein. Im alten Gerresheimer Bahnhof in Düsseldorf befindet sich dann die erste physische Manifestation der kommenden Verwertungsgesellschaft. Tickets zur Fete gibt's auch schon &lt;a href="https://events.c3s.cc/"&gt;im Vorverkauf&lt;/a&gt;.
&lt;p&gt;Wir seh&amp;rsquo;n uns!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://events.c3s.cc/" title="Ticketvorverkauf C3S"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2014/02/einweihnungsparty-flyer.png" alt="Einladung zur Büroeinweihungsfeier der C3S" width="826" height="1169" class="aligncenter size-full wp-image-2075"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Was zum Lesen - 22. Januar 2014</title><link>https://flowfx.de/blog/was-zum-lesen-22-januar-2014/</link><pubDate>Wed, 22 Jan 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-zum-lesen-22-januar-2014/</guid><description>&lt;ul&gt;
&lt;li&gt;Ich mag Zahlen. Ich mag auch, wenn Leute Unfug mit Zahlen treiben. Eine Anleitung dazu bietet Dan Birken: &lt;a href="http://danbirken.com/statistics/2013/11/19/ways-to-make-fake-data-look-meaningful.html"&gt;Ways to make fake data look meaningful&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Die Sache mit dem Breitband-Ausbau in Deutschland ist ein Trauerspiel. Gemeinden wie &lt;a href="http://www.badische-zeitung.de/emmendingen-baut-schnelles-internet-selbst--77730399.html"&gt;Emmendingen müssen ihre Infrastruktur selbst schaffen&lt;/a&gt;, um Standordnachteile zu verhinden. Mir gefallen &lt;a href="http://lumma.de/2014/01/12/die-sache-mit-dem-breitband-ausbau/"&gt;Nico Lummers Vorschläge&lt;/a&gt; sehr, wie dies bundesweit geschehen könnte.&lt;/li&gt;
&lt;li&gt;Der SC Freiburg begründet in einem &lt;a href="http://www.scfreiburg.com/teams/profis/meldungen/positionspapier-zum-stadionneubau"&gt;Positionspapier&lt;/a&gt; die Notwendigkeit eines Stadionneubaus. Die Auflagen der DFL und mögliche zukünftige Lizenzentzug klingen bedrohlich, kann ich aber nicht bewerten. Mein Bauch sagt mir, dass der Wolfwinkel ein sehr guter Standort für das neue Stadion ist. Mir ist besonders wichtig, dass weiterhin jedermann per Straßenbahn oder Fahrrad zum Spiel fahren kann. Ohne das, verliert Freiburg insgesamt.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/fcstoffel"&gt;Stoffel&lt;/a&gt; vergleicht Noten urheberrechtlich mit Kochrezepten. Ich finde, er hat recht. Für mehr freie Kultur: &lt;a href="http://www.horstseinefreunde.de/musik/noten-sind-musikrezepte/"&gt;Noten sind Musikrezepte&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>30C3 - Politische Bildung für Jedermann</title><link>https://flowfx.de/blog/2014-01-07_30c3-politische-bildung-fuer-jedermann/</link><pubDate>Tue, 07 Jan 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/2014-01-07_30c3-politische-bildung-fuer-jedermann/</guid><description>&lt;p&gt;Der Chaos Communication Congress ist mehr als nur ein Hackertreffen. Der Großteil der Vorträge sind allgemeinverständlich und für jedermann interessant. Gut, dass sie alle in Ton und Bild festgehalten werden.
&lt;p&gt;Diese unvollständige Liste soll einen Einstiegspunkt bieten. Alle weiteren Vorträge könnt ihr &lt;a href="https://media.ccc.de/browse/congress/2013/"&gt;direkt auf den Seiten des CCC&lt;/a&gt; durchstöbern.&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Die Bundesrepublik – das am meisten überwachte Land in Europa&lt;/h3&gt;
&lt;p&gt;Professor Josef Foschepoth aus Freiburg erläutert, wieso die aktuellen Enthüllungen über die NSA nur der Höhepunkt einer langen Geschichte der Überwachung durch die Alliierten in Deutschland sind. Ein ungemein wichtiger Beitrag.&lt;/p&gt;
&lt;p&gt;Der Vortrag beginnt bei ca. 10:30 Minuten. Irgendwie ist das Video (noch) nicht richtig geschnitten.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/4sxA91SRfrI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;!-- more --&gt;
&lt;h3&gt;Bullshit made in Germany&lt;/h3&gt;
&lt;p&gt;Linus Neumann entlarvt die Marketingkampagnen der Bundesregierung sowie der Telefonkonzerne wenn es um technische Angebote aus Deutschland geht als genau das: reines Marketing ohne Substanz. Sehr amüsant.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=V_SMsAA7wcg"&gt;https://www.youtube.com/watch?v=V_SMsAA7wcg&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Der Kampf um Netzneutralität - Wer kontrolliert das Netz?&lt;/h3&gt;
&lt;p&gt;Netzneutralität ist ein genauso schwieriges wie wichtiges Thema. Markus Beckedahl weiß aber, wie er es allgemeinverständlich erklären kann. Schwerer Stoff, für die Zukunft des Internets aber entscheidend.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lcQyQ5dmuiY"&gt;https://www.youtube.com/watch?v=lcQyQ5dmuiY&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Warum die Digitale Revolution des Lernens gescheitert ist.&lt;/h3&gt;
&lt;p&gt;Pflichtvortrag für alle Lehrenden oder solche die es werden wollen. Lustig ist er auch. Versprochen!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=a90Tto1b4eo"&gt;https://www.youtube.com/watch?v=a90Tto1b4eo&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;30C3S SCE mbH: GEMA-Konkurrenz für Fortgeschrittene&lt;/h3&gt;
&lt;p&gt;aka “Zwei Takte später”&lt;/p&gt;
&lt;p&gt;Eigenwerbung, ich weiß. m.eik und bruder schildern die Ereignisse des letzten Jahres und den Stand unserer GEMA-Konkurrenz.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=UqUNTsn8lDI"&gt;https://www.youtube.com/watch?v=UqUNTsn8lDI&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Alternativ dazu mag ich die erste Folge des von uns produzierten Podcast &lt;a href="https://www.c3s.cc/podcast/cc001-zwei-takte-spaeter/"&gt;Cultural Comments - Der C3S-Podcast&lt;/a&gt; empfehlen.&lt;/p&gt;
&lt;h3&gt;30c3 keynote with Glenn Greenwald&lt;/h3&gt;
&lt;p&gt;Die Congress-Keynote von Glenn Greenwald, dem Journalisten der zusammen mit Edward Snowden und Laura Poitras die NSA-Dokumente veröffentlicht hat und weiter veröffentlicht. Dieser Mann ist für mich jetzt schon eine der wichtigsten Persönlichkeiten unserer Zeit.&lt;/p&gt;
&lt;p&gt;Auf Englisch, aber wichtig.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=gyA6NZ9C9pM"&gt;https://www.youtube.com/watch?v=gyA6NZ9C9pM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;to be continued…&lt;/p&gt;
&lt;p&gt;Ich nehme gerne Ergänzungsvorschläge in den Kommentaren entgegen!&lt;/p&gt;</description></item><item><title>The Uplifters &amp; Block Ice Horn Section - Live im Jos Fritz Café!</title><link>https://flowfx.de/blog/2014-01-04_uplifters-block-ice-horn-section-live-im-jos-fritz-cafe/</link><pubDate>Fri, 03 Jan 2014 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/2014-01-04_uplifters-block-ice-horn-section-live-im-jos-fritz-cafe/</guid><description>&lt;p&gt;Kommenden Samstag stehe ich endlich wieder live auf der Bühne. Nach vier Jahren im nordbadischen Exil darf ich wieder mit meiner alten, neuen, ersten, tollsten Band überhaupt gemeinsam musizieren.&lt;/p&gt;
&lt;p&gt;Selbstverständlich spielen wir wieder im &lt;a href="http://www.josfritzcafe.de/" title="Jos Fritz Café in se wepp"&gt;Jos Fritz Café&lt;/a&gt;, wo auch sonst? Los geht&amp;rsquo;s um 20 Uhr, da wir das Feld um 22 Uhr schon den DJs überlassen müssen. Dann geht das Tanzen aber einfach weiter.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.facebook.com/events/169090009947207/?ref=22"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2014/01/gig_110113_2.png" alt="gig_110113_2" width="500" height="500" class="aligncenter size-full wp-image-2058"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Auf dem 30C3</title><link>https://flowfx.de/blog/auf-dem-30c3/</link><pubDate>Thu, 26 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/auf-dem-30c3/</guid><description>&lt;p&gt;Morgen beginnt der &lt;a href="https://events.ccc.de/congress/2013/wiki/Main_Page"&gt;30. Chaos Communication Congress&lt;/a&gt; im CCH in Hamburg. Ich freue mich sehr, wieder dort sein zu können. Diesmal weiß ich auch, wo ich die meiste Zeit verbringen werde: in der &lt;a href="https://www.c3s.cc/die-c3s-auf-dem-30c3/"&gt;Assembly der C3S&lt;/a&gt;.
&lt;p&gt;Solltet ihr auch zum 30C3 fahren, kommt doch dort vorbei und sagt hallo! Alternativ erreicht ihr mich bestimmt auch über &lt;a href="https://twitter.com/flowfxx"&gt;Twitter&lt;/a&gt; und &lt;a href="https://alpha.app.net/flowfx"&gt;ADN&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Was wäre, wenn eine Bundesligasaison 160 Spieltage hätte?</title><link>https://flowfx.de/blog/was-waere-wenn-eine-bundesligasaison-160-spieltage-haette/</link><pubDate>Sun, 08 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-waere-wenn-eine-bundesligasaison-160-spieltage-haette/</guid><description>&lt;p&gt;Joe Posnanski stellt eine interessante Frage: &lt;a href="http://hardballtalk.nbcsports.com/2013/11/01/what-if-mlbs-season-were-only-16-games/"&gt;Was wäre, wenn die reguläre Baseballsaison nur 16 Spiele umfassen würde&lt;/a&gt;? Anstatt 162. Seine Antworten sind nur für Baseballfans interessant, führen aber auf die deutsche Variante der Frage:
&lt;/p&gt;&lt;h3&gt;Was wäre, wenn eine Bundesligasaison 160 Spieltage hätte?&lt;/h3&gt;
&lt;p&gt;Wie würde sich das Fußballspiel verändern, wenn praktisch jeden Tag ein Spiel stattfinden würde? Zwei Voraussagen wage ich: das Spiel würde langsamer und fairer werden. Und ja, es wäre möglich, jeden Tag zu spielen. Weil sich das Spiel an den neuen Rhythmus anpassen würde.&lt;/p&gt;
&lt;p&gt;Das ist meine Antwort für alle, die darüber lächeln, dass die Fußballer nur ein- oder zweimal die Woche arbeiten müssen: Das moderne Fußballspiel ist genauso schnell und intensiv, wie es die Ruhephasen zulassen. Nicht mehr und nicht weniger.&lt;/p&gt;</description></item><item><title>Was zum lesen - 08. Dezember 2013</title><link>https://flowfx.de/blog/was-zum-lesen-08-dezember-2013/</link><pubDate>Sun, 08 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-zum-lesen-08-dezember-2013/</guid><description>&lt;p&gt;Zwei schon etwas ältere, dafür aber zeitlos gültige Beiträge.
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Spielverlagerung.de erklärt sehr einleuchtend, warum &lt;a href="http://spielverlagerung.de/2013/11/15/stefan-kiesling-und-die-nationalmannschaft/"&gt;Stefan Kießling und die Fußball-Nationalmannschaft&lt;/a&gt; unter Jogi Löw einfach nicht zusammenpassen.&lt;/li&gt;
&lt;li&gt;Volker Pispers fasst den Wahnwitz der NSA und Snowden-Enthüllungen trocken zusammen:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=J0SJJQyYNCE"&gt;http://www.youtube.com/watch?v=J0SJJQyYNCE&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Headlines from a Mathematically Literate World</title><link>https://flowfx.de/blog/headlines-from-a-mathematically-literate-world/</link><pubDate>Thu, 05 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/headlines-from-a-mathematically-literate-world/</guid><description>&lt;p&gt;Aus der Reihe “Artikel, die ich gerne selbst geschrieben hätte” ein ganz großartiger Text auf &lt;a href="http://mathwithbaddrawings.com"&gt;Math with Bad Drawings&lt;/a&gt;:
&lt;p&gt;&lt;strong&gt;&lt;a href="http://mathwithbaddrawings.com/2013/12/02/headlines-from-a-mathematically-literate-world/"&gt;Headlines from a Mathematically Literate World&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wer weiß, wie sehr ich mich jedes Mal über den IFO-Geschäftsklimaindex amüsiere, den wird mein Lieblingsbeispiel nicht überraschen:&lt;/p&gt;
&lt;/p&gt;&lt;blockquote&gt;
&lt;strong&gt;Our World:&lt;/strong&gt; Unemployment Rate Jumps from 7.6% to 7.8%
&lt;strong&gt;Mathematically Literate World:&lt;/strong&gt; Unemployment Rate Probably a Little Under 8%; Maybe Rising, or Not, Can’t Really Tell
&lt;/blockquote&gt;</description></item><item><title>Joe Posnanskis Top 100</title><link>https://flowfx.de/blog/joe-posnanskis-top-100/</link><pubDate>Wed, 04 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/joe-posnanskis-top-100/</guid><description>&lt;p&gt;Ich liebe Baseball. Noch vor Fußball ist es der Sport, der mich am meisten fasziniert. Nein, nicht jedes Baseballspiel ist spannend und aufregend. Was aber immer aufregend ist, ist die Geschichte des Spiels und die Menschen, die es spielen und gespielt haben.
&lt;p&gt;Die &lt;a href="http://baseballhall.org/"&gt;National Baseball Hall of Fame&lt;/a&gt; in Cooperstown, NY ist der beste Ort um genau darüber zu lernen. In einem einzigartigen Museum wird die Geschichte des Sports, die mit unzähligen Anekdoten gespickt ist, erzählt und ihre Protagonisten würdig dargestellt.&lt;/p&gt;
&lt;p&gt;Ein Problem hat die Baseball Hall of Fame allerdings: sie befindet sich in Cooperstown, NY.&lt;/p&gt;
&lt;p&gt;Für die Unkundigen unter uns: das liegt in den USA, einmal über den großen Teich rüber. Grund genug, dass ich mich sehr über ein großes Schreibprojekt meines absoluten Lieblings-US-Sport-Schreiberlings &lt;a href="http://joeposnanski.com/Bio.html"&gt;Joe Posnanski&lt;/a&gt; freue: &lt;a href="http://joeposnanski.com/joeblogs/the-100-greatest-baseball-players-ever/"&gt;“The 100 greatest baseball players ever”&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Schön daran ist nicht, dass irgendein Journalist mal wieder irgendeiene Top–100-Liste aufgestellt hat. Nein, Joe widmet jedem ausgewählten Spieler einen eigenen Text. In seiner ganz eigenen grandiosen Art lerne so auch ich Spieler kennen, die mir bisher unbekannt waren oder von denen ich bisher nur den Namen kannte. Denn ja: Geschichte gehört zu Baseball wie Statistiken und Sonnenblumenkerne.&lt;/p&gt;
&lt;p&gt;Der erste Name auf Joes Liste ist mir wohlbekannt, schließlich habe ich die Playoffsspiele von 2004 alle live vor dem Bildschirm miterlebt, rote Socke und alles. Aber schon mit dem zweiten Namen wusste ich nichts anzufangen. Ich freue mich auf die nächsten Wochen und die vielen tollen Texte von Joe über die großartigsten Baseballspieler aller Zeiten:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-100-curt-schilling/"&gt;100. Curt Schilling&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-99-cool-papa-bell/"&gt;99. Cool Papa Bell&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/98-ron-santo/"&gt;98. Ron Santo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-97-lou-whitaker/"&gt;97. Lou Whitaker &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-96-ichiro/"&gt;96. Ichiro Suzuki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-95-mariano/"&gt;95. Mariano Rivera&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-94-paul-waner/"&gt;94. Paul Waner&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-93-craig-biggio/"&gt;93. Craig Biggio&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-92-old-hoss-radbourn/"&gt;92. Old Hoss Radbourn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-91-robin-roberts/"&gt;91. Robin Roberts&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-90-mark-mcgwire/"&gt;90. Mark McGwire&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-89-bullet-rogan/"&gt;89. Bullet Rogan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-88-tim-raines/"&gt;88. Tim Raines&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-87-nolan-ryan/"&gt;87. Nolan Ryan&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-86-miguel-cabrera/"&gt;86. Miguel Cabrera&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-85-barry-larkin/"&gt;85. Barry Larkin&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://joeposnanski.com/joeblogs/no-84-frankie-frisch/"&gt;84. Frankie Frisch&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Wie ich HTML-Dateien in MODX-Seiten einbinde</title><link>https://flowfx.de/blog/wie-ich-html-dateien-in-modx-seiten-einbinde/</link><pubDate>Wed, 04 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wie-ich-html-dateien-in-modx-seiten-einbinde/</guid><description>&lt;p&gt;Durch einen sehr bereichernden Besuch bei &lt;a href="https://twitter.com/cheatha"&gt;Cheatha&lt;/a&gt; letzte Woche habe ich das grandiose CMS &lt;a href="http://modx.com/"&gt;MODX&lt;/a&gt; kennengelernt. Es war Liebe auf den ersten Blick.
&lt;p&gt;Ohne zuviel versprechen zu wollen, ahne ich bereits, dass ich hier in Zukunft öfter mal von kleinen feinen MODX-Lösungen berichten werde. Ich fange mit einer an, die mich wirklich schon wochenlang beschäftigt hat.&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Das Problem&lt;/h3&gt;
&lt;p&gt;Ich arbeite an einem neuen Webprojekt, das &lt;em&gt;sehr&lt;/em&gt; viel Content bereithalten wird. Dieser Content wird in Markdown geschrieben und enthält &lt;span class="math"&gt;( LaTeX )&lt;/span&gt;-Schnipsel. Mittels &lt;a href="http://johnmacfarlane.net/pandoc/"&gt;Pandoc&lt;/a&gt; übersetze ich diesen Text nach HTML.&lt;/p&gt;
&lt;p&gt;Wie bekomme ich dieses HTML nun ohne Copy&amp;amp;Paste in mein MODX?&lt;/p&gt;
&lt;h3&gt;Die Lösung&lt;/h3&gt;
&lt;p&gt;Die Antwort kommt - natürlich - in Form eines PHP-Snippets. Klar, mit den entsprechenden PHP-Skills hätte ich das auch einfach selbst schreiben können. Aber die habe ich noch nicht, weswegen ich doch sehr froh über Cheathas Hinweis auf das MODX-Extra &lt;a href="http://modx.com/extras/package/includesnippet"&gt;“Include snippet”&lt;/a&gt; bin. Ein wenig abgewandelt, an meine aktuellen Pfade angepasst und als &lt;code&gt;includeHTML&lt;/code&gt; abgespeichert sieht dies so aus:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;?php
$file = $modx-&amp;gt;getOption('file',$scriptProperties,false);
$snippet = $modx-&amp;gt;getOption('snippet',$scriptProperties,false);
$basePath = $modx-&amp;gt;getOption('base_path');
$includePath = '';

if($file) $includePath = $basePath.$file;
else if($snippet) $includePath = $basePath."assets/elements/btsync/".$snippet.".html";

if(file_exists($includePath)) include($includePath);
else $modx-&amp;gt;log(modX::LOG_LEVEL_ERROR, 'File not found in: '.$includePath, 'HTML', 'snippet/include');
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Warum da &lt;code&gt;btsync&lt;/code&gt; drin steht? Weil der Content über einen btsync-Ordner von unseren Heimrechnern auf den Webserver synchronisiert wird. Änderungen können somit immer lokal vorgenommen werden, ohne sich extra in den MODX-Manager einloggen zu müssen.&lt;/p&gt;
&lt;p&gt;Um den HTML-Content in eine MODX-Seite einzubinden, reicht nun die folgende Zeile:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[[!includeHTML? &amp;amp;snippet=`dateiname`]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eine Dateiendung ist nicht nötig. Dateien in Unterordnern des Syncordners sind ebenfalls zugänglich. Dazu ist nur der relative Pfad notwendig:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[[!includeHTML? &amp;amp;snippet=`pfad/zur/datei/dateiname`]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ziemlich elegant, wenn ihr mich fragt.&lt;/p&gt;</description></item><item><title>Toa Mata Band - The Dub session</title><link>https://flowfx.de/blog/toa-mata-band-dub-session/</link><pubDate>Sun, 01 Dec 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/toa-mata-band-dub-session/</guid><description>&lt;p&gt;Musik wie sie sein sollte.
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=jQ7vz8N3zO0"&gt;http://www.youtube.com/watch?v=jQ7vz8N3zO0&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>11 Minuten Vorspiel</title><link>https://flowfx.de/blog/2013-11-29_11-minuten-vorspiel/</link><pubDate>Fri, 29 Nov 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/2013-11-29_11-minuten-vorspiel/</guid><description>&lt;p&gt;Shiverman by Fat Freddy&amp;rsquo;s Drop - in voller Länge.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/N47KnuP8B9Q?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;Die beste Band der Welt.&lt;/p&gt;</description></item><item><title>Kein Internetnutzer hat etwas zu befürchten, falls er anständige und normale Seiten aufruft</title><link>https://flowfx.de/blog/kein-internetnutzer-hat-etwas-zu-befuerchten-falls-er-anstaendige-und-normale-seiten-aufruft/</link><pubDate>Wed, 23 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/kein-internetnutzer-hat-etwas-zu-befuerchten-falls-er-anstaendige-und-normale-seiten-aufruft/</guid><description>&lt;p&gt;Aus der heise-Meldung &lt;a href="http://www.heise.de/newsticker/meldung/Komplettueberwachung-Russischer-Geheimdienst-erhaelt-vollstaendige-Kontrolle-im-Internet-1982856.html"&gt;“Komplettüberwachung: Russischer Geheimdienst erhält vollständige Kontrolle im Internet”&lt;/a&gt; vom 21. Oktober 2013:
&lt;/p&gt;&lt;blockquote&gt;
Kein Internetnutzer habe etwas zu befürchten, falls er anständige und normale Seiten aufrufe.
&lt;/blockquote&gt;
&lt;p&gt;Das muss man sich auf der Zunge zergehen lassen. Solange ich mich anständig und normal verhalte, brauche ich mir also keine Sorgen machen. Wenn sich doch alle Menschen dauernd normal und anständig verhalten würden! Was wäre unsere Welt für ein entspannter Ort:&lt;/p&gt;
&lt;p&gt;Kein Stress, kein Lärm, keine Langhaarigen, keine Kiffer, keine WG-Partys, keine Rockmusik, schon gar kein Techno, keine Bikinis, kein Napster, keine USA, keine Wiedervereinigung, kein Christopher Street Day, kein Reinhold Messner, kein Roald Amundsen, kein Rüdiger Nehberg, kein Heinz Helfgen, kein Stauffenberg, kein Martin Luther, kein Helge Schneider, kein Galileo Galilei, kein Dalai Lama, kein Bilbo Baggins, kein Bob Marley, kein Jesus von Nazareth und ganz sicher keine Rolling Stones.&lt;/p&gt;
&lt;p&gt;Was wäre das für eine Welt?&lt;/p&gt;</description></item><item><title>Glen Greenwald ist ja mal 'ne coole Sau.</title><link>https://flowfx.de/blog/glen-greenwald-ist-ja-mal-ne-coole-sau/</link><pubDate>Wed, 16 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/glen-greenwald-ist-ja-mal-ne-coole-sau/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/f1Zvo8N3G94?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;via &lt;a href="http://boingboing.net/2013/10/06/glenn-greenwald-vs-hopelessly.html"&gt;boing boing&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Die Red Sox bei Intentional Talk</title><link>https://flowfx.de/blog/die-red-sox-bei-intentional-talk/</link><pubDate>Tue, 15 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-red-sox-bei-intentional-talk/</guid><description>&lt;p&gt;Was für eine tolle Truppe. :)
&lt;iframe src="http://wapc.mlb.com/shared/video/embed/embed.html?content_id=31124273&amp;amp;width=600&amp;amp;height=336&amp;amp;property=mlb" width="600" height="336" frameborder="0"&gt;Your browser does not support iframes.&lt;/iframe&gt;
&lt;p&gt;Und ich will das T-Shirt!!&lt;/p&gt;
&lt;p&gt;Update: Das T-Shirt gibt&amp;rsquo;s bei &lt;a href="http://www.buymebrunch.com/products/boston-beard"&gt;buymebrunch.com&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Was zum Lesen - 15. Oktober 2013</title><link>https://flowfx.de/blog/was-zum-lesen-15-oktober-2013/</link><pubDate>Tue, 15 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-zum-lesen-15-oktober-2013/</guid><description>&lt;p&gt;Mein letzter Besuch der USA ist schon einiges her. So richtig Lust bekomme ich auch nicht mehr, wenn ich Artikel wie diesen hier lese, denn &lt;a href="http://www.vice.com/de/read/america-knows-everything/"&gt;“America knows everything”&lt;/a&gt;.
&lt;p&gt;Vielleicht ist das auch gut so. Der geschätzte Trainer Baade zeigt nämlich auf, warum man als Fußballfan doch lieber im eigenen Land bleiben sollte: &lt;a href="http://www.trainer-baade.de/goodbye-ausland/"&gt;Goodbye Ausland&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Deutschland ist ja auch schön. München zum Beispiel! Da ist es doch wunderbar, dass die Bahn demnächst eine Direktverbindung von Basel dorthin anbieten wird. So werden &lt;a href="http://www.badische-zeitung.de/muellheim-bad-krozingen-und-lahr-werden-ic-bahnhoefe"&gt;Müllheim, Bad Krozingen und Lahr IC-Bahnhöfe&lt;/a&gt;. Ich find’s großartig.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Was zum lesen - 02. Oktober 2013</title><link>https://flowfx.de/blog/was-zum-lesen-02-oktober-2013/</link><pubDate>Wed, 02 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-zum-lesen-02-oktober-2013/</guid><description>&lt;ul&gt;
&lt;li&gt;Gunter Dueck &lt;a href="http://www.omnisophie.com/dd200-ich-habe-nichts-zu-verbergen-doch-denk-nach-und-empoere-dich/"&gt;hat etwas zu verbergen&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;Sr. Rolando &lt;a href="http://papaswort.de/2013/10/01/stille/"&gt;hat sturmfrei&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.faz.net/aktuell/feuilleton/buecher/autoren/ilija-trojanows-einreiseverbot-willkuer-und-freiheit-12599490.html"&gt;Ilija Trojanow&lt;/a&gt; darf nicht in die USA einreisen und&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twitter.com/alohastone"&gt;Alohastone&lt;/a&gt; berichtet von &lt;a href="http://www.alohastone.com/2013/10/01/kurz-vor-dem-schlafen-gehen-dieses-bassproblem/"&gt;nächtlichen Bassproblemen&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Die C3S ist gegründet und finanziert</title><link>https://flowfx.de/blog/die-c3s-ist-gegruendet-und-finanziert/</link><pubDate>Tue, 01 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-c3s-ist-gegruendet-und-finanziert/</guid><description>&lt;p&gt;&lt;a href="http://blog.c3s.cc/grundung-der-gema-alternative-c3s-hamburg/"&gt;Die C3S ist gegründet&lt;/a&gt; und &lt;a href="http://blog.c3s.cc/c3s-150-000-e-fur-die-frisch-gegrundete-gema-alternative/"&gt;das Crowdfunding höchst erfolgreich abgeschlossen&lt;/a&gt;. Damit ist der Startschuss zum Aufbau einer Konkurrenz zur GEMA jetzt so richtig doll offiziell erfolgt, juristische Feinheiten mal aussenvor gelassen.&lt;/p&gt;
&lt;p&gt;Wer den ersten Link oben sorgfältig studiert, wird meinen Kopf nicht nur auf dem enthaltenen Bild, sondern meinen Namen auch im frisch gewählten Verwaltungsrat entdecken. Das hätte ich mir vor ein paar Monaten auch noch nicht vorstellen können, nun freue ich mich aber riesig, an so einem großartigen Projekt entscheidend mitarbeiten zu können.&lt;/p&gt;</description></item><item><title>ILÜ 2013</title><link>https://flowfx.de/blog/ilue-2013/</link><pubDate>Tue, 01 Oct 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/ilue-2013/</guid><description>&lt;p&gt;Da bin ich ja zur rechten Zeit am richtigen Ort. Nebenan* läuft die &lt;a href="http://www.deutschesheer.de/portal/a/heer/!ut/p/c4/JcpBDoAgDAXRs3iBdu_OW6g70C801GIQ9Poazexehmd-M3dJcFWyOeWRp0V6f1MECrlUG1TpzLai1IgdRg2-WYB9h9iWFbH8yEcaugcTQ_VL/"&gt;Informationslehrübung Landoperationen 2013&lt;/a&gt; und es klingt seit langem mal wieder wie früher. Wenn man Kanonenfeuer als Klang anerkennt. Großartig!
&lt;p&gt;*Die Grenze zum Truppenübungsplatz ist nur einen (langen) Steinwurf entfernt&lt;/p&gt;&lt;/p&gt;</description></item><item><title>C3S wird gegründet</title><link>https://flowfx.de/blog/c3s-wird-gegruendet/</link><pubDate>Wed, 25 Sep 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/c3s-wird-gegruendet/</guid><description>&lt;p&gt;Heute wird die &lt;a href="http://www.c3s.cc"&gt;C3S&lt;/a&gt; in Hamburg formal als &lt;a href="https://de.wikipedia.org/wiki/Europ%C3%A4ische_Genossenschaft"&gt;Europäische Genossenschaft&lt;/a&gt; gegründet. Als Teil des Kern-Teams habe ich das Privileg, zu den Mitgründern zu gehören und bin deswegen heute auch in Hamburg.
&lt;p&gt;&lt;em&gt;Gründer&lt;/em&gt; hört sich toll an, macht aber im Grunde nur mehr Arbeit. Viel wichtiger sind die vielen Musiker, die in Zukunft Teil der C3S werden. Also hoffentlich ihr! Die erste und beste Chance dazu bietet das bis Ende des Monats laufende &lt;a href="http://startnext.de/c3s"&gt;Crowdfunding auf Startnext&lt;/a&gt;, bei dem ihr als Künstler direkt Genossenschaftsanteile zeichnen könnt.&lt;/p&gt;
&lt;p&gt;Auch als interessierter Nichtkünstler könnt ihr den Start der C3S unterstützen, indem ihr am Crowdfunding beteiligt. Die Hälfte der angestrebten Summe ist bereits erreicht, es sieht also eine Woche vor Ende der Aktion ziemlich gut aus. Macht mit!&lt;/p&gt;
&lt;iframe src="//player.vimeo.com/video/70236760" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/70236760"&gt;Crowdfunding Feature: “C3S :: Die faire GEMA-Alternative / The fair alternative in collecting societies.”&lt;/a&gt; from &lt;a href="http://vimeo.com/c3s"&gt;C3S&lt;/a&gt; on &lt;a href="https://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Mein Reggae Jam 2013</title><link>https://flowfx.de/blog/mein-reggae-jam-2013/</link><pubDate>Wed, 07 Aug 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mein-reggae-jam-2013/</guid><description>&lt;p&gt;Letztes Wochenende durfte ich am großartigen &lt;a href="http://reggaejam.de"&gt;Reggae Jam&lt;/a&gt; in Bersenbrück teilnehmen. Zusammen mit &lt;a href="http://twitter.com/alohastone"&gt;@alohastone&lt;/a&gt; und zwei seiner Freunde habe ich eine Veranstaltung erlebt, die stark an ein Volksfest erinnert und deswegen so symphatisch ist. Der ganze - sonst so verschlafene - Ort scheint Teil der Organisation zu sein, und sei es nur dabei, das Bier leerzutrinken.
&lt;p&gt;Darüber hinaus gibt es auch noch richtig gute Musik zu feiern, wie zum Beispiel Busy Signal, der den für mich besten Auftritt hingelegt hat:&lt;/p&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=7EKUCqT3n4A]&lt;/p&gt;
&lt;p&gt;Insgesamt war es mir auf den Live-Bühnen schon extrem viel Roots Reggae. Manchmal durchaus zuviel. Nächstes Jahr werde ich also noch mehr Zeit bei den Soundsystems verbringen. Denn nächstes Jahr ist gesetzt! Solch schöne Tage wie in Bersenbrück gehören einfach erlebt.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Crowdfunding für die C3S</title><link>https://flowfx.de/blog/crowdfunding-fur-die-c3s/</link><pubDate>Tue, 16 Jul 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/crowdfunding-fur-die-c3s/</guid><description>&lt;p&gt;Die hier &lt;a href="https://flowfx.de/?p=1582"&gt;schon einmal erwähnte&lt;/a&gt; C3S wird Realität! Seit Sonntag läuft das Crowdfunding für die Gründungsphase:
&lt;iframe src="http://player.vimeo.com/video/70236760" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/70236760"&gt;Crowdfunding Feature: “C3S :: Die faire GEMA-Alternative / The fair alternative in collecting societies.”&lt;/a&gt; from &lt;a href="http://vimeo.com/c3s"&gt;C3S&lt;/a&gt; on &lt;a href="https://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Wer auch nur einmal in seinem Leben über die GEMA gemeckert hat, sollte das Projekt unterstützen. Hier. Jetzt. Sofort!&lt;/p&gt;
&lt;iframe height="300" frameborder="0" width="200" scrolling="no" allowtransparency="true" style="height:300px;width:200px;" src="http://www.startnext.de/c3s/widget/?w=200&amp;amp;h=300&amp;amp;l=de"&gt;&lt;/iframe&gt;&lt;/p&gt;</description></item><item><title>Sichere Passwörter</title><link>https://flowfx.de/blog/sichere-passwoerter/</link><pubDate>Fri, 14 Jun 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sichere-passwoerter/</guid><description>&lt;p&gt;Aus aktuellem Anlass hier die Erinnerung, wie das mit den sicheren Passwörtern tatsächlich so ist.
&lt;p&gt;&lt;a href="http://xkcd.com/936/" title="Password Strength"&gt;&lt;img src="http://imgs.xkcd.com/comics/password_strength.png" alt="Passwortstärke via XKCD"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Drohung einer Abmahnung wegen diffamierendem Blogeintrag</title><link>https://flowfx.de/blog/drohung-einer-abmahnung-wegen-diffamierendem-blogeintrag/</link><pubDate>Wed, 12 Jun 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/drohung-einer-abmahnung-wegen-diffamierendem-blogeintrag/</guid><description>&lt;p&gt;Anfang November letzten Jahres habe ich auf dieser Seite einen Beitrag darüber geschrieben, wie eine Ludwigshafener New Rock Band einen ziemlich unglaubwürdigen Anstieg ihrer Facebook-Fans verzeichnete, und wie sie nicht auf meine diesbezüglichen Nachfragen reagierte.
&lt;p&gt;Sieben Monate später bekomme ich nun vom Management der Band, unter Androhung einer Abmahnung, &lt;a href="http://pastebin.com/5bCbC3T4"&gt;die Aufforderung, diesen Beitrag zu löschen&lt;/a&gt;. Eine abendliche Recherche führte zu einem Artikel bei t3n.de über &lt;a href="http://t3n.de/news/fankauf-diffamierungen-vermeidet-438939/"&gt;Fankauf-Diffamierungen&lt;/a&gt;. Dieser besagt, dass die Behauptung, jemand würde Facebook-Likes kaufen, tatsächlich nicht so unproblematisch ist, wie ich gedacht hatte, und ich im Zweifel vor Gericht meine Behauptungen beweisen müsste.&lt;/p&gt;
&lt;p&gt;Da sich das nach unnötig viel Arbeit für eine zugegebenermaßen kleine Sache anhört, &lt;del datetime="2013-06-14T10:00:40+00:00"&gt;werde ich&lt;/del&gt; habe ich &lt;a href="https://flowfx.de/?p=xxxx"&gt;den Beitrag&lt;/a&gt; wie gewünscht &lt;del datetime="2013-06-14T10:00:40+00:00"&gt;in den nächsten Tagen&lt;/del&gt; offline &lt;del datetime="2013-06-14T10:00:40+00:00"&gt;nehmen&lt;/del&gt; genommen. Irgendwelche gecachte Versionen werden eh weiter herumfliegen. Da kann ich dann nichts für.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>I Like Da Butty Man</title><link>https://flowfx.de/blog/i-like-da-butty-man/</link><pubDate>Tue, 14 May 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/i-like-da-butty-man/</guid><description>&lt;p&gt;Am 14.07. geben sich &lt;a href="https://alpha.app.net/flowfx/post/5269051/photo/1"&gt;LaBrassBanda beim ZMF&lt;/a&gt; die Ehre. Bis dahin bleibt mir YouTube. Zum Beispiel hiermit. Ab 5:18 wird es einfach brutal!
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=z9u4a3ItyBA]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Fundstück der Woche</title><link>https://flowfx.de/blog/fundstueck-der-woche/</link><pubDate>Tue, 30 Apr 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/fundstueck-der-woche/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2013/04/Freiburg-Marathon-Startnummer-1600.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/04/Freiburg-Marathon-Startnummer-1600-642x540.jpg" alt="Startnummer 923 vom Freiburg Marathon 2007" width="642" height="540" class="aligncenter size-large wp-image-1846" title="Man schrieb das Jahr 2007."&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vergleiche: &lt;a href="https://flowfx.de/?p=569"&gt;&lt;a href="https://flowfx.de/blog/569/freiburg-marathon-2007/"&gt;https://flowfx.de/blog/569/freiburg-marathon-2007/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>History repeating</title><link>https://flowfx.de/blog/history-repeating/</link><pubDate>Thu, 28 Mar 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/history-repeating/</guid><description>&lt;blockquote class="twitter-tweet" lang="de"&gt;&lt;p&gt;Suche Arbeit. Bin Physiker. Kann alles. Plz RT. &lt;a href="http://t.co/SaYLdCst" title="http://bit.ly/CVflowfx"&gt;bit.ly/CVflowfx&lt;/a&gt;&lt;/p&gt;— Florian Posdziech (@FlowFXx) &lt;a href="https://twitter.com/FlowFXx/status/117235531968036865"&gt;23. September 2011&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>Die Felsen - Blut und Bier auf dem Klavier</title><link>https://flowfx.de/blog/die-felsen-blut-und-bier-auf-dem-klavier/</link><pubDate>Wed, 06 Mar 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-blut-und-bier-auf-dem-klavier/</guid><description>&lt;p&gt;Ein neues, tolles Video der &lt;a href="http://www.diefelsen.de"&gt;Felsen&lt;/a&gt;, diesmal erschaffen von Oliver Geibel.
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=g1UquYqwi7c]&lt;/p&gt;
&lt;p&gt;Und direkt auch nochmal live. Viel Spaß!&lt;/p&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=0qGWWirdoZs]&lt;/p&gt;
&lt;p&gt;Zu Kaufen gibt&amp;rsquo;s das ganze &lt;a href="http://kaufladen.diefelsen.de"&gt;auf Bandcamp&lt;/a&gt;. Mehr Infos auf &lt;a href="http://www.diefelsen.de"&gt;&lt;a href="https://www.diefelsen.de"&gt;www.diefelsen.de&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Die Felsen - Schmetterling (live beim Rockbusterfinale 2012)</title><link>https://flowfx.de/blog/die-felsen-schmetterling-live-beim-rockbusterfinale-2012/</link><pubDate>Wed, 06 Mar 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-schmetterling-live-beim-rockbusterfinale-2012/</guid><description>&lt;p&gt;Diese Aufnahme vom &lt;a href="http://www.rockbuster.de/article.php?cat=1&amp;amp;id=496"&gt;Rockbusterfinale 2012&lt;/a&gt; kann man sich gar nicht oft genug ansehen.
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=9FO75ddz-aI]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Was ist das Argument, nicht WhatsApp zu nehmen?</title><link>https://flowfx.de/blog/was-ist-das-argument-nicht-whatsapp-zu-nehmen/</link><pubDate>Tue, 05 Mar 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-ist-das-argument-nicht-whatsapp-zu-nehmen/</guid><description>&lt;blockquote&gt;
 ist so schön einfach und bequem und da sind doch auch alle anderen!1!!1
&lt;/blockquote&gt;
&lt;p&gt;Das fragte mich &lt;a href="https://alpha.app.net/alandizo"&gt;Alandizo&lt;/a&gt; in einer privaten Diskussion über den Social-Web-Infrastruktur-Dienst &lt;a href="https://app.net/"&gt;App.net&lt;/a&gt;. Ich persönlich sehe nämlich ein riesiges Potenzial von App.net im Instant Messaging Bereich, den momentan WhatsApp ziemlich gut bedient.&lt;/p&gt;
&lt;p&gt;Meine Antworten auf die Frage waren folgende.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;WhatsApp ist böse, siehe &lt;a href="http://www.heise.de/newsticker/meldung/Niederlaendische-und-kanadische-Datenschuetzer-mit-WhatsApp-noch-unzufrieden-1794024.html"&gt;hier&lt;/a&gt; und &lt;a href="http://www.heise.de/security/meldung/Spammer-entdecken-WhatsApp-1790526.html"&gt;hier&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;WhatsApp gibt es nur auf Smartfons. Mit den richtigen Clients kann man mit App.net irgendwann Chats aber auf jeder Plattform führen, so wie es der Facebook Messenger heute schon kann. Aber Facebook mag und hat ja nicht jeder.&lt;/li&gt;
&lt;li&gt;Die Infrastruktur von App.net wird um Längen zuverlässiger und performanter sein als die der meisten anderen Plattformen.&lt;/li&gt;
&lt;li&gt;Es wird eine Auswahl unterschiedlicher Clients für jeden erdenklichen Zweck geben. Konkurrenz ist bekanntlich gut und wird die Qualität der Clients in die Höhe schrauben.&lt;/li&gt;
&lt;li&gt;Das Geschäftsmodell von App.net ist klar: Die Nutzer zahlen mit harten Dollar. Gleichzeitig &lt;a href="https://account.app.net/legal/privacy/"&gt;verspricht App.net&lt;/a&gt;, die gespeicherten Daten nicht für Werbekunden oder ähnliches bekanntes zu nutzen.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Den Anfang auf dem Weg zu vielen vielen Chatclients machte diese Woche &lt;a href="http://www.aptgetupdate.de/2013/03/04/project-amy-app-net-private-messages-in-die-os-x-nachrichten-app-integrieren/"&gt;Project Amy&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Quadrokopter-Akrobatik</title><link>https://flowfx.de/blog/quadrokopter-akrobatik/</link><pubDate>Fri, 22 Feb 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/quadrokopter-akrobatik/</guid><description>&lt;p&gt;Ich hab's echt nicht so mit Fliegern und Robotern und dem Kram. Aber das hier haut mich um.
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=pp89tTDxXuI]&lt;/p&gt;
&lt;p&gt;via &lt;a href="https://twitter.com/Teddy1000Tod/status/304926276655927297"&gt;@Teddy1000Tod&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Spaß mit Zahlen</title><link>https://flowfx.de/blog/spas-mit-zahlen/</link><pubDate>Wed, 13 Feb 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/spas-mit-zahlen/</guid><description>&lt;blockquote class="twitter-tweet" lang="de"&gt;&lt;p&gt;Protipp: Wenn ihr ein sicheres Passwort wollt, nehmt π. Rückwärts.&lt;/p&gt;— Matthias Bauer (@moeffju) &lt;a href="https://twitter.com/moeffju/status/301696945364275200"&gt;13. Februar 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>Wie geht das eigentlich mit diesem git pull?</title><link>https://flowfx.de/blog/wie-geht-das-eigentlich-mit-diesem-git-pull/</link><pubDate>Sat, 02 Feb 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wie-geht-das-eigentlich-mit-diesem-git-pull/</guid><description>&lt;p&gt;fragt der geschätzte &lt;a href="http://www.alohastone.com/"&gt;aloha&lt;/a&gt; auf &lt;a href="https://twitter.com/alohastone/status/297477333802160129"&gt;Twitter&lt;/a&gt;. Hintergrund ist das gerade von &lt;a href="https://twitter.com/tiefpunkt"&gt;Tiefpunkt&lt;/a&gt; entwickelte Wordpress-Plugin &lt;a href="https://github.com/meintopf/meintopf"&gt;mEintopf&lt;/a&gt;, dessen Ziel eine selbst gehostete &lt;a href="http://www.soup.io"&gt;Suppe&lt;/a&gt; ist. Was genau das sein soll erklärt Tiefpunkt selbst &lt;a href="http://tech.tiefpunkt.com/2013/01/your-own-soup-io-an-idea/"&gt;hier in seinem Tech-Blog&lt;/a&gt;.
&lt;p&gt;Zurück zur Frage:&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Wie geht das eigentlich mit diesem git pull?&lt;/h3&gt;
&lt;p&gt;Für die Installation des mEintopf-Plugins logge man sich per ssh auf seinem Webserver ein, navigiere in das Plugin-Verzeichnis seiner Wordpress-Installation und erfreue sich an der ersten git-Magie.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;~$ cd wordpress/wp-content/plugins/
~/wordpress/wp-content/plugins$ git pull https://github.com/meintopf/meintopf.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Um das Plugin zu aktualisieren, was dank Tiefpunkts rasender &lt;a href="https://twitter.com/tiefpunkt/status/297449693372358656"&gt;Entwicklungsgeschwindigkeit&lt;/a&gt; sehr oft nötig (möglich?) ist, reicht nun ein einfaches git pull im Plugin-Verzeichnis:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; ~/wordpress/wp-content/plugins/meintopf$ git pull origin master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ein Deaktivieren und Wiederaktivieren des Plugins hilft normalerweise. Das war&amp;rsquo;s dann aber auch schon.&lt;/p&gt;</description></item><item><title>12 Monate LastFM</title><link>https://flowfx.de/blog/12-monate-lastfm/</link><pubDate>Tue, 29 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/12-monate-lastfm/</guid><description>&lt;img src="http://fxdteam.com/lastcloud/i.php?i=flowfxx-_-12month-_-black-_-" alt="12 Monate LastFM - Schlagwortwolke" class="aligncenter"&gt;
&lt;p&gt;via &lt;a href="https://alpha.app.net/alandizo"&gt;Alandizo&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Skeech EP "Studio Fakes" veröffentlicht</title><link>https://flowfx.de/blog/skeech-ep-studio-fakes-veroeffentlicht/</link><pubDate>Sun, 27 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/skeech-ep-studio-fakes-veroeffentlicht/</guid><description>&lt;p&gt;Die Anzahl der Titel auf Spotify, auf denen ich mit meiner Posaune zu hören bin, hat sich letzte Woche verdreifacht. Die EP meiner Freunde von &lt;a href="http://skeech.de"&gt;Skeech&lt;/a&gt; hat sich via &lt;a href="https://flowfx.de/?p=1458"&gt;Zimbalam&lt;/a&gt; in die Musikläden dieser Welt verbreitet (&lt;a href="http://www.amazon.de/Studio-Fakes/dp/B00B5JDQLK/"&gt;Amazon-Link&lt;/a&gt;).
&lt;p&gt;Selbstverständlich kann man die Songs auch via Soundcloud streamen. Ich hatte die Ehre, mich auf den Tracks &lt;a href="https://soundcloud.com/skeechband/esterhey"&gt;Esterhey&lt;/a&gt; und &lt;a href="https://soundcloud.com/skeechband/pauline"&gt;Pauline&lt;/a&gt; verewigen zu dürfen.&lt;/p&gt;
&lt;iframe width="100%" height="350" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=http%3A%2F%2Fapi.soundcloud.com%2Fplaylists%2F2846487&amp;amp;color=ff6600&amp;amp;auto_play=false&amp;amp;show_artwork=true"&gt;&lt;/iframe&gt;&lt;/p&gt;</description></item><item><title>Post aus Bersenbrück o/</title><link>https://flowfx.de/blog/post-aus-bersenbruck/</link><pubDate>Wed, 23 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/post-aus-bersenbruck/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2013/01/2013-01-23-18.43.541.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/2013-01-23-18.43.541-540x540.jpg" alt="Eintrittskarte zum Reggae Jam am 2.-4. August 2013 in Bersenbrück" width="540" height="540" class="aligncenter size-large wp-image-1712"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Nichteuklidische Geometrie</title><link>https://flowfx.de/blog/nichteuklidische-geometrie/</link><pubDate>Sun, 13 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/nichteuklidische-geometrie/</guid><description>&lt;p&gt;Oder: Wie man ein Dreieck mit drei rechten Winkeln zeichnet.
&lt;p&gt;&lt;a href="http://www.kraftfuttermischwerk.de/blogg/wp-content/uploads2/2013/01/triagles0.gif"&gt;&lt;img src="http://www.kraftfuttermischwerk.de/blogg/wp-content/uploads2/2013/01/triagles0.gif" width="500" height="375" alt="Animiertes GIF, in dem auf einer nichteuklidischen Fläch ein Dreieck gezeichnet wird, das drei rechtwinklige Ecken aufweist." class="aligncenter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Geklaut beim &lt;a href="http://www.kraftfuttermischwerk.de/blogg/?p=47350"&gt;Kraftfuttermischwerk&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Die Kästen, die die Welt bedeuten</title><link>https://flowfx.de/blog/die-kaesten-die-die-welt-bedeuten/</link><pubDate>Sat, 12 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-kaesten-die-die-welt-bedeuten/</guid><description>&lt;p&gt;&lt;a href="http://instagram.com/p/UXSTtjgV5i/"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/3c43d0245c5011e2aa5e22000a1f96ec_7.jpg" alt='Instagram-Foto der zur Treppe umfunktionierten ASTRA-Kästen im "Nummer 6" in der Jungbuschstraße 6, Mannheim' width="612" height="612" class="aligncenter size-full wp-image-1658"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Gefunden im &amp;ldquo;Nummer 6&amp;rdquo; in der Jungbuschstraße in Mannheim.&lt;/p&gt;</description></item><item><title>The ABCs of Business</title><link>https://flowfx.de/blog/the-abcs-of-business/</link><pubDate>Fri, 11 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-abcs-of-business/</guid><description>&lt;p&gt;Dürfte was dran sein.
&lt;p&gt;&lt;a href="https://alpha.app.net/dalton/post/2391806"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/011-always-be-communicating.jpg" alt="@dalton: The ABCs of business: A - Always / B - Be / C - Communicating" width="728" height="305" class="aligncenter size-full wp-image-1651"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Irgendwann trage ich das mal beim Kunden</title><link>https://flowfx.de/blog/irgendwann-trage-ich-das-mal-beim-kunden/</link><pubDate>Wed, 09 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/irgendwann-trage-ich-das-mal-beim-kunden/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2013/01/5fc023805a8a11e29df022000a1fb07c_7.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/5fc023805a8a11e29df022000a1fb07c_7.jpg" alt="T-Shirt: I will NOT fix your computer!" width="612" height="612" class="aligncenter size-full wp-image-1635"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sympathische Künstler</title><link>https://flowfx.de/blog/sympathische-kunstler/</link><pubDate>Thu, 03 Jan 2013 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sympathische-kunstler/</guid><description>&lt;p&gt;Könnte was dran sein.
&lt;p&gt;&lt;a href="https://twitter.com/ronny_ramone/status/286608321270669312"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/sympathie.png" alt="@ronny_ramone
makes it nearly likable when an artist DOESN'T have a facebook site." width="565" height="260" class="aligncenter size-full wp-image-1605"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>GEMA haccen</title><link>https://flowfx.de/blog/gema-haccen/</link><pubDate>Sat, 29 Dec 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/gema-haccen/</guid><description>&lt;p&gt;Seit heute hat sich der &lt;a href="https://events.ccc.de/congress/2012/wiki/Main_Page"&gt;Congress&lt;/a&gt; endgültig für mich gelohnt. Nachdem ich gestern &lt;a href="http://events.ccc.de/congress/2012/Fahrplan/events/5401.en.html"&gt;ihrem Vortrag&lt;/a&gt; sehr angetan lauschte, habe ich mich heute mit m.eik und Christoph von der &lt;a href="http://c3s.cc"&gt;C3S&lt;/a&gt; etwas ausführlicher über ihr Projekt unterhalten. Sehr erbaulich!
&lt;p&gt;Worum geht es? Die &lt;a href="http://www.gema.de"&gt;GEMA&lt;/a&gt; ist doof. Sie ist intransparent, undemokratisch und inkompatibel mit &lt;a href="http://de.wikipedia.org/wiki/Creative_Commons#Die_sechs_aktuellen_Lizenzen"&gt;Creative Commons Lizenzen&lt;/a&gt;. Gesetzliche Änderungen am Status Quo wären extrem schwer und langwierig, eine Reform von Innen strukturell fast unmöglich. Außerdem behielte die GEMA weiterhin ihre Monopolstellung.&lt;/p&gt;
&lt;p&gt;Die C3S geht einen dritten Weg. Ihr Ziel ist die Schaffung einer neuen Verwertungsgesellschaft für Musik, als Konkurrenz zur GEMA. Diese neue Organisation würde allein durch ihre Existenz die &lt;a href="http://de.wikipedia.org/wiki/GEMA-Vermutung"&gt;GEMA-Vermutung&lt;/a&gt; deutlich einschränken.&lt;/p&gt;
&lt;p&gt;Die Vorteile für die Künstler werden immens sein:&lt;/p&gt;
&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Sie haben eine Alternative zur GEMA, um die Verwertung ihrer Werke durchzusetzen&lt;/li&gt;
&lt;li&gt;C3S-Lizensierung wird werkbasiert stattfinden, anstatt vollumfänglich alle jemals vom Künstler geschriebene Lieder, wie bei der GEMA&lt;/li&gt;
&lt;li&gt;Die Ausschüttung wird transparent und nachvollziehbar sein&lt;/li&gt;
&lt;li&gt;Jedes Mitglied der C3S wird das gleiche Stimmgewicht haben&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Die technische Umsetzung soll alle modernen Möglichkeiten ausnutzen und so ein System schaffen, das durch Arbeitserleichterung auch für Veranstalter, Radios, DJs etc einen Mehrwert schafft.&lt;/p&gt;
&lt;p&gt;Stellt euch vor, ihr loggt euch mit eurem Künstlerkonto auf einer Webseite ein und seht auf einen Blick, welche eure Lieder wann und wo aufgeführt wurden und was ihr dafür bekommt! Und euer Freund der Veranstalter sieht auf derselben Plattform alles was er vorher über ein simples Webinterface lizensiert hat.&lt;/p&gt;
&lt;p&gt;Mal gucken, ob ich nicht auch etwas zum Erfolg dieser Unternehmung beitragen werden kann. Zunächst mal hole ich jetzt aber meinen Hoodie ab, um damit in Mannheim Werbung zu machen.&lt;/p&gt;
&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;Hier ist der oben erwähnte Vortrag in voller Länge zu sehen:&lt;/p&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=eOmUvUcH5Wk]&lt;/p&gt;</description></item><item><title>Tschunk-Slush is best Slush</title><link>https://flowfx.de/blog/tschunk-slush-is-best-slush/</link><pubDate>Sat, 29 Dec 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/tschunk-slush-is-best-slush/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/12/5f9c6f2451e011e2954322000a9f134e_7.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/12/5f9c6f2451e011e2954322000a9f134e_7-540x540.jpg" alt="Slush-Maschinen des RaumZeitLabors produzieren Tschunk-artiges Gesöff" width="540" height="540" class="aligncenter size-large wp-image-1584"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nicht nur hat das &lt;a href="http://www.raumzeitlabor.de"&gt;RaumZeitLabor&lt;/a&gt; Slush-, Softeis-, Zuckerwatte- und Popcornmaschinen mit nach Hamburg gebracht. Nein, es wird auch noch das einzig richtige damit gemacht: Alkoholische Getränke in der Verkleidung von Süßigkeiten produzieren. Yummy!&lt;/p&gt;</description></item><item><title>Kunst und Arbeit</title><link>https://flowfx.de/blog/kunst-und-arbeit/</link><pubDate>Mon, 24 Dec 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/kunst-und-arbeit/</guid><description>&lt;blockquote class="twitter-tweet" lang="de"&gt;&lt;p&gt;&lt;a href="https://twitter.com/search/%23Kunst"&gt;#Kunst&lt;/a&gt; ist schön, macht aber viel &lt;a href="https://twitter.com/search/%23Arbeit"&gt;#Arbeit&lt;/a&gt;.&lt;/p&gt;— Uwe Kaa (@uwekaa) &lt;a href="https://twitter.com/uwekaa/status/277031745256308737" data-datetime="2012-12-07T12:48:09+00:00"&gt;Dezember 7, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</description></item><item><title>Das originale Originalrezept</title><link>https://flowfx.de/blog/das-originale-originalrezept/</link><pubDate>Thu, 29 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/das-originale-originalrezept/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/wpid-DSCN1533.jpg"&gt;&lt;img class="aligncenter" alt="image" src="https://flowfx.de/wp-content/uploads/2012/11/wpid-DSCN1533.jpg"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Post von Uwe Kaa</title><link>https://flowfx.de/blog/post-von-uwe-kaa/</link><pubDate>Sat, 24 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/post-von-uwe-kaa/</guid><description>&lt;p&gt;Das hat einer das mit dem Social Media Kram geblickt!
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/wpid-DSCN1472.jpg"&gt;&lt;img class="aligncenter" alt="image" src="https://flowfx.de/wp-content/uploads/2012/11/wpid-DSCN1472.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(In dem Umschlag befand sich eine persönliche Autogrammkarte, die Uwe mir geschickt hat, weil ich in seinem Shop einen Tag zu früh bestellt hatte, um in den Genuss seiner Rabattaktion zu kommen.)&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Two Shoes</title><link>https://flowfx.de/blog/two-shoes/</link><pubDate>Wed, 14 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/two-shoes/</guid><description>&lt;blockquote&gt;I hope you all maintain your interest in this kind of music, because otherwise we'd be jobless, playing at four o'clock in the morning. Like we used to be.&lt;/blockquote&gt;
&lt;br&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=wlAk-1bHDIo]&lt;/p&gt;</description></item><item><title>Unleash the Demon</title><link>https://flowfx.de/blog/unleash-the-demon/</link><pubDate>Wed, 14 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/unleash-the-demon/</guid><description>&lt;p&gt;Das Beste an den Jungs ist, dass sie supernette Typen sind.
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=LfhpbtGnbms]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Rub-A-Dub Market Riddim Selection</title><link>https://flowfx.de/blog/rub-a-dub-market-riddim-selection/</link><pubDate>Sun, 11 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/rub-a-dub-market-riddim-selection/</guid><description>&lt;p&gt;Was es hiermit auf sich hat, lest ihr am besten im &lt;a href="http://uwekaa.blogspot.de/2012/11/version-excursion-rub-dub-market-riddim.html"&gt;Blog von Uwe Kaa&lt;/a&gt;. Es ist jedenfalls ein ziemliches Brett.
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=cpPnWuRmfJk]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Vortrag im RaumZeitLabor: CERN, LHC, ATLAS</title><link>https://flowfx.de/blog/vortrag-im-raumzeitlabor-cern-lhc-atlas/</link><pubDate>Sun, 11 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/vortrag-im-raumzeitlabor-cern-lhc-atlas/</guid><description>&lt;p&gt;Anfang Oktober hat mich meine gute Freundin und ehemalige Kommillitonin Simone in Mannheim besucht und direkt nach ihrer Ankunft einen Vortrag im &lt;a href="http://www.raumzeitlabor.de"&gt;RaumZeitLabor&lt;/a&gt; gehalten. Ihre Ausführungen über das CERN, den LHC und das ATLAS-Experiment fanden bei den technisch gleichermaßen versierten wie interessierten Bewohnern des RZL großen Anklang. Ich selbst war froh, zumindest die meisten Fachbegriffe schon einmal gehört zu haben.
&lt;p&gt;Wenn ihr mal eine Stunde Zeit habt, schaut&amp;rsquo;s euch an. Es lohnt sich!&lt;/p&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=1mKMMkCClSs]&lt;/p&gt;
&lt;p&gt;Nach getaner Arbeit:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/DSCN1250-1.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/11/DSCN1250-1-337x450.jpg" alt="" title="Simone nach ihrem Vortrag im RaumZeitLabor" width="337" height="450" class="aligncenter size-medium wp-image-1499"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Wie man seine Musik zu iTunes und Co bekommt</title><link>https://flowfx.de/blog/wie-man-das-album-seiner-band-zu-itunes-und-co-bekommt/</link><pubDate>Thu, 08 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wie-man-das-album-seiner-band-zu-itunes-und-co-bekommt/</guid><description>&lt;p&gt;Eines der ersten Projekte, die wir angegangen sind, als ich anfing, mit den &lt;a href="http://www.diefelsen.de"&gt;Felsen&lt;/a&gt; zusammen zu arbeiten, war die Frage: Wie bekommen wir Felsenmusik zu iTunes &amp;amp; Co? Die Antwort ist heute die gleich wie vor zwei Jahren und heißt
&lt;/p&gt;&lt;h3&gt;Zimbalam&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.zimbalam.de/"&gt;Zimbalam&lt;/a&gt; (&lt;a href="http://en.wikipedia.org/wiki/Zimbalam"&gt;Wikipediaseite&lt;/a&gt;) ist ein Dienstleister, der die Musik jeder daran interessierten Band auf der ganzen Welt und in mehr Onlineshops verfügbar macht, als ich überhaupt kenne.&lt;/p&gt;
&lt;p&gt;Die Felsen sind momentan beispielsweise bei folgenden Diensten gelistet, wie gesagt: weltweit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://itunes.apple.com/us/album/die-felsen/id428143486"&gt;iTunes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.musicload.de/die-felsen/die-felsen/musik/album/9832209_2"&gt;Music Load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Ovi&lt;/li&gt;
&lt;li&gt;24/7 Musicshop&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.emusic.com/listen/#/album/die-felsen/die-felsen/12476980/:"&gt;Emusic&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mndigital.com/content-experience/music_content/albums/51803137/Die_Felsen/Die_Felsen/"&gt;Music Net / Medianet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.amazon.de/Die-Felsen/dp/B004TMVUCM/ref=sr_shvl_album_1?ie=UTF8&amp;amp;qid=1352394861&amp;amp;sr=301-1"&gt;Amazon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Spotify&lt;/li&gt;
&lt;li&gt;Songrila&lt;/li&gt;
&lt;li&gt;Arvato Mobile&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.simfy.de/artists/839400-Die-Felsen/albums/896923-Die-Felsen"&gt;Simfy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Wie funktioniert Zimbalam?&lt;/h3&gt;
&lt;p&gt;Die Arbeit, ein Album über Zimbalam zu veröffentlichen, beschränkt sich auf das übliche:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Lade die Master-WAV-Dateien hoch&lt;/li&gt;
&lt;li&gt;Lade das Albumcover im Format 1440x1440 Pixel hoch&lt;/li&gt;
&lt;li&gt;Ergänze alle Albuminformationen&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Der Prozess ist wirklich nicht kompliziert. Danach dauert es ein paar Tage bis Wochen, bis das Album in den Onlineshops erscheint. Bei den wichtigsten Plattformen wie iTunes und Spotify war dies in der Regel aber nach spätestens 4 Tagen erfolgt.&lt;/p&gt;
&lt;p&gt;Den gewünschten Verkaufspreis jeder Veröffentlichung bestimmt man selbst, wobei der genaue Preis dann, abhängig von den Standardpreisen der Plattformen, davon abweichen kann.&lt;/p&gt;
&lt;p&gt;Der Vertrag mit Zimbalam ist nicht exklusiv. Das heißt, man kann seine Alben über andere Wege weiter uneingeschränkt selbst verkaufen, beispielsweise über &lt;a href="http://kaufladen.diefelsen.de/"&gt;BandCamp&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Was kostet Zimbalam?&lt;/h3&gt;
&lt;p&gt;Für ein volles Album werden einmalig 35€ fällig. Vom Umsatz selbst behält Zimbalam nochmal 10% ein. Das war&amp;rsquo;s.&lt;/p&gt;
&lt;p&gt;Kurzes Rechenbeispiel:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ein Fan bezahlt auf iTunes 9,99€ für euer Album&lt;/li&gt;
&lt;li&gt;Apple behält die üblichen 30% ein, bleiben noch 9,99 x 0,7 = 6,99€&lt;/li&gt;
&lt;li&gt;Zimbalam bekommt nochmal 10%, bleiben am Ende also 6,99€ x 0,9 = 6,29€ übrig&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Da es für eine einzelne, unabhängige Band meines Wissens nach keine Möglichkeit gibt, die Läden selbst zu befüllen, erübrigt sich hier auch die Frage nach der Gewinnschwelle, dem break-even point.&lt;/p&gt;
&lt;h3&gt;Erfahrungen&lt;/h3&gt;
&lt;p&gt;Nach mittlerweile zwei EPs und zwei Alben, die wir über Zimbalam online veröffentlicht haben, kann ich nur Gutes über den Dienst berichten. Wir hatten nie irgendwelche Probleme, und der Support antwortet ebenfalls auf Fragen. Fragt mich nicht nach Konkurrenten, ich hatte bisher keinen Grund, mich danach umzusehen.&lt;/p&gt;
&lt;h3&gt;Noch Fragen?&lt;/h3&gt;
&lt;p&gt;Dies soll keineswegs als umfassende Anleitung für Zimbalam dienen, sondern allein als Anregung, sich den Dienst mal näher anzuschauen. Alle Detailfragen werden ausführlich in den FAQ beantwortet:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.zimbalam.de/faq.php"&gt;&lt;a href="http://www.zimbalam.de/faq.php"&gt;http://www.zimbalam.de/faq.php&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Solltet ihr ebenfalls Erfahrungen mit Zimbalam machen, gute wie schlechte, oder sogar etwas noch besseres kennen, so würde ich diese sehr gerne hören!&lt;/p&gt;</description></item><item><title>Glassboard für nicht Englisch sprechende</title><link>https://flowfx.de/blog/glassboard-fur-nicht-englisch-sprechende/</link><pubDate>Sun, 04 Nov 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/glassboard-fur-nicht-englisch-sprechende/</guid><description>&lt;p&gt;&lt;a href="http://www.glassboard.com/" title="Über Glassboard"&gt;Glassboard&lt;/a&gt; ist eine relativ neue Kommunikationsplattform, die private Nachrichtenbretter für kleine Gruppen bereitstellt. Die wichtigsten Eigenschaften von Glassboard ist das sehr einfache Userinterface sowie der Grundsatz der Privatheit der Inhalte.&lt;/p&gt;
&lt;p&gt;Inspiriert von &lt;a href="http://glassboard.com/blog/2012/01/08/using-glassboard-with-families/" title="Glassboard für die Familie"&gt;diesem Artikel&lt;/a&gt; ist mein erster, und soweit ziemlich erfolgreicher Anwendungsfall, ein Brett für meine Familie. Um auch den nicht Englisch sprechenden Familienmitgliedern einen einfachen Einstieg zu ermöglichen, schreibe ich hier eine kleine Anleitung, wie man sich anmeldet und die ganze Sache benutzt.&lt;/p&gt;
&lt;h2&gt;Anmeldung zu Glassboard&lt;/h2&gt;
&lt;p&gt;Am einfachsten lädt man Leute, die noch kein Glassboard-Konto haben, über einen Einladungslink vom Besitzer des Bretts direkt ein. Der sieht zum Beispiel so aus:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;https://app.glassboard.com/web/invitation/code/nullachtfuffzehn
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nach Klicken dieses Links erscheint eine Meldung, die erklärt, zu welchem Brett man eingeladen wurde und dass man ja ein neues Konto anlegen könnte. Das sollte man.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Join-Board.png"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Join-Board-600x302.png" alt="" title="Einladung zu einem Glassboard" width="770" class="aligncenter size-medium wp-image-1373"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Für ein Glassboard-Konto braucht es nicht mehr als eine E-Mail-Adresse, Vorname, Nachname und ein Passwort.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Anmeldung.png"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Anmeldung.png" alt="" title="Anmeldung zu Glassboard" width="770" class="aligncenter size-full wp-image-1374"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nach dem Klick auf &amp;ldquo;Sign Up&amp;rdquo; wird man willkommen geheißen. Ein Klick auf &amp;ldquo;on the web&amp;rdquo; leitet schließlich in die tatsächlich Anwendung.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Joined-Board.png"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-Joined-Board-600x467.png" alt="" title="Glassboard zum ersten Mal betreten" width="770" class="aligncenter size-medium wp-image-1375"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Achtung&lt;/strong&gt;: Nach der Anmeldung bekommt man eine E-Mail zugeschickt, in der man seine E-Mail-Adresse mit einem Klick auf Link bestätigen muss. Erst danach ist das Konto fertig eingerichtet.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Verify-your-Glassboard-account.png"&gt;&amp;lt;img src=&amp;ldquo;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Verify-your-Glassboard-account-600x410.png%22"&gt;https://flowfx.de/wp-content/uploads/2012/11/Verify-your-Glassboard-account-600x410.png&amp;quot;&lt;/a&gt; alt=&amp;rdquo;&amp;quot; title=&amp;ldquo;Verify your Glassboard account&amp;rdquo; width=&amp;ldquo;770 class=&amp;ldquo;aligncenter size-large wp-image-1385&amp;rdquo; /&amp;gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Glassboard benutzen&lt;/h2&gt;
&lt;p&gt;Die wichtigsten, und einzigen, Funktionen von Glassboard sind&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eine Nachricht schreiben und oder ein Bild hochladen&lt;/li&gt;
&lt;li&gt;Eine Nachricht oder ein Bild von anderen kommentieren&lt;/li&gt;
&lt;li&gt;Der Stern/Gefällt-mir-Knopf/Like-Button&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/11/Glassboard.png"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/11/Glassboard-600x336.png" alt="" title="HIER KLICKEN UM DAS BILD ZU VERGRÖßERN! - Wichtigste Glassboardfunktionen" width="770" class="aligncenter size-medium wp-image-1376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Nachrichten schreiben&lt;/h4&gt;
&lt;p&gt;Um eine Nachricht zu schreiben wählt man am besten zunächst links in der Seitenleiste das Brett aus, in dem die Nachricht erscheinen soll, z.B. &lt;strong&gt;Familie Posdziech&lt;/strong&gt;. Dann klickt man oben in das Feld in dem &lt;strong&gt;Write a message in Familie Posdziech&amp;hellip;&lt;/strong&gt; steht und schreibt seinen Text hinein.&lt;/p&gt;
&lt;p&gt;Mit einem Klick auf die Kamera bzw. die Heftzwecke links unter diesem Kasten kann man ein Bild von seiner Festplatte auswählen, das beim Absenden der Nachricht hochgeladen wird.&lt;/p&gt;
&lt;p&gt;Gesendet wird die Nachricht über den Knopf &lt;strong&gt;Send&lt;/strong&gt; rechts unter dem Nachrichtenkasten.&lt;/p&gt;
&lt;h4&gt;Nachricht oder Bild kommentieren&lt;/h4&gt;
&lt;p&gt;Um eine Nachricht oder ein Bild zu kommentieren, klickt man unterhalb der Nachricht in das Feld mit dem Text &lt;strong&gt;Write a comment&amp;hellip;&lt;/strong&gt;. Auch hier kann man wieder ein Bild hochladen und schickt den Kommentar rechts mit &lt;strong&gt;Send&lt;/strong&gt; ab.&lt;/p&gt;
&lt;h4&gt;Alle Kommentare unter einem Eintrag anzeigen&lt;/h4&gt;
&lt;p&gt;Unter Nachrichten mit vielen Kommentaren erscheint ein Link mit dem Text &lt;strong&gt;Show all 42 comments&lt;/strong&gt;, auf den man klicken muss, um alle Kommentare zu sehen. Dies sorgt bei viel kommentierten Beiträgen für Übersichtlichkeit.&lt;/p&gt;
&lt;h4&gt;Einen Beitrag für toll befinden&lt;/h4&gt;
&lt;p&gt;Für mich ist Facebooks &lt;strong&gt;Like Button&lt;/strong&gt; weiterhin eine der genialsten Erfindungen der letzten Jahre. Auch Glassboard kommt nicht ohne ihn aus. Wenn einem ein Beitrag oder ein Bild gefällt, drückt man also auf den Stern darunter und drückt so auf denkbar einfache Weise seine Begeisterung aus.&lt;/p&gt;
&lt;h2&gt;Profilfoto ändern&lt;/h2&gt;
&lt;p&gt;Damit nicht alle Mitglieder des Bretts das gleiche langweilige Standardprofilbild haben, sollte man seines ändern. Dazu klickt man rechts oben auf seinen Namen und dann auf &lt;strong&gt;Profile&lt;/strong&gt;. Über &lt;strong&gt;Change Photo&lt;/strong&gt; kann man sehr einfach ein Profilbild hochladen. Danach kann es einige Minuten dauern, bis das Bild auch in den Brettern sichtbar wird.&lt;/p&gt;
&lt;h2&gt;Erste Aufgabe&lt;/h2&gt;
&lt;p&gt;Als letztes eine Bitte an die neuen Mitglieder meines Familienbretts: Ladet ein Foto der letzten Familienfeier als Beitrag hoch! :D&lt;/p&gt;</description></item><item><title>Morgens auf dem Weg zur Arbeit</title><link>https://flowfx.de/blog/morgens-auf-dem-weg-zur-arbeit/</link><pubDate>Sat, 20 Oct 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/morgens-auf-dem-weg-zur-arbeit/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2013/01/DSCN1314.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2013/01/DSCN1314-720x540.jpg" alt="Schnappschuss vom Sonnenaufgang am Neckar auf dem Weg zur Arbeit" width="720" height="540" class="aligncenter size-large wp-image-1668"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Was auf meiner letzten Radtour fehlte</title><link>https://flowfx.de/blog/was-auf-meiner-letzten-radtour-fehlte/</link><pubDate>Thu, 11 Oct 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/was-auf-meiner-letzten-radtour-fehlte/</guid><description>&lt;p&gt;Auf meiner sommerlichen Radtour durch Österreich und die Schweiz hatte ich eigentlich &lt;a href="https://flowfx.de/?p=1193"&gt;alles dabei&lt;/a&gt;. Eigentlich deshalb, weil ich auf der nächsten ähnlichen Tour nur zwei Dinge mehr mitnehmen würde.
&lt;/p&gt;&lt;h3&gt;Kocher&lt;/h3&gt;
&lt;p&gt;Während meiner Woche in der Schweiz habe ich mich weitesgehend von Brot, Käse und Wurst ernährt. Dazu das gelegentliche Bier und eine Tüte Chips. Warmes Essen war ohne die Möglichkeit, selbst zu kochen, nicht drin. Je nach Preisniveau des bereisten Landes werde ich also wieder meinen Benzinkocher und mein Edelstahlkochgeschirr mitnehmen, das mir &lt;a href="https://flowfx.de/?page_id=809"&gt;in Norwegen&lt;/a&gt; unschätzbare Dienste geleistet hat.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/10/photo-5.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/10/photo-5-392x510.jpg" alt="MSR Whisperlite, MSR Kochgeschirr und Norwegen" title="Benzinkocher in Norwegen" wheight="600" class="aligncenter size-medium wp-image-1263"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;WLAN-Gerät&lt;/h3&gt;
&lt;p&gt;In jedem Hostel, jeder Jugendherberge und sogar bald jedem Campingplatz gibt es WLAN, meist sogar kostenlos. Das war mir vor meiner Reise nicht bewusst, und so habe ich viel Zeit und Geld dafür aufgewendet, Internetcafes zu finden und dann auch noch zu bezahlen. Von Deutschlands Großstädten bin ich eigentlich gewohnt, an jeder Ecke irgendwo ein Internetcafe zu sehen. Nicht so außerhalb unseres Landes. Oder meine Erfahrungen in Mannheim sind einfach überdurchschnittlich.&lt;/p&gt;
&lt;p&gt;Auf den nächsten Trip werde ich jedenfalls ein WLAN-fähiges Gerät, aller Voraussicht nach mein Nexus 7, mitnehmen. Die Fotos übertrage ich mit einer &lt;a href="http://www.eye.fi/"&gt;Eye-Fi-Karte&lt;/a&gt; direkt auf das Tablett und lade sie nach einer ersten Sichtung hoch, sobald ich WLAN-Zugang habe. So habe ich ein tägliches Backup und bin weitesgehend unabhängig von der Hardware vor Ort.&lt;/p&gt;
&lt;p&gt;Ich bin gespannt, was der Praxistest nächstes Jahr ergibt!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/10/photo-6.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/10/photo-6-600x314.jpg" alt="Das Nexus 7" title="Nexus 7 - WLAN" width="770" class="aligncenter size-medium wp-image-1264"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Die zwei Türme</title><link>https://flowfx.de/blog/blick-aus-meinem-fenster/</link><pubDate>Sun, 02 Sep 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/blick-aus-meinem-fenster/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/09/a9a4f5e6f46111e1bbd822000a1e86af_7.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/09/a9a4f5e6f46111e1bbd822000a1e86af_7.jpg" alt="Jungbusch, Mannheim" title="Blick aus meinem Fenster im Jungbusch, Mannheim" width="612" height="612" class="aligncenter size-full wp-image-1243"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Reel Big Fish - I Know You Too Well To Like You Anymore</title><link>https://flowfx.de/blog/reel-big-fish-i-know-you-too-well-to-like-you-anymore/</link><pubDate>Sun, 12 Aug 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/reel-big-fish-i-know-you-too-well-to-like-you-anymore/</guid><description>&lt;p&gt;Ein großartiges neues Album einer großartigen alten Band ist raus!
&lt;p&gt;httpvh://www.youtube.com/watch?v=DQpDcDCgO9k&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Am Klausenpass</title><link>https://flowfx.de/blog/am-klausenpass/</link><pubDate>Thu, 02 Aug 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/am-klausenpass/</guid><description>&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/08/DSCN0734.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/08/DSCN0734-768x1024.jpg" alt="Florian Posdziech am Klausenpass in der Schweiz" title="Am Klausenpass" width="540" height="720" class="aligncenter size-large wp-image-1214"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Sommer 2012 - meine Ausrüstung (mit Fotos)</title><link>https://flowfx.de/blog/sommer-2012-meine-ausrustung-mit-fotos/</link><pubDate>Sun, 29 Jul 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sommer-2012-meine-ausrustung-mit-fotos/</guid><description>&lt;p&gt;Ich bin zurück von meiner sommerlichen Radreise. Fotos von der Reise selbst wird's später geben. Als allererstes möchte ich für mich selbst die wichtigsten Erfahrungen mit der Ausrüstung aufschreiben. Die ungefähre &lt;a href="https://flowfx.de/blog/balkan-2012-packen/"&gt;Packliste&lt;/a&gt; hatte ich vor der Reise schon beschrieben, letztendlich stellt sich aber auch erst unterwegs heraus, welche Dinge nun wichtig sind und welche weniger.
&lt;p&gt;Grundsätzlich habe ich gut gepackt. In diesem Fall half meine Erfahrung von früher sehr, und überflüssiges hatte ich fast gar nicht dabei.&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Die positiven Überraschungen für mich waren&lt;/h3&gt;
&lt;h5&gt;Wäscheklammern&lt;/h5&gt;
&lt;p&gt;Ich hatte zum ersten mal Wäscheklammern dabei. Sie machen das Leben im Zelt um vieles einfacher. Die Zeltschnüre, die als Wäscheleine dienen, sind selten waagerecht angebracht, und insbesondere bei Wind - in der Natur da draußen keine Seltenheit - sind diese Klammern unschätzbar wertvoll. Wiegen und kosten tun sie nix, so kommen sie ab jetzt auf jede Reise mit.&lt;/p&gt;
&lt;h5&gt;Buff&lt;/h5&gt;
&lt;p&gt;Ein buffartiges Haltuch hatte ich schon in Norwegen dabei. Durch das Vergessen eben jenes Tuchs kam ich unterwegs in die freudige Gelegenheit, das Original kaufen zu können. Der Unterschied ist gewaltig, ab sofort nichts anderes mehr!&lt;/p&gt;
&lt;h5&gt;Fenistil und Autan&lt;/h5&gt;
&lt;p&gt;Mehrere Male haben mir diese Chemiebomben den Tag oder die Nacht gerettet. Nie ohne!&lt;/p&gt;
&lt;h5&gt;Überzieher für Schuhe&lt;/h5&gt;
&lt;p&gt;Ich habe keinerlei wasserdichte Kleidung. Nicht, weil ich sie doof finde, sondern weil ich schlichtweg keine habe. Worauf ich aber nie verzichten würde, sind die wasserdichten Überzieher für die Füße, die mir &lt;a href="http://www.helmutoptour.de"&gt;mein Vater&lt;/a&gt; kurz vor knapp noch aufdrängte. Nichts ist schlimmer als nasse und damit kalte Füße. Selbst wenn der Regen schon aufgehört hat, schützen sie die Schuhe vor dem Spritzwasser des Vorderrades.&lt;/p&gt;
&lt;h5&gt;Baumwollhandtuch&lt;/h5&gt;
&lt;p&gt;Ein Luxus, ich weiß. Aber ein großartiger! Nie wieder werde ich eines dieser ekligen Synthetikhandtücher mitnehmen. Baumwolle ist und bleibt das angenehmste, was der Haut passieren kann. Mir egal, ob es schlecht trocknet und schwerer ist. Was gut für Arthur Dent ist, will ich auch.&lt;/p&gt;
&lt;h2&gt;Verbesserungswürdig waren&lt;/h2&gt;
&lt;h5&gt;Radlhemden&lt;/h5&gt;
&lt;p&gt;Das Baumwoll-T-Shirt muss weiterhin sein. Die anderen beiden Oberhemden werde ich aber mit hochwertigeren Synthetikhemden ersetzen. Wie die Radhose sollen sie ebenso stylisch wie funktionell sein. Das ist aber nicht billig. Zu meiner Verteidung kann ich vorbringen, dass ich mein eigentliches zweites Hemd, das diese Kriterien erfüllt, ein paar Wochen vor der Reise verloren habe.&lt;/p&gt;
&lt;h5&gt;Windjacke&lt;/h5&gt;
&lt;p&gt;Meine geliebt Haglöffsjacke zeigt so langsam aber sicher Alterserscheinungen. Die Winddichtigkeit ist nur noch mäßig, gegen Regen war sie nie gewappnet. Das ist also ein weiteres sauteures Ausrüstungsteil, das im nächsten Jahr ersetzt werden muss.&lt;/p&gt;
&lt;h5&gt;Waschlappen&lt;/h5&gt;
&lt;p&gt;Ich hatte keinen. Das muss sich ändern, es macht die Körperhygiene abseits von einer warmen Dusche sehr viel einfacher.&lt;/p&gt;
&lt;h5&gt;2-Mann-Zelt&lt;/h5&gt;
&lt;p&gt;Zum ersten Mal hatte ich das Gefühl, das mein treues &lt;a href="http://www.globetrotter.de/de/shop/detail.php?mod_nr=107488"&gt;Arctis 2&lt;/a&gt; zu groß für mich ist. So ordentlich, wie ich meine Taschen auch im Zelt immer gepackt hatte, war da viel Platz, den ich nicht brauchte. Vielleicht also Zeit, mal ein schön leichtes und teures Einmannzelt zu kaufen?&lt;/p&gt;
&lt;h2&gt;Fotos&lt;/h2&gt;
&lt;p&gt;Nun aber die Fotos. Mehr als alles anderes sind sie eine Merkliste für meine nächste Reise, wann und wohin auch immer die stattfinden wird.&lt;/p&gt;
&lt;p&gt;[shashin type=&amp;ldquo;albumphotos&amp;rdquo; id=&amp;ldquo;43&amp;rdquo; columns=&amp;ldquo;4&amp;rdquo; size=&amp;ldquo;160&amp;rdquo; crop=&amp;ldquo;y&amp;rdquo; order=&amp;ldquo;source&amp;rdquo; caption=&amp;ldquo;y&amp;rdquo;]&lt;/p&gt;</description></item><item><title>Balkan 2012 - Abfahrt!</title><link>https://flowfx.de/blog/balkan-2012-abfahrt/</link><pubDate>Fri, 29 Jun 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/balkan-2012-abfahrt/</guid><description>&lt;p&gt;Alle Taschen sind gepackt. Das Rad ist fit. Ich auch. Das Wetter stimmt. Los geht's! Ich bin raus. Tschüss!&lt;/p&gt;</description></item><item><title>Balkan 2012 - Packen</title><link>https://flowfx.de/blog/balkan-2012-packen/</link><pubDate>Tue, 26 Jun 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/balkan-2012-packen/</guid><description>&lt;p&gt;Freitag nach Feierabend geht es los. Vier Wochen, 2000km, Sonne, Regen, Muskelkater, Sonnenbrand und seit langem mal wieder echte Berge. So richtig echte Berge.
&lt;p&gt;Meine ungefähre Strecke habe ich &lt;a href="https://flowfx.de/blog/balkan-2012-die-vorbereitung-1/"&gt;schon vor ein paar Wochen&lt;/a&gt; beschrieben. Die wichtigsten Stationen werden sein:&lt;/p&gt;
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Schwäbische Alb&lt;/li&gt;
&lt;li&gt;Starnberg&lt;/li&gt;
&lt;li&gt;Zell am See&lt;/li&gt;
&lt;li&gt;Großglockner Hochalpenstraße&lt;/li&gt;
&lt;li&gt;Triglav Nationalpark&lt;/li&gt;
&lt;li&gt;Prezid Pass&lt;/li&gt;
&lt;li&gt;Plitvicer Seen&lt;/li&gt;
&lt;li&gt;Mostar&lt;/li&gt;
&lt;li&gt;Sarajevo&lt;/li&gt;
&lt;li&gt;Belgrad&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dort entlang soll mich mein altgedienter Drahtesel bringen, der mich vor zehn Jahren schon &lt;a href="https://flowfx.de/?page_id=815"&gt;durch Italien&lt;/a&gt; begleitet hat. Vor drei Monaten fiel endlich die Entscheidung, ihn von Grund auf wieder aufzubauen. Alles was von früher übrig geblieben ist, sind der Rahmen, die Bremsen, die Sattelstange und der Gepäckträger&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/06/DSCN0043.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/06/DSCN0043-382x510.jpg" alt="Mein Fahrrad" title="Vincent hoch zu Ross" width="382" height="510" class="aligncenter size-medium wp-image-1139"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Größte Änderung ist die &lt;a href="http://www.shimano.com/publish/content/global_cycle/en/us/index/products/0/alfine/product.-code-SG-S700-S.-type-..html"&gt;Shimano Alfine Nabenschaltung&lt;/a&gt;, die bisher alles hält, was sie versprochen hat. Nur die hohen Berge der Alpen machen mir jetzt schon Angst. Als Ausgleich habe ich Vincent - die Schildkröte - mit an Bord. Meine bisherigen Erfahrungen zeigen, dass er viele lächelnde Gesichter erzeugt, als Klingel aufgrund des ungewöhnlichen Quietschgeräuschs aber praktisch nutzlos ist.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/06/vincent-aka-schildi.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/06/vincent-aka-schildi.jpg" alt='Meine Schildkötenklingel "Vincent"' title="Vincent" width="405" height="405" class="aligncenter size-full wp-image-1144"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bei allen Komponenten und beim Zusammenbau habe ich mein volles Vertrauen in Michael und Adrian vom &lt;a href="http://www.eldorado-hd.de/"&gt;Eldorado in Heidelberg&lt;/a&gt; gesetzt und wurde nicht enttäuscht. Die Jungs wissen wirklich wovon sie reden, haben die Technik voll im Griff und sind dazu auch noch supernett. Wenn dein Radhändler des Vertrauens selbst begeistert von deinem Rad ist, sehe ich das als positives Zeichen!&lt;/p&gt;
&lt;p&gt;So. Das ist das Rad. Aber was nehme ich mit?&lt;/p&gt;
&lt;p&gt;Schon seit ein paar Wochen bastle ich theoretisch an meiner Packliste. Auf einer kleinen Testtour durch den Westerwald fielen mir dann die letzten Kleinigkeiten auf, die noch fehlten. Beispielsweise war die Überlegung, neben Radschuhen nur Flip Flops mitzunehmen, eine dumme. Klassische, spießige Treckingsandalen bieten viel zu viele Vorteile. Nicht zuletzt die Möglichkeit, warme Socken in ihnen zu tragen. Ernsthaft.&lt;/p&gt;
&lt;p&gt;Letztendlich hat sich dieser Haufen ergeben:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/06/DSCN0238.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/06/DSCN0238-1024x768.jpg" alt="Fast alle Gepäckstücke auf einem Haufen." title="Ist das alles?" width="540" height="405" class="aligncenter size-large wp-image-1129"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In zwei große und zwei kleine Ortlieb-Radtaschen sowie einen wasserdichten Sack für den Schlafsack packe ich grob geschätzt &lt;a href="#packliste"&gt;die untenstehenden Dinge&lt;/a&gt;. Der Medizinkasten ist hier nicht beachtet, und das ein oder andere Teil wird sich noch kurzfristig ändern. Aber im großen und ganzen stimmt das schon. Falls jemand von euch Fragen zu speziellen Ausrüstungsgegenständen oder meinen Überlegungen dazu hat, beantworte ich diese sehr gerne.&lt;/p&gt;
&lt;p&gt;Ansonsten bleibt mir nur &lt;a href="https://flowfx.de/blog/mailingliste-florian-op-tour/"&gt;ein weiterer&lt;/a&gt; Hinweis auf die Mailingliste, über die ich mich von unterwegs ab und an mal melden werde. Tragt euch dafür einfach hier ein:&lt;/p&gt;
 &lt;form method="POST" action="https://ml05.ispgateway.de/mailman/subscribe/optour_flowfx.de"&gt;
 Email: &lt;input name="email" value="" type="text"&gt;&lt;input name="email-button" value="Anmelden" type="submit"&gt;
 &lt;/form&gt;
&lt;p&gt;Florian, Dienstag 26. Juni, langsam aber sicher nervös.&lt;/p&gt;
&lt;p&gt;&lt;a name="packliste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Packliste&lt;/h2&gt;
&lt;h4&gt;Kleidung&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Radschuhe &lt;/li&gt;
&lt;li&gt;Sandalen &lt;/li&gt;
&lt;li&gt;Radelhose &lt;/li&gt;
&lt;li&gt;T-Shirt &lt;/li&gt;
&lt;li&gt;Hemd &lt;/li&gt;
&lt;li&gt;Sportshirt ärmellos &lt;/li&gt;
&lt;li&gt;Fliespulli &lt;/li&gt;
&lt;li&gt;Jacke &lt;/li&gt;
&lt;li&gt;2x dünne Socken&lt;/li&gt;
&lt;li&gt;1x Dicke Socken&lt;/li&gt;
&lt;li&gt;2x Sportunterhosen&lt;/li&gt;
&lt;li&gt;1x Boxershorts&lt;/li&gt;
&lt;li&gt;Radhandschuhe &lt;/li&gt;
&lt;li&gt;Schweißband &lt;/li&gt;
&lt;li&gt;Halstuch &lt;/li&gt;
&lt;li&gt;Regengamaschen &lt;/li&gt;
&lt;li&gt;Schirmmütze &lt;/li&gt;
&lt;li&gt;Lange Hose &lt;/li&gt;
&lt;li&gt;Fahrradhelm&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Hygiene&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Shampoo &lt;/li&gt;
&lt;li&gt;Zahnbürste &lt;/li&gt;
&lt;li&gt;Zahnpasta &lt;/li&gt;
&lt;li&gt;Gehörschutz &lt;/li&gt;
&lt;li&gt;Toilettenpapier &lt;/li&gt;
&lt;li&gt;Sonnencreme &lt;/li&gt;
&lt;li&gt;Nagelschere &lt;/li&gt;
&lt;li&gt;Deo &lt;/li&gt;
&lt;li&gt;Handtuch &lt;/li&gt;
&lt;li&gt;Waschlappen &lt;/li&gt;
&lt;li&gt;Brillenputztuch &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Camping&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Zelt &lt;/li&gt;
&lt;li&gt;Zeltstangen &lt;/li&gt;
&lt;li&gt;Schlafsack &lt;/li&gt;
&lt;li&gt;Seideninlet &lt;/li&gt;
&lt;li&gt;Isomatte &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Küche&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Trinkflasche &lt;/li&gt;
&lt;li&gt;Flachmann &lt;/li&gt;
&lt;li&gt;Opinelmesser&lt;/li&gt;
&lt;li&gt;Tupperteller-/schüssel &lt;/li&gt;
&lt;li&gt;Löffel &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Werkzeug&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Innensechskantschlüssel 4/5/6mm &lt;/li&gt;
&lt;li&gt;Maulschlüssel 4+6mm &lt;/li&gt;
&lt;li&gt;Maulschlüssel 15mm &lt;/li&gt;
&lt;li&gt;Brooksschlüssel &lt;/li&gt;
&lt;li&gt;Ersatzschlauch &lt;/li&gt;
&lt;li&gt;Flickzeug &lt;/li&gt;
&lt;li&gt;Mantelheber &lt;/li&gt;
&lt;li&gt;Luftpumpe &lt;/li&gt;
&lt;li&gt;Speichenschlüssel &lt;/li&gt;
&lt;li&gt;Adapter auf Autoventile &lt;/li&gt;
&lt;li&gt;Ersatzspeichen, hinten&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Technik&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Kompakte Digitalkamera&lt;/li&gt;
&lt;li&gt;Aufladegerät Kamera&lt;/li&gt;
&lt;li&gt;Ersatzakku Kamera&lt;/li&gt;
&lt;li&gt;Zweite SD-Karte &lt;/li&gt;
&lt;li&gt;USB-SD-Karten-Adapter &lt;/li&gt;
&lt;li&gt;Motorola F3 Telefon &lt;/li&gt;
&lt;li&gt;Aufladegerät Telefon &lt;/li&gt;
&lt;li&gt;Stirnlampe &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Unterlagen &amp;amp; Dokumente&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Kartenmaterial&lt;/li&gt;
&lt;li&gt;Bücher &lt;/li&gt;
&lt;li&gt;Brustbeutel&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;Perso &lt;/li&gt;
&lt;li&gt;EC-Karte &lt;/li&gt;
&lt;li&gt;VISA-Karte &lt;/li&gt;
&lt;li&gt;KV-Karte &lt;/li&gt;
&lt;li&gt;Bargeld &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Notiz- und Tagebuch
&lt;ul&gt;
&lt;li&gt;URLs &lt;/li&gt;
&lt;li&gt;Passwörter &lt;/li&gt;
&lt;li&gt;Telefonnummern &lt;/li&gt;
&lt;li&gt;Adressen &lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Bleistifte &lt;/li&gt;
&lt;li&gt;Rückflugticket &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Sonstiges&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Fahrradschloss &lt;/li&gt;
&lt;li&gt;Fahrradschlossschlüssel &lt;/li&gt;
&lt;li&gt;Wäscheklammern &lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Gomezify yourself!</title><link>https://flowfx.de/blog/gomezify-yourself/</link><pubDate>Mon, 18 Jun 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/gomezify-yourself/</guid><description>&lt;p&gt;Ich war ja kein großer Fan von Mario Gomez, aber seit dem Spiel gegen die Niederlande sage auch ich:
&lt;p&gt;&lt;a href="http://gomezify.tumblr.com/"&gt;&lt;strong&gt;Gomezify yourself!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2012/06/pomez.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2012/06/pomez.jpg" alt="Flomez" title="Gomezify yourself!" width="313" height="313" class="aligncenter size-full wp-image-1114"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Mailingliste "Florian Op Tour"</title><link>https://flowfx.de/blog/mailingliste-florian-op-tour/</link><pubDate>Mon, 28 May 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mailingliste-florian-op-tour/</guid><description>&lt;p&gt;Wie bei meiner &lt;a href="https://flowfx.de/?page_id=809"&gt;letzten Reise&lt;/a&gt; werde ich von meiner &lt;a href="https://flowfx.de/blog/balkan-2012-die-vorbereitung-1/"&gt;diesjährigen Sommertour&lt;/a&gt; zwischendurch meine Freunde und die liebe Verwandschaft ein ganz klein wenig an meiner Zeit unterwegs teilhaben lassen. Da ich die vier Wochen weitesgehend netzfrei verbringen will, werde ich wieder E-Mails schicken, immerhin aber supermodern mit einer eigenen Mailingliste.
&lt;p&gt;Diese steht natürlich für alle offen, die sich für meine Unternehmung interessieren. Tragt dafür einfach eure E-Mail hier ein!&lt;/p&gt;
 &lt;/p&gt;&lt;form method="POST" action="https://ml05.ispgateway.de/mailman/subscribe/optour_flowfx.de"&gt;
 Email: &lt;input name="email" value="" type="text"&gt;&lt;input name="email-button" value="Anmelden" type="submit"&gt;
 &lt;/form&gt;</description></item><item><title>Balkan 2012 - Die Idee</title><link>https://flowfx.de/blog/balkan-2012-die-vorbereitung-1/</link><pubDate>Sun, 01 Apr 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/balkan-2012-die-vorbereitung-1/</guid><description>&lt;p&gt;Diesen Sommer werde ich meine erste Radreise nach siebenjähriger Pause machen. Spätestens nach meiner &lt;a href="https://flowfx.de/?page_id=809"&gt;Norwegentour 2005&lt;/a&gt; war mein altes Rad komplett heruntergefahren. Irgendwas zwischen 20000 und 25000 Kilometern hatten ihren Tribut gefordert.
&lt;p&gt;Nun, etliche Jahre später, aber endlich mit einer &lt;a href="https://flowfx.de/blog/2012/01/ich-verdanke-twitter-meine-arbeitsstelle/"&gt;Arbeitsstelle&lt;/a&gt; versehen, erwachte Anfang des Jahres wieder meine Lust aufs Reisen. Der Weg zur Arbeit wird gleich auch damit erschlagen, aber vor allem bin ich wieder am Träumen, wo die nächste Radtour hingehen kann.&lt;/p&gt;
&lt;p&gt;Für diesen Sommer habe ich mich für eine Ecke Europas entschieden, von der ich praktisch nichts weiß. Oder wart ihr schonmal auf dem Balkan? Auf dem Weg dorthin fahre ich unter anderem über die &lt;a href="https://pinterest.com/pin/109071622195387172/"&gt;Großglockner Hochalpenstraße&lt;/a&gt;, die schon sehr sehr lange auf meiner Wunschliste steht. Die ungefähre Route kann man in diesem bei Google Maps geklauten Kärtchen erahnen.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/03/Schriesheim-Deutschland-nach-Belgrad-Serbien-Google-Maps-1219581-492x510.png" alt="Kartenausschnitt mit ungefährer Route meiner Sommertour auf den Balkan" title="Schriesheim - Belgrad, grobe Route" width="492" height="510" class="aligncenter size-medium wp-image-967"&gt;
&lt;p&gt;Inspiriert wird sie unter anderem durch &lt;a href="http://pinterest.com/flowfx/balkan/"&gt;tolle Fotos auf Pinterest&lt;/a&gt; und Gespräche mit Leuten, die tatsächlich schonmal dort waren, wie z.B. meine österreichischen Kollegen, die mir den &lt;a href="http://maps.google.com/maps?q=slowenien&amp;amp;hl=de&amp;amp;ll=46.282428,13.808441&amp;amp;spn=0.910168,2.108002&amp;amp;sll=49.460973,8.490417&amp;amp;sspn=0.427996,1.054001&amp;amp;hnear=Slowenien&amp;amp;t=m&amp;amp;z=10"&gt;Triglav Nationalpark&lt;/a&gt; wärmstens ans Herz gelegt haben.&lt;/p&gt;
&lt;p&gt;Auf dieser Tour hoffe ich auch, meine ersten &lt;a href="http://www.couchsurfing.org/people/flowfx/"&gt;CouchSurfing&lt;/a&gt;-Erfahrungen zu machen. Seit ein paar Monaten besitze ich selbst tatsächlich auch eine Couch, weswegen es damit also vielleicht schon früher losgeht. Ein Zurück gibt es eh nicht mehr, mein Rückflugticket ist bezahlt!&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/03/Reservierungsbest%C3%A4tigung-Screenshot-510x315.png" alt="Reservierungsbestätigung für den Rückflug von Belgrad nach Frankfurt" title="Reservierungsbestätigung für den Rückflug" width="510" height="315" class="aligncenter size-medium wp-image-960"&gt;
&lt;p&gt;Das wichtigste Utensil für die Tour ist selbstverständlich mein Fahrrad. Mittlerweile steht es schon ein paar Wochen beim &lt;a href="http://www.eldorado-hd.de/"&gt;Radhänder meines Vertrauens&lt;/a&gt;, wer hat aber auch ahnen können, dass die &lt;a href="https://twitter.com/#!/FlowFXx/status/182064854587281408"&gt;Gabel gebrochen&lt;/a&gt; ist? Und dass das Einbaumaß von einem Zoll heutzutage kaum mehr verwendet wird und Ersatz deshalb rar ist? Sollte das Endergebnis aber so erregend sein, wie die Laufräder alleine, wird sich die Wartezeit gelohnt haben:&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/03/IMG_20120320_175317-382x510.jpg" alt="Foto meiner neuen - superchiccen - Laufräder" title="Neue Laufräder" width="382" height="510" class="aligncenter size-medium wp-image-961"&gt;
&lt;p&gt;Mittwoch ist es wahrscheinlich so weit.&lt;/p&gt;
&lt;p&gt;[Update 05.04.2012]
Hier ist es das gute Stück:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://instagr.am/p/JBzwDCAV3_/" title="Link zu Instagram"&gt;&lt;img src="http://distilleryimage7.instagram.com/4f1efcc67eea11e18cf91231380fd29b_7.jpg" alt="Mein neues Rad."&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Mein Netzgeschichten-Lese-Workflow</title><link>https://flowfx.de/blog/mein-netzgeschichten-lese-workflow/</link><pubDate>Sun, 01 Apr 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mein-netzgeschichten-lese-workflow/</guid><description>&lt;p&gt;Je mehr Artikel man im Netz liest, desto mehr bekommt man mit, was man noch alles lesen könnte. Mal abgesehen von den vielen Büchern, die ich per 1-Click bei Amazon bestelle, nur weil sie irgendwo lobend erwähnt werden, strömen täglich dutzende interessante Links auf mich ein, die zumindest mal notiert werden wollen.
&lt;p&gt;Meine Hauptquellen für solche Links sind &lt;a href="http://www.google.com/reader/"&gt;&lt;strong&gt;Google Reader&lt;/strong&gt;&lt;/a&gt; und &lt;a href="https://twitter.com/#!/FlowFXx/following"&gt;&lt;strong&gt;Twitter&lt;/strong&gt;&lt;/a&gt;. Ab und an schaue ich auch bei &lt;a href="http://www.google.com/news"&gt;&lt;strong&gt;Google News&lt;/strong&gt;&lt;/a&gt; und &lt;a href="http://www.rivva.de"&gt;&lt;strong&gt;Rivva&lt;/strong&gt;&lt;/a&gt; rein.&lt;/p&gt;
&lt;p&gt;Die Herausforderung ist nun&lt;/p&gt;
&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;zu entscheiden, welche Artikel lesenswert sind, &lt;/li&gt;
&lt;li&gt;diese Artikel zentral zu sammeln und einfach lesbar zu machen,&lt;/li&gt;
&lt;li&gt;interessante Artikel wiederauffindbar zu machen und&lt;/li&gt;
&lt;li&gt;ausgewählte Artikel ohne großen Aufwand über Twitter oder Facebook weiterzugeben.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Meine Lösung macht Gebrauch von mehreren großartigen Webdiensten:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ifttt.com"&gt;If This Than That (ifttt)&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://readitlaterlist.com"&gt;ReadItLater&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://bufferapp.com"&gt;Buffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pinboard.in"&gt;Pinboard&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Workflow&lt;/h2&gt;
&lt;p&gt;Meine Arbeitsabläufe - oft schon morgens in der Straßenbahn - sehen wie folgt aus:&lt;/p&gt;
&lt;h3&gt;Auswahl&lt;/h3&gt;
&lt;p&gt;In &lt;strong&gt;Google Reader&lt;/strong&gt; lasse ich mir alle ungelesenen Artikel anzeigen, ich markiere die eventuell lesenswerten mit dem Stern und danach alle als gelesen. &lt;strong&gt;Ifttt&lt;/strong&gt; speichert &lt;a href="http://ifttt.com/recipes/27490"&gt;mit diesem Rezept&lt;/a&gt; alle mit Sternchen markierten Artikel in &lt;strong&gt;ReadItLater&lt;/strong&gt;.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/04/Google-Reader-134429-510x281.png" alt="Markierung von Artikeln in Google Reader. Sternchen führen zur Speicherung in ReadItLater. Alle werden als gelesen markiert." title="Google Reader-Screen Shot" width="510" height="281" class="aligncenter size-medium wp-image-999"&gt;
&lt;p&gt;In meinem &lt;a href="https://play.google.com/store/apps/details?id=jp.r246.twicca"&gt;&lt;strong&gt;Twitter&lt;/strong&gt;client&lt;/a&gt; auf meinem Android-Telefon kann ich Links direkt in die &lt;a href="https://play.google.com/store/apps/details?id=com.ideashower.readitlater.pro"&gt;Android-&lt;strong&gt;ReadItLater&lt;/strong&gt;-App&lt;/a&gt; schieben. Um später den Verlinkenden zu würdigen, wechsel ich mittlerweile direkt dorthin und schreibe ein &lt;em&gt;via:twittername&lt;/em&gt; in die Schlagworte.&lt;/p&gt;
&lt;p&gt;Am Rechner im Browser hilft mir die Google Chrome Erweiterung &lt;a href="http://shalom.craimer.org/projects/orbviousinterest/"&gt;&lt;strong&gt;Obvious Interest&lt;/strong&gt;&lt;/a&gt;, die das direkte Speichern von Links in &lt;strong&gt;ReadItLater&lt;/strong&gt; ermöglicht. Auch hier notiere ich in den Schlagworten, über wen ich an den Artikel geraten bin.&lt;/p&gt;
&lt;h3&gt;Lesen&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;ReadItLater&lt;/strong&gt;, wie auch die Konkurrenzprodukte &lt;a href="http://www.instapaper.com"&gt;Instapaper&lt;/a&gt; und &lt;a href="http://www.readability.com"&gt;Readability&lt;/a&gt;, dient dem Sammeln und Lesen von Artikeln. Sowohl die Web- als auch die Mobilanwendung präsentieren die Texte in einem einheitlichen und lesefreundlichen Format. Durch das vorherige Herunterladen aufs Telefon kann ich auch lesen, wenn ich gerade mal kein Netz habe. In Mannheim soll das &lt;a href="https://twitter.com/#!/FlowFXx/status/145172636467593216"&gt;durchaus mal vorkommen&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Lese ich einen interessanten Artikel, den ich auch nur im entferntesten irgendwann einmal wieder gebrauchen könnte, so versehe ich ihn mit Schlagworten. Sollte ich ihn nicht sofort, aber später tweeten wollen, setze ich das zusätzliche Schlagwort &lt;em&gt;buffer&lt;/em&gt;. Alle gelesenen Artikel markiere ich in &lt;strong&gt;ReadItLater&lt;/strong&gt; als&amp;hellip; gelesen.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/04/Read-It-Later-Und-Seven-Regener-hat-doch-recht-134729-510x300.png" alt="ReadItLater macht das Lesen von Artikeln sehr angenehm. Dies ist ein Screenshot von der Benutzeroberfläche." title="Screenshot von Read It Later " width="510" height="300" class="aligncenter size-medium wp-image-1001"&gt;
&lt;h3&gt;Archivierung&lt;/h3&gt;
&lt;p&gt;Ein weiteres &lt;a href="http://ifttt.com/recipes/27491"&gt;&lt;strong&gt;Ifttt&lt;/strong&gt;-Rezept&lt;/a&gt; speichert alle in &lt;strong&gt;ReadItLater&lt;/strong&gt; gelesenen Artikel in &lt;a href="http://pinboard.in/u:flowfx"&gt;meinem Konto&lt;/a&gt; beim Lesezeichendienst &lt;strong&gt;Pinboard&lt;/strong&gt;. Dabei werden die vergebenen Schlagworte selbstverständlich übernommen. Sollte ich später einen früher mal gelesenen Artikel suchen, so suche ich ihn anhand meiner Schlagworte bei &lt;strong&gt;Pinboard&lt;/strong&gt;.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/04/Pinboard-Search-Results-135046-510x211.png" alt="Screenshot von Pinboard" title="Pinboard Suchergebnisse für twitter und marketing" width="510" height="211" class="aligncenter size-medium wp-image-1003"&gt;
&lt;h3&gt;Weiterverbreitung&lt;/h3&gt;
&lt;p&gt;Artikel, die so gut sind, dass ich sie zu einem späteren Zeitpunkt tweeten möchte, versehe ich wie gesagt mit dem Schlagwort &lt;em&gt;buffer&lt;/em&gt;. Ein &lt;a href="http://ifttt.com/recipes/27492"&gt;drittes &lt;strong&gt;Ifttt&lt;/strong&gt;-Rezept&lt;/a&gt; schiebt diese Links in die Webanwendung &lt;strong&gt;Buffer&lt;/strong&gt;. Dort kann ich den Tweet in aller Ruhe bearbeiten, und hier kommt dann auch endlich das &lt;em&gt;via:twittername&lt;/em&gt;-Schlagwort zum Zuge.&lt;/p&gt;
&lt;p&gt;Ich habe in meinen Buffereinstellungen im übrigen &lt;em&gt;keine&lt;/em&gt; automatischen Tweets aktiviert. Das heißt, ich schicke sie tatsächlich von Hand dort ab. Das ist zwar nicht die eigentlich Idee von &lt;strong&gt;Buffer&lt;/strong&gt;, für mich taugt das automatisierte Twittern aber sowieso nicht.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/04/Dashboard-Buffer-135348-510x260.png" alt="Screenshot meines Buffer-Dashboards. Beispieltweets inklusive." title="Mein Buffer-Dashboard" width="510" height="260" class="aligncenter size-medium wp-image-1005"&gt;
&lt;h2&gt;Diskussion&lt;/h2&gt;
&lt;p&gt;Mit diesem Aufbau komme ich momentan sehr gut zurecht. Ich habe immer etwas zu lesen, mein &lt;strong&gt;Google Reader&lt;/strong&gt; wird mehrfach am Tag geleert, und Interessantes finde ich auch im Nachhinein wieder.&lt;/p&gt;
&lt;p&gt;Wer aufmerksam gelesen hat, dem werden mindestens zwei Unschönheiten aufgefallen sein, die ich dabei akzeptieren muss. &lt;strong&gt;ReadItLater&lt;/strong&gt; läuft mit vielen vielen Artikeln voll, die zwar auf den ersten Blick lesbar scheinen und deswegen in Google Reader mit einem Sternchen markiert werden, am Ende aber von neueren, noch interessanteren überholt werden. Sie werden demnach nie gelesen und verschwinden nicht aus der ReadItLater-Wartschlange. Das ist für mich ok, so habe ich zwei Stufen der Artikelauswahl, und die Wichtigkeit guter Titel wird extrem deutlich.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pinboard&lt;/strong&gt; wiederfährt ähnliches, weil auch die uninteressanten, und demnach unverschlagworteten, Artikel dort reinlaufen. Da die Suche in Pinboard hauptsächlich über Schlagworte läuft, ist aber auch dies kein wirkliches Problem. So &lt;a href="http://de.wikipedia.org/wiki/Signal-Rausch-Verh%C3%A4ltnis"&gt;ein wenig Rauschen&lt;/a&gt; in der öffentlichen Linksammlung schadet vielleicht auch nicht.&lt;/p&gt;
&lt;h2&gt;Fazit&lt;/h2&gt;
&lt;p&gt;Das war&amp;rsquo;s. Wie bei allen Prozessoptimierungen interessiere ich mich brennend dafür, wie andere dies handhaben. Insbesondere auf &lt;a href="https://www.twitter.com/Scytale"&gt;Scytale&amp;rsquo;s&lt;/a&gt; Setup bin ich gespannt, aber der Herr hat sich ja noch nicht dazu bequemt, mal was dazu zu schreiben.&lt;/p&gt;</description></item><item><title>Die Felsen - Mädchen (Offizielles Video)</title><link>https://flowfx.de/blog/die-felsen-madchen-offizielles-video/</link><pubDate>Sun, 11 Mar 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-madchen-offizielles-video/</guid><description>&lt;p&gt;[youtube=http://www.youtube.com/watch?v=L9QtoRl-FpU]&lt;/p&gt;</description></item><item><title>Rick Santorum for president</title><link>https://flowfx.de/blog/rick-santorum-for-president/</link><pubDate>Thu, 01 Mar 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/rick-santorum-for-president/</guid><description>&lt;p&gt;Als willfähriges Mitglied des &lt;a href="https://blog.fefe.de/"&gt;Fefe-Zeitbinder-Botnets&lt;/a&gt; unterstütze ich selbstverständlich den &lt;a href="https://blog.fefe.de/?ts=b1b04d72"&gt;Wahlkampf&lt;/a&gt; des republikanischen Präsidentschaftskandidaten &lt;a href="http://spreadingsantorum.com/"&gt;Rick Santorum&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Neues Livevideo von den Felsen</title><link>https://flowfx.de/blog/neues-livevideo-von-den-felsen/</link><pubDate>Fri, 24 Feb 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/neues-livevideo-von-den-felsen/</guid><description>&lt;p&gt;Selbst nach eineinhalb Jahren bemerke ich, wie &lt;a href="http://www.twitter.com/diefelsen"&gt;die Jungs&lt;/a&gt; bei jedem Konzert besser werden. Ich bin begeistert! Das hier ist ein Ausschnitt aus dem Konzert im Dezember im &lt;a href="http://www.dashaus-lu.de"&gt;Kulturzentrum dasHaus&lt;/a&gt; in Ludwigshafen:
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=lNqzw_BeY20]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Wordpres Plugins auf diefelsen.de - iCal events, Markdown On Save und Tubepress</title><link>https://flowfx.de/blog/wordpres-plugins-auf-diefelsen-de-ical-events-markdown-on-save-und-tubepress/</link><pubDate>Mon, 20 Feb 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wordpres-plugins-auf-diefelsen-de-ical-events-markdown-on-save-und-tubepress/</guid><description>&lt;p&gt;Auf der wordpressbasierten Seite der &lt;a href="http://diefelsen.de"&gt;Felsen (http://diefelsen.de)&lt;/a&gt; benutze ich ein paar sehr nützliche Plugins, dich ich gerne vorstellen möchte. Es handelt sich um &lt;a href="http://icalevents.com/"&gt;ical events&lt;/a&gt;, mit dem ich alle Facebook-Veranstaltungen der Felsen automatisch auf der Webseite anzeige, &lt;a href="http://wordpress.org/extend/plugins/markdown-on-save/"&gt;Markdown On Save&lt;/a&gt;, das den letzten Rest HTML aus dem Backend entfernt und &lt;a href="http://tubepress.org/"&gt;Tubepress&lt;/a&gt; für die Videogalerie.
&lt;/p&gt;&lt;h2&gt;ical events&lt;/h2&gt;
&lt;p&gt;Eine der Fragestellungen, die mich in den letzten zwei Jahren am meisten umgetrieben hat ist, wie man die ganzen Veranstaltungskalender einer Band mit geringem Aufwand auf dem aktuellen Stand hält. Webseite, Facebook, &lt;a href="http://www.regioactive.de/diefelsen"&gt;Regioactive&lt;/a&gt; &lt;a href="http://www.lastfm.de/musik/Die+Felsen"&gt;etc&lt;/a&gt; &lt;a href="http://www.myspace.com/diefelsen"&gt;pp&lt;/a&gt; wollen alle bearbeitet werden. Die kurze Antwort lautet: es geht nicht. Es fehlt die &lt;em&gt;eine&lt;/em&gt; Standardkalenderplattform, auf die alle anderen dann zugreifen.&lt;/p&gt;
&lt;p&gt;Im englischsprachigen Raum ist &lt;a href="http://www.songkick.com"&gt;Songkick&lt;/a&gt; eine solche Plattform, bei der jede Veranstaltung genau einen Datenbankeintrag hat und in den Kalendern aller beteiligten Bands und Veranstaltungsorte angezeigt wird. &lt;a href="http://soundcloud.com"&gt;Soundcloud&lt;/a&gt; bindet diese Termine beispielsweise automatisch ein. &lt;strong&gt;Problem 1&lt;/strong&gt;: Songkick ist nur englisch und unter anderem deswegen hierzulande nicht etabliert. &lt;strong&gt;Problem 2&lt;/strong&gt;: Facebook macht sowieso immer sein eigenes Ding. Und wenn es eines gibt, auf was ich nicht verzichten möchte, dann sind es Facebook-Events.&lt;/p&gt;
&lt;p&gt;Meine aktuelle Lösung besteht in der Nutzung der Facebook-Events der Felsen als zentralem Terminkalender, der mittels des &lt;a href="http://icalevents.com/"&gt;ical events&lt;/a&gt;-Plugins (fast) automatisch auf der Webseite eingebunden wird. Dort gibt es eine &lt;a href="http://diefelsen.de/termine"&gt;Terminseite&lt;/a&gt; sowie ein Widget auf der &lt;a href="http://diefelsen.de/"&gt;Startseite&lt;/a&gt;, das die nächsten paar Konzerttermine anzeigt. Die Links gehen auf die Facebook-Events, und alle aktualisierungen erscheinen automatisch auch auf der Webseite.&lt;/p&gt;
&lt;h2&gt;Markdown On Save&lt;/h2&gt;
&lt;p&gt;Wenn es etwas schlimmeres als HTML gibt, dann sind es WYSIWYG-Editoren. Um trotz meiner Abneigung gegen letztere den Felsenjungs das Leben nicht allzu schwer zu machen, habe ich ihnen die &lt;a href="http://daringfireball.net/projects/markdown/"&gt;Markdown&lt;/a&gt;-Syntax nähergebracht. Mit dieser lassen sich ziemlich intuitiv Überschriften, Fett- und Kursivschreibung und ähnliches eintragen. Das &lt;a href="http://wordpress.org/extend/plugins/markdown-on-save/"&gt;Markdown On Save&lt;/a&gt; macht die Nutzung davon sehr einfach.&lt;/p&gt;
&lt;p&gt;Die mittlerweile brauchbare Wordpressfunktion, Bilder einzufügen komplettiert eigentlich alles, was man wirklich braucht. Nagut. &lt;a href="http://wordpress.org/extend/plugins/soundcloud-shortcode/"&gt;Soundcloud&lt;/a&gt;-Shortcode und &lt;a href="http://www.prelovac.com/vladimir/wordpress-plugins/smart-youtube"&gt;Smart Youtube&lt;/a&gt; sind auch nicht zu verachten.&lt;/p&gt;
&lt;h2&gt;Tubepress&lt;/h2&gt;
&lt;p&gt;Denn was wäre die Welt ohne Youtube? Das &lt;a href="http://tubepress.org/"&gt;Tubepress&lt;/a&gt;-Plugin produziert großartige &lt;a href="http://diefelsen.de/videos/"&gt;Videogalerien&lt;/a&gt;. Das Aussehen ist auf mehr Arten veränderbar, also ich ausprobieren könnte. Die Videos stammen von Youtube oder Vimeo, aus Kanälen oder Playlisten oder was auch immer. Eine klasse Sache!&lt;/p&gt;
&lt;p&gt;Selbstverständlich habe ich noch einige andere Plugins installiert. Diese sind aber die, über deren Entdeckung ich mich am meisten gefreut habe.&lt;/p&gt;</description></item><item><title>The JB Conspiracy &amp; Reel Big Fish in der Batschkapp</title><link>https://flowfx.de/blog/the-jb-conspiracy-reel-big-fish-in-der-batschkapp/</link><pubDate>Wed, 15 Feb 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-jb-conspiracy-reel-big-fish-in-der-batschkapp/</guid><description>&lt;p&gt;Gestern war ich mit &lt;a href="http://www.twitter.com/flederrattie"&gt;Flederrattie&lt;/a&gt; in der &lt;a href="https://batschkapp.net/"&gt;Batschkapp&lt;/a&gt; in Frankfurt. Nicht nur ist das ein netter Laden, es haben auch klasse Bands gespielt. Die Entdeckung des Abends war &lt;a href="https://www.facebook.com/thejbconspiracy"&gt;The JB Conspiracy&lt;/a&gt; aus dem Land von der anderen Seite vom Kanal. Endlich mal wieder ein junge Skaband, die mich nicht nach drei Liedern langweilt. Jedenfalls konnte ich meine Beine keine Sekunde stillhalten, und das ist das beste Zeichen für jede Band.&lt;/p&gt;
&lt;p&gt;Hier ein Video, das vermutlich nur ein paar Tage alt ist:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/Oaz0r4KVFEg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;

&lt;p&gt;Als drittes und letztes spielten Reel Big Fish, die ich das letzte Mal vor knapp 12 Jahren bei Rock am Ring gesehen hatte. Und sie rocken immernoch. Wer &lt;a href="http://www.youtube.com/playlist?list=PLD8BC3B86B26693A9&amp;amp;feature=view_all"&gt;Youtube&lt;/a&gt; kennt, den überrascht die Show nicht sonderlich. Aber den ganzen Laden 80 Minuten am Stück Tanzen lassen, das schaffen nicht viele. Am Ende waren wir schweiß- und biergetränkt und ziemlich fertig. Deswegen ist Reel Big Fish immernoch eine ganz heiße Empfehlung für alle tanzwütigen Skaliebhaber!&lt;/p&gt;
&lt;p&gt;Hier noch ein relativ aktuelles Video mit allen aktuellen Mitmusikanten:&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
 &lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/vginTFoksb0?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
 &lt;/div&gt;
</description></item><item><title>Ich verdanke Twitter meine Arbeitsstelle Wie ich über Twitter meine Arbeitsstelle fand</title><link>https://flowfx.de/blog/ich-verdanke-twitter-meine-arbeitsstelle/</link><pubDate>Wed, 25 Jan 2012 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/ich-verdanke-twitter-meine-arbeitsstelle/</guid><description>&lt;p&gt;&lt;del datetime="2012-01-26T15:38:07+00:00"&gt;Und&lt;/del&gt; das kam so&amp;hellip; Am 23. September 2011, mittlerweile dann doch recht verzweifelt, schickte ich einen &lt;a href="http://twitter.com/FlowFXx/statuses/117235531968036865"&gt;Tweet&lt;/a&gt; mit dem Text&lt;/p&gt;
&lt;blockquote&gt;
 Suche Arbeit. Bin Physiker. Kann alles. Plz RT.
&lt;/blockquote&gt;
&lt;p&gt;und einem Link zu meinem Lebenslauf. Neben ein paar ungläubigen Kommentaren, wie ich mit meinen Qualifikationen denn noch auf Jobsuche sein könnte, bekam ich eine Nachricht von der Chrissi (&lt;a href="http://www.twitter.com/pixelschwester"&gt;@Pixelschwester&lt;/a&gt;). Die Pixelschwester hatte ich vermutlich mal auf irgendeiner Veranstaltung der Mannheimer Webszene gesehen, kannte sie aber imgrunde nur über ihr Twitterkonto.&lt;/p&gt;
&lt;p&gt;Sie fragte mich, ob der Job irgendetwas mit Physik zu tun haben müsse, was ich selbstverständlich verneinte. Und schwupps, eine Woche später saß ich mit ihrem Freund Sven (&lt;a href="http://www.twitter.com/Aressar_"&gt;@Aressar_&lt;/a&gt;) im &lt;a href="http://www.cafevienna.de"&gt;Vienna&lt;/a&gt; und klönte mit ihm über die Firma, bei der er als SAP Berater angestellt ist. Auch wenn ich nichts mit SAP oder der geschäftlichen IT-Welt am Hut hatte, klang die Firma sympathisch genug, dass ich mich bewarb. Am Donnerstag nach meinem Treffen mit Sven hatte ich ein Vorstellungsgespräch, am Samstag drauf meinen Arbeitsvertrag im Briefkasten.&lt;/p&gt;
&lt;p&gt;Was können wir daraus lernen? Ich sage: Dadurch, dass ich die letzten ein, zwei Jahre recht aktiv in der Mannheimer Twitterwelt war und so, neben dem Gewinn von ein paar echten Freunden, mein Netzwerk von losen Bekanntschaften deutlich vergrößert habe, fiel mein Tweet auf fruchtbaren Boden. Er wurde 19x weitergeleitet, der Lebenslauf über 200x angeklickt. Viele Leute, die über ein oder zwei Ecken mit mir bekannt sind, erfuhren, dass ich Physiker bin und einen Job suchte. Dass irgendwer darunter in einer Firma arbeitete, die Physiker sucht, finde ich gar nicht mal ungewöhnlich.&lt;/p&gt;
&lt;p&gt;Was ich besonders interessant und erwähnenswert finde ist, dass sich diese ganze Geschichte auf lokaler Ebene abspielte. Es waren die Mannheimer Kontakte, die die Verbindung herstellten und keine komplett Fremden. Die Geschichte wäre so nie geschehen, wenn ich nicht viele Mannheimer Twitterer von Veranstaltungen wie dem &lt;a href="http://wmmrn.de/"&gt;Webmontag MRN&lt;/a&gt; kennen würde. Twitter ist demnach kein Ersatz für &lt;a href="http://www.urbandictionary.com/define.php?term=meatspace"&gt;Meatspace&lt;/a&gt;-Kontakte, aber eine wirkungsvolle Ergänzung.&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2012/01/Twitter-@FlowFXx-Suche-Arbeit.-Bin-Physiker-...-100023-510x379.png" alt="Jobsuchtweet von @FlowFXx" title="Twitter @FlowFXx Suche Arbeit. Bin Physiker ...-100023" width="510" height="379" class="aligncenter size-medium wp-image-890"&gt;</description></item><item><title>Neues Video: Die Felsen - Florida</title><link>https://flowfx.de/blog/neues-video-die-felsen-florida/</link><pubDate>Mon, 05 Dec 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/neues-video-die-felsen-florida/</guid><description>&lt;p&gt;[youtube=http://www.youtube.com/watch?v=Q7ibAszrnuY]&lt;/p&gt;</description></item><item><title>Danke, Twitter!</title><link>https://flowfx.de/blog/danke-twitter/</link><pubDate>Sat, 08 Oct 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/danke-twitter/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6222210527/" title="Danke, Twitter!"&gt;&lt;img src="https://farm7.static.flickr.com/6212/6222210527_43f1afb7dc.jpg" alt="Danke, Twitter! von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6222210527/"&gt;Danke, Twitter!&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Siehe auch: &lt;a href="http://twitter.com/#!/FlowFXx/status/117235531968036865"&gt;&lt;a href="http://twitter.com/#!/FlowFXx/status/117235531968036865"&gt;http://twitter.com/#!/FlowFXx/status/117235531968036865&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Die Felsen mit "Die Felsen" vom Album "Die Felsen"</title><link>https://flowfx.de/blog/die-felsen-mit-die-felsen-vom-album-die-felsen/</link><pubDate>Tue, 04 Oct 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-mit-die-felsen-vom-album-die-felsen/</guid><description>&lt;p&gt;[youtube=http://www.youtube.com/watch?v=IPhKjdZrvJc]&lt;/p&gt;</description></item><item><title>Altersunterschied</title><link>https://flowfx.de/blog/altersunterschied/</link><pubDate>Thu, 29 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/altersunterschied/</guid><description>&lt;p&gt;Preisfrage: Wie viele Jahre liegen zwischen den zwei Fotos?
&lt;p&gt;&lt;a href="https://flowfx.de/wp-content/uploads/2011/09/20100513-_MG_6066.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2011/09/20100513-_MG_6066-300x300.jpg" alt="" title="20100513-_MG_6066" width="200" height="200" class="alignleft size-thumbnail wp-image-796"&gt;&lt;/a&gt; &lt;a href="https://flowfx.de/wp-content/uploads/2011/09/IMG_20110807_032014.jpg"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2011/09/IMG_20110807_032014-300x300.jpg" alt="" title="IMG_20110807_032014" width="200" height="200" class="alignleft size-thumbnail wp-image-797"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Too Many Fish In The Sea</title><link>https://flowfx.de/blog/too-many-fish-in-the-sea/</link><pubDate>Sun, 18 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/too-many-fish-in-the-sea/</guid><description>&lt;p&gt;[youtube=http://www.youtube.com/watch?v=0gc-_l8pAsA]&lt;/p&gt;</description></item><item><title>live brass awsomeness</title><link>https://flowfx.de/blog/live-brass-awsomeness/</link><pubDate>Fri, 16 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/live-brass-awsomeness/</guid><description>&lt;h3&gt;The Cat Empire - The Chariot&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=HADggi7aE5c]&lt;/p&gt;
&lt;h3&gt;Youngblood Brass Band - Brooklyn&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=rz2rd6nuA5o]&lt;/p&gt;
&lt;h3&gt;Reel Big Fish - She Has A Girlfriend Now&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=-fF0-URNIOA]&lt;/p&gt;
&lt;h3&gt;Farin Urlaub Racing Team - Dermitder&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=2VK_vrCNXek]&lt;/p&gt;
&lt;h3&gt;Jan Delay &amp;amp; Disco No 1 - Jhonny &amp;amp; Klar&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=-ZznH3JRxDI]&lt;/p&gt;
&lt;h3&gt;The Skatalites - Guns Of Navarone&lt;/h3&gt;
&lt;p&gt;[youtube=http://www.youtube.com/watch?v=xHxEijSG7fg]&lt;/p&gt;</description></item><item><title>... und es kam schlimmer.</title><link>https://flowfx.de/blog/angst/</link><pubDate>Sun, 11 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/angst/</guid><description>&lt;p&gt;Am 11. September 2001 war ich gerade eine Woche als Wehrdienstleistender bei der Bundeswehr gewesen. Nachmittags, bei Unterrichtsende, berichtete unser Kompaniechef von den Ereignissen in New York. Mein erster Gedanke war: Das gibt Krieg.
&lt;p&gt;Ich hatte Angst. Angst, dass das Schlimmste erst noch kommt. Angst, vielleicht selbst darin involviert zu werden. Letzteres war natürlich Unsinn. Aber es war auch niemand da, der uns das sagte.&lt;/p&gt;
&lt;p&gt;Mit diesen Gedanken verbrachte ich den Abend mit meinen Kameraden vor dem Fernseher im Mannschaftsheim. Am folgenden Tag gab es einen Kasernen-Appell. Angesichts des Angriffs auf einen NATO-Partner rechneten wir mit allem. Wieder Angst. Am Ende war es nur eine Schweigeminute. Glücklicherweise.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Fettnäpfchen aller Orten</title><link>https://flowfx.de/blog/fettnapfchen-aller-orten/</link><pubDate>Sun, 11 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/fettnapfchen-aller-orten/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6135860453/" title="Fettnäpfchen aller Orten"&gt;&lt;img src="http://farm7.static.flickr.com/6161/6135860453_69621800c1.jpg" alt="Fettnäpfchen aller Orten von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6135860453/"&gt;Fettnäpfchen aller Orten&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Das Bild ist ein Screenshot der mobilen Version des &lt;a href="http://rheinneckarblog.de/2011/09/09/das-rhein-neckar-fernsehen-zeigt-ungeschnitte-opferbilder-und-diskreditiert-sich-damit-zum-trash-tv/" title="Der betreffende Artikel im Rheinneckarblog."&gt;Rheinneckarblogs&lt;/a&gt;. Die geschmacklose Kombination von Foto und Werbeanzeige ist vom Betreiber sicher nicht beabsichtigt. Solche Sachen passieren mit Algorithmen dummerweise aber.&lt;/p&gt;
&lt;p&gt;Kann man so etwas über die AdSense-Einstellungen überhaupt verhindern?&lt;/p&gt;</description></item><item><title>Aufkleber wecken Erinnerungen...</title><link>https://flowfx.de/blog/aufkleber-wecken-erinnerungen/</link><pubDate>Sat, 10 Sep 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/aufkleber-wecken-erinnerungen/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6131440937/" title="Aufkleber wecken Erinnerungen..."&gt;&lt;img src="http://farm7.static.flickr.com/6198/6131440937_c1be9fb68d.jpg" alt="Aufkleber wecken Erinnerungen... von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6131440937/"&gt;Aufkleber wecken Erinnerungen...&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;zum Beispiel an den Oktober 2006, als ich mit The Uplifters &amp;amp; Block Ice Horn Section als Vorband das erste Mal im Waldsee in Freiburg aufgetreten bin. Danach spielte Locomondo.&lt;/p&gt;</description></item><item><title>Things you don't see on TV</title><link>https://flowfx.de/blog/things-you-dont-see-on-tv/</link><pubDate>Sun, 14 Aug 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/things-you-dont-see-on-tv/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6041221652/" title="Things you don't see on TV"&gt;&lt;img src="http://farm7.static.flickr.com/6201/6041221652_86da729950.jpg" alt="Things you don't see on TV von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6041221652/"&gt;Things you don't see on TV&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;Jungbusch, Mannheim.&lt;/p&gt;</description></item><item><title>Super Heavy - Miracle Worker (or not, according to GEMA)</title><link>https://flowfx.de/blog/super-heavy-miracle-worker/</link><pubDate>Sat, 13 Aug 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/super-heavy-miracle-worker/</guid><description>&lt;p&gt;Da kommt ein oberfettkrasses Musikerkollektiv mit einem neuen Projekt daher. Es gibt ein teuer teuer produziertes Musikvideo dazu. Und in Deutschland kann man es nicht sehen.. &lt;em&gt;Wer&lt;/em&gt; bitte hat was davon? &lt;em&gt;Wer&lt;/em&gt;??
&lt;p&gt;Die Rede ist von &lt;strong&gt;Super Heavy&lt;/strong&gt;, der mir bis eben auch noch unbekannten Formation von &lt;strong&gt;A R Rahman&lt;/strong&gt;, &lt;strong&gt;Damian Marley&lt;/strong&gt; (!!!), &lt;strong&gt;Joss Stone&lt;/strong&gt;, &lt;strong&gt;Mick &lt;del datetime="2011-08-13T00:42:54+00:00"&gt;Jacker&lt;/del&gt; Jagger&lt;/strong&gt; und &lt;strong&gt;Dave Stewart&lt;/strong&gt;. Äh&amp;hellip; WOW!&lt;/p&gt;
&lt;p&gt;Da YouTube in Deutschland nur das Bekannte zeigt,&lt;/p&gt;
&lt;img src="https://flowfx.de/wp-content/uploads/2011/08/screenshot-gema-youtube-300x267.png" alt="Standard-GEMA-Text auf YouTube"&gt;
&lt;p&gt;müssen wir das Video wohl oder übel &lt;a href="http://4.hidemyass.com/ip-1/encoded/Oi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9TVRGN1QxTnc1T1U%3D&amp;amp;f=norefer"&gt;auf anderem Weg angucken&lt;/a&gt;. Ich hoffe, auf dem Album erscheinen noch ein paar knalligere Tracks. Trotzdem ist es schön, dass der Offbeat vielleicht wieder den Mainstream erreicht.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>The Uplifters go North</title><link>https://flowfx.de/blog/the-uplifters-go-north/</link><pubDate>Tue, 02 Aug 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/the-uplifters-go-north/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6000681693/" title="The Uplifters go North"&gt;&lt;img src="http://farm7.static.flickr.com/6016/6000681693_e69ef840d0.jpg" alt="The Uplifters go North von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/6000681693/"&gt;The Uplifters go North&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;</description></item><item><title>Merkbefreit</title><link>https://flowfx.de/blog/merkbefreit/</link><pubDate>Sun, 31 Jul 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/merkbefreit/</guid><description>&lt;div style="margin: 0 0 10px 0; padding: 0; font-size: 0.8em; line-height: 1.6em;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/5992364512/" title="Merkbefreit"&gt;&lt;img src="http://farm7.static.flickr.com/6002/5992364512_3f32536d28.jpg" alt="Merkbefreit von FlowFXx"&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="margin: 0;"&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/5992364512/"&gt;Merkbefreit&lt;/a&gt;, Foto von &lt;a href="http://www.flickr.com/photos/flowfxx/"&gt;FlowFXx&lt;/a&gt; auf Flickr.&lt;/span&gt;&lt;/div&gt;</description></item><item><title>Kein Harry Potter für mich. Noch nicht.</title><link>https://flowfx.de/blog/kein-harry-potter-fur-mich-noch-nicht/</link><pubDate>Sun, 24 Jul 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/kein-harry-potter-fur-mich-noch-nicht/</guid><description>&lt;p&gt;Toll gemacht, liebe Filmindustrie! Ich habe soeben zum allerersten Mal einen lange geplanten und freudig erwarteten Kinobesuch abgesagt. &lt;a href="http://www.cineplex.de/kino/tree/node2001/city31/" title="Eintrittspreise von Cinemaxx und Cineplex in Mannheim"&gt;11,40€&lt;/a&gt; will ich einfach nicht für einen normalen, zweistündigen Film in 2D zahlen.
&lt;p&gt;Als Konsequenz werde ich nun auf die Privatkopie der DVD eines Freundes eines Freundes eines Freundes warten müssen, um den Film dann auf der häuslichen Couch mit angemessen teuren Snacks und Bier anzuschauen. Falls es mittlerweile einen webbasierten Dienst gibt, mit dem ich in Deutschland aktuelle Filme in Originalfassung für aktzeptables Geld angucken kann, dann bitte ich um entsprechende Hinweise und korrigiere diesen Plan mit Freuden!&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Aus aktueller Erinnerung</title><link>https://flowfx.de/blog/aus-aktueller-erinnerung/</link><pubDate>Fri, 22 Jul 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/aus-aktueller-erinnerung/</guid><description>&lt;p&gt;Diese Fährfahrt hat mir 2005 drei der schlimmsten Stunden meines Lebens eingebracht. Am Ende bin ich komplett verfroren und mageninhaltsfrei mit meinem Rad von Deck gewankt und war froh, direkt am Anleger ein Café mit Kaffee zu finden. Boote sind einfach nichts für mich.
&lt;p&gt;Dass Google Maps aber Fährfahrten anzeigt, begeistert mich - auch wenn es wahrscheinlich schon uralt ist!&lt;/p&gt;
&lt;iframe width="480" height="400" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.de/maps?saddr=Bodo,+Norwegen&amp;amp;daddr=67.678348,13.3174973+to:Moskenes,+Norwegen&amp;amp;hl=de&amp;amp;sll=67.589775,13.562715&amp;amp;sspn=1.028333,4.216003&amp;amp;geocode=FeSdAgQdNM3bACl98WNb9RDfRTFTPF2yk1t4jg%3BFYywCAQdeTXLACkj7aQyVkreRTG6h9SbjHfX0w%3BFaobDAQdcAbHAClt4JxEUDveRTHPz-_haN_woQ&amp;amp;mra=dpe&amp;amp;mrsp=1&amp;amp;sz=9&amp;amp;via=1&amp;amp;t=h&amp;amp;ie=UTF8&amp;amp;ll=67.617589,13.897705&amp;amp;spn=1.67367,5.262451&amp;amp;z=7&amp;amp;output=embed"&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;br&gt;&lt;small&gt;&lt;a href="http://maps.google.de/maps?saddr=Bodo,+Norwegen&amp;amp;daddr=67.678348,13.3174973+to:Moskenes,+Norwegen&amp;amp;hl=de&amp;amp;sll=67.589775,13.562715&amp;amp;sspn=1.028333,4.216003&amp;amp;geocode=FeSdAgQdNM3bACl98WNb9RDfRTFTPF2yk1t4jg%3BFYywCAQdeTXLACkj7aQyVkreRTG6h9SbjHfX0w%3BFaobDAQdcAbHAClt4JxEUDveRTHPz-_haN_woQ&amp;amp;mra=dpe&amp;amp;mrsp=1&amp;amp;sz=9&amp;amp;via=1&amp;amp;t=h&amp;amp;ie=UTF8&amp;amp;ll=67.617589,13.897705&amp;amp;spn=1.67367,5.262451&amp;amp;z=7&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;Größere Kartenansicht&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Hey You! What song are you listening to, Mannheim?</title><link>https://flowfx.de/blog/hey-you-what-song-are-you-listening-to-mannheim/</link><pubDate>Mon, 18 Jul 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/hey-you-what-song-are-you-listening-to-mannheim/</guid><description>&lt;p&gt;httpvh://www.youtube.com/watch?v=bFmz1G05gXA&lt;/p&gt;</description></item><item><title>Mein Badezimmertape</title><link>https://flowfx.de/blog/mein-badezimmertape/</link><pubDate>Fri, 24 Jun 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/mein-badezimmertape/</guid><description>&lt;p&gt;Zur Gründung von &lt;a href="http://www.myspace.com/blockiceuplifters" title="The Uplifters &amp;amp; Block Ice Horn Section bei MySpace"&gt;The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt;, die damals noch anders hießen - nämlich gar nicht, schenkte mir Drummer Martin ein Mix-Tape mit Reggae-Tunes. Ich hatte von dem guten Zeug ja noch überhaupt keine Ahnung! Spätestens seit er mir als Umzugsgeschenk 2007 einen passenden Kassettenspieler geschenkt hatte, lief das Tape fast ohne Ausnahme in meinem Badezimmer rauf und runter.
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/flowfxx/5866102290/" title="Mein Badezimmertape von FlowFXx bei Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2685/5866102290_6e402a2860_m.jpg" width="240" height="180" alt="Mein Badezimmertape"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Das hört man. Manche Passagen bringen mittels Tempowechsel mit einhergehender Modulation ganz neue Aspekte der Songs hervor! Eines Tages, fürchte ich, wird das Tape reißen, und ich sitze dann blöd da. Deswegen habe ich mithilfe von Shazam eine Youtube-Playliste erstellt, die hoffentlich länger hält. Leider konnte Shazam nicht alle Lieder erkennen, und natürlich gibt&amp;rsquo;s nicht bei allen Songs die Riddims oder die Studioversion. Spaß machen tut&amp;rsquo;s trotzdem!&lt;/p&gt;
&lt;p&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/p/3A73C2A7E957486D?hl=de_DE&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/p/3A73C2A7E957486D?hl=de_DE&amp;amp;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;Martin spielt heute Schlagzeug bei &lt;a href="http://www.crimekillingjokerman.de" title="Offizielle Webseite von crime killing joker man"&gt;crime killing joker man&lt;/a&gt; und der &lt;a href="http://www.myspace.com/dubtub" title="Dub Tub bei MySpace"&gt;Dub Tub Backing Band&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Moneyball</title><link>https://flowfx.de/blog/moneyball/</link><pubDate>Sat, 18 Jun 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/moneyball/</guid><description>&lt;p&gt;&lt;em&gt;Moneyball&lt;/em&gt; von Michael Lewis ist ein Sachbuch über Baseball. Es handelt im wesentlichen davon, dass Baseballteams über Jahrzente die falschen Statistiken herangezogen haben, um Spieler einzuschätzen. Es handelt von Billy Beane, Manager der &lt;a href="http://oakland.athletics.com" title="Offizielle Webseite der Oakland Athletics"&gt;Oakland A&amp;rsquo;s&lt;/a&gt;, der zusammen mit einem jungen Statistiknerd ein Team ohne Geld zu einem Siegerteam formt.&lt;/p&gt;
&lt;p&gt;Für Baseballfans wie mich ist das Buch selbst hochspannend, zumal einer der heutigen Stars meiner geliebten Red Sox eine prominente Rolle darin spielt: &lt;em&gt;The Greek God Of Walks&lt;/em&gt; - &lt;a href="http://en.wikipedia.org/wiki/Kevin_Youkilis" title="Wikipedia about Kevin Youkilis"&gt;Kevin Youkilis&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nun passiert, worauf viele schon lange gewartet haben. Die Verfilmung des Buches kommt ins Kino, mit niemand anderem als Brad Pitt in der Hauptrolle. Kurz gesagt: Wohooo!! Ich freue mich! :-)&lt;/p&gt;
&lt;iframe width="480" height="303" src="http://www.youtube-nocookie.com/embed/0Vg0qjUlQt0?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Munster mit U</title><link>https://flowfx.de/blog/munster-mit-u/</link><pubDate>Sat, 18 Jun 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/munster-mit-u/</guid><description>&lt;p&gt;Ich komme aus Munster. Munster mit U. Ganz einfach zu merken, erinnert man sich an die gleichnamige Fernsehserie:
&lt;iframe width="480" height="390" src="http://www.youtube-nocookie.com/embed/GilAVamn1xU?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Ein großer Dank gilt &lt;a href="http://www.twitter.com/flederrattie" title="Flederrattie bei Twitter"&gt;Flederrattie&lt;/a&gt;, die dieses alte Bild ausgekramt hat:&lt;/p&gt;
&lt;img src="http://asset.soup.io/asset/1993/5234_cf19.jpeg" alt="Flo aus Munster" width="360" align="center"&gt;
&lt;p&gt;&lt;a href="http://www.twitter.com/flederrattie" title="Quelle in Flederratties Suppe"&gt;Original hier&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>Der Wurstsalat im Vienna braucht mehr Wurst</title><link>https://flowfx.de/blog/der-wurstsalat-im-vienna-braucht-mehr-wurst/</link><pubDate>Thu, 02 Jun 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/der-wurstsalat-im-vienna-braucht-mehr-wurst/</guid><description>&lt;p&gt;Das &lt;a href="http://www.cafevienna.de" title="Das Café Vienna in Mannheim"&gt;Café Vienna&lt;/a&gt; in Mannheim ist ein toller Laden! Gute Bierauswahl, Club-Mate, Fritzbrause und günstiges, schmackhaftes Essen. Besonders die Burger mit den guten Pommes haben es mir angetan.
&lt;p&gt;Bei meinem letzten Besuch habe ich zur Abwechslung mal den Wurstsalat bestellt. An und für sich ist er sehr lecker. Aber &lt;strong&gt;es fehlt die Wurst!!&lt;/strong&gt;. Natürlich nicht ganz. Bei dem ganzen Gemüse muss man teilweise aber danach suchen.&lt;/p&gt;
&lt;p&gt;Mein heutiger Versuch, einen Verbesserungsvorschlag an das Personal zu richten, wurde mit Schulterzucken entgegengenommen. Es gäbe wohl einen Meckerkasten, da stehe aber &amp;ldquo;Müll&amp;rdquo; drauf. Nur eine Häufung von Beschwerden Schrägstrich Vorschlägen würde überhaupt irgendwann beim Chef landen.&lt;/p&gt;
&lt;p&gt;Deshalb bitte ich alle euch Viennagänger:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verlangt mehr Wurst im Wurstsalat!&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Gemeinsam sind wir stark! oder so.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Kontrollverlust ist...</title><link>https://flowfx.de/blog/kontrollverlust-ist/</link><pubDate>Tue, 10 May 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/kontrollverlust-ist/</guid><description>&lt;p&gt;... auf den Tweet
[blackbirdpie url="http://twitter.com/#!/FlowFXx/status/58984647601815552"]
&lt;p&gt;nicht mehr antworten zu können als:&lt;/p&gt;
&lt;/p&gt;&lt;blockquote&gt;"Aber jetzt weiß ja jeder, dass wir verwandt sind!?"&lt;/blockquote&gt;</description></item><item><title>Online-Werkzeuge für Bandinterna</title><link>https://flowfx.de/blog/online-werkzeuge-fur-bandinterna/</link><pubDate>Sat, 07 May 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/online-werkzeuge-fur-bandinterna/</guid><description>&lt;p&gt;Ich bin seit 13 Jahren in mehr oder minder großen Bands unterwegs. Die Koordination von Informationen, Dokumenten und Dateien ist dabei eine Aufgabe für sich. In den letzten Jahren haben sich aber ein paar Werkzeuge hervorgetan, ohne die ich mit keiner Band mehr arbeiten würde. Für die, die sie schon kennen, halte ich keine Überraschungen bereit. Für alle anderen habe ich sie hier kurz aufgeschrieben. Ich hoffe, es hilft.
&lt;/p&gt;&lt;h3&gt;Dropbox&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.dropbox.com" title="Webseite von Dropbox"&gt;Dropbox&lt;/a&gt; ist ein Synchronisationsdienst, der es ermöglicht, den Inhalt eines bestimmten Ordners auf den Rechnern aller Bandmitglieder synchron zu halten. Wird auf einem Rechner eine Datei geändert oder hinzugefügt, passiert dies automatisch auch auf den Rechnern aller anderen, die den Ordner abonniert haben.&lt;/p&gt;
&lt;p&gt;Die Möglichkeiten, die sich damit ergeben sind vielfältig. Wichtigster Aspekt daran ist, dass alle Bandmitglieder &lt;em&gt;immer&lt;/em&gt; die gleichen Versionen aller Dateien und Materialien haben.&lt;/p&gt;
&lt;p&gt;Dokumente, die erfahrungsgemäß gut in den Dropbox-Ordner passen sind beispielsweise Pressematerialen und der Technical Rider. Wird ein Bandfoto, Schriftzug oder Poster gebraucht, so kann gleich jeder darauf zugreifen. Gut verteilen lassen sich auch Proberaumaufnahmen und Ruffmixes aus dem Studio. So entfallen CD-Brennaktionen oder riesige E-Mail-Anhänge.&lt;/p&gt;
&lt;p&gt;Kostenlos gibt es bei Dropbox 2GB nutzbaren Speicherplatz. Das ist zu wenig, um ein Archiv aller Bandmaterialen und Mitschnitte zu führen. So muss man ab und an mal aufräumen. Wenn ihr &lt;a href="http://db.tt/7WITxuJ" title="Dropbox Affiliate Link"&gt;auf diesen Link zu Dropbox&lt;/a&gt; klickt, bekommt ihr aber immerhin schonmal 250Mb mehr. Und ich auch.&lt;/p&gt;
&lt;p&gt;Ein beliebten Fallstrick gibt es für Anfänger: Wenn ihr eine Datei in einen anderen Ordner als den gemeinsamen Band-Dropboxordner legen wollt, dann verschiebt ihn nicht, sondern kopiert ihn. Sobald eine Datei auf einem Rechner gelöscht wird - und das wird sie, wenn ihr sie verschiebt - dann passiert das gleiche auch auf den Rechnern eurer Kollegen. Sollte euch das passiert sein und der betreffende Übeltäter ist schon im Wochenende, dann könnt ihr die Datei aber auch online wiederherstellen.&lt;/p&gt;
&lt;h3&gt;Interne E-Mail-Diskussionsliste&lt;/h3&gt;
&lt;p&gt;E-Mail ist seit vielen Jahren das Kommunikationswerkzeug Nummer 1 für alle meine Bands. Mittlerweile wissen die meisten Zeitgenossen auch, damit umzugehen.&lt;/p&gt;
&lt;p&gt;Die Steigerung eines Verteilers, den jeder selbst in seinem E-Mail-Programm einstellen muss, ist einen eigene Mailingliste. Insbesondere bei großen Verteilern hilft es sehr, eine einzelne E-Mail-Adresse zu haben, die dann die Nachricht an alle Bandmitglieder verteilt. Der einzige Schwachpunkt ist dann noch der Mailinglisten-Admin, der den zentralen Verteiler aktuell halten muss :)&lt;/p&gt;
&lt;p&gt;Mein aktueller Webhoster &lt;a href="http://df.eu" title="DomainFactory"&gt;DomainFactory&lt;/a&gt; bietet im Backend die Möglichkeit, beliebige E-Mail-Adressen als Mailingliste zu nutzen. Andere Hoster werden das ähnlich anbieten. Eine Alternative bieten Dienste wie beispielsweise &lt;a href="http://groups.google.com" title="Google Groups"&gt;Google Groups&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Chat&lt;/h3&gt;
&lt;p&gt;Neben dem Telefon ist ein Chat die zweite direkte, superschnelle Möglichkeit, sich abzusprechen. Kurze Nachfragen, direkte Terminabsprachen oder manchmal auch ein bisschen Lästern. Dafür taugt chatten gut.&lt;/p&gt;
&lt;p&gt;Ob &lt;a href="http://de.wikipedia.org/wiki/Extensible_Messaging_and_Presence_Protocol" title="XMPP bei Wikipedia"&gt;XMPP&lt;/a&gt; aka Jabber, ICQ oder Skype. Hauptsache ihr nutzt zumindest &lt;em&gt;ein&lt;/em&gt; gemeinsames Protokoll. Auch der Facebook-Chat ist nicht zu verachten. Hat ihn doch sowieso jeder (ihr seid doch Musiker, oder?) und lässt sich auch über externe Programme wie &lt;a href="http://www.pidgin.im" title="Pidgin Chat Client"&gt;Pidgin&lt;/a&gt; oder &lt;a href="http://adium.im" title="Adium Chat Client for OSX"&gt;Adium&lt;/a&gt; (für unsere Mac-Freunde) ansprechen.&lt;/p&gt;
&lt;h3&gt;Gigdoodle&lt;/h3&gt;
&lt;blockquote&gt; 
 hei Jungs. wir haben ne Anfrage für den 5.6. - habt ihr da Zeit? 
&lt;/blockquote&gt;
&lt;p&gt;Solche E-Mails habe ich schon viel zu häufig geschrieben und vor allem gelesen. Ein zentraler Kalender, in dem jeder (!) regelmäßig (!!) seine Abwesenheiten, feste Konzerttermine sowie auch nur eventuelle Termine einträgt, vereinfacht die Terminfindung enorm. Absagen für Giganfragen können direkt erledigt werden, wenn jemand als abwesend eingetragen ist. Zusagen werden immerhin schonmal vereinfacht. Manchmal hat man auch vielleicht nicht alle anfallenden Gigs und Proben im Kopf bzw. im eigenen
Kalender. Da ist &lt;em&gt;eine&lt;/em&gt; zentrale Stelle - ähnlich wie mit der Dropbox - sehr hilfreich.
&lt;p&gt;Selbst habe ich &lt;a href="http://www.gigdoodle.ch" title="Gigdoodle"&gt;Gigdoodle&lt;/a&gt; noch nicht benutzt. &lt;a href="http://diefelsen.de" title="Webseite der Ludwigshafener Rockband Die Felsen"&gt;Die Felsen&lt;/a&gt; setzen es aber seit längerem erfolgreich ein und haben mir den Nutzen bestätigt.&lt;/p&gt;
&lt;/p&gt;&lt;h3&gt;Schluss&lt;/h3&gt;
&lt;p&gt;Jedes Werkzeug funktioniert nur, wenn ihr es gerne einsetzt. Also probiert die Sachen selbst aus, und schaut, was euch taugt! Und wenn ihr nützliche Sachen findet, die hier nicht stehen, ihr aber andauernd für eure interne Bandarbeit nutzt, dann schreibt sie bitte in die Kommentare! Danke.&lt;/p&gt;</description></item><item><title>Die Parodie der Parodie</title><link>https://flowfx.de/blog/die-parodie-der-parodie/</link><pubDate>Wed, 27 Apr 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-parodie-der-parodie/</guid><description>&lt;p&gt;Wer meine Abneidung gegenüber der Bühnenshow der &lt;a href="http://www.chucks-online.de/" title="Offizielle Chucks-Webseite"&gt;Chucks&lt;/a&gt; allein aus den Worten &lt;a href="https://flowfx.de/blog/chucks-ein-verriss/" title="Blogeintrag über das Konzert der Chucks am 19.03.2011 in Ludwigshafen"&gt;dieses Eintrags&lt;/a&gt; nicht nachvollziehen konnte, dem sei das folgende Video von &lt;a href="http://www.euremuetter.de/" title="Webseite von Eure Mütter"&gt;Eure Mütter&lt;/a&gt; empfohlen.
&lt;p&gt;Abgesehen von der überzogenen Ansage und dem deutschen Text, habe ich die Chucks genau so in Erinnerung. Danke an Sören für den Tipp!&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/deHQwzGpPzk?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>(Some of) the best of Two-Tone</title><link>https://flowfx.de/blog/some-of-the-best-of-two-tone/</link><pubDate>Thu, 31 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/some-of-the-best-of-two-tone/</guid><description>&lt;h3&gt;Madness - One Step Beyond&lt;/h3&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/N-uyWAe0NhQ?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h3&gt;The Specials - A Message To You Rudy&lt;/h3&gt;
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/TGDQ85Dg-ss?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h3&gt;The Mighty Mighty Bosstones - The Impression That I Get&lt;/h3&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/xaGGUTbP8FY?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h3&gt;The Busters - Ruder Than Rude&lt;/h3&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/IAaIG7UvIyw?rel=0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>H-Blockx 2000</title><link>https://flowfx.de/blog/hblockx-2000/</link><pubDate>Wed, 30 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/hblockx-2000/</guid><description>&lt;p&gt;Auf dem Heimweg vom heutigen &lt;a href="http://www.diefelsen.de" title="Offizielle Webseite der Felsen"&gt;Felsen&lt;/a&gt;konzert stolperte ich über ein Album der &lt;a href="http://www.hblx.de" title="official home of the h-blockx"&gt;H-Blockx&lt;/a&gt;, dass sich auf meinem mobilem Musikabspielgerät aka Telefon versteckt hatte. Das erinnerte mich an eines der geilsten (nein, ich finde kein besseres Wort dafür) Konzerte, dass ich jemals erleben durfte: Die H-Blockx bei Rock am Ring &lt;del datetime="2011-03-30T21:43:09+00:00"&gt;2000&lt;/del&gt; 2001.
&lt;p&gt;Während Alanis Morissette auf der Hauptbühne vor schwach besetztem Publikum spielte, war der Platz vor der Alternastage dicht gepackt. Wer nicht mithüpfte, ging unter. Von vorne bis hinten. Von irgendwo gerüchtete es auch, dass es wahrscheinlich das letzte Konzerte der Band sein würde.&lt;/p&gt;
&lt;p&gt;Kurz: es war großartig! Live-Bilder finde ich natürlich gerade nicht, nur Aufnahmen von ihrem letztjährigen Auftritt auf der Hauptbühne. Irgendwas sagt mir aber, dass die Sänger zehn Jahre vorher mit mehr Elan auf der Bühne standen.&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/ZIV_7lRXJsk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Halb- oder Ganzton? Der Sleng Teng Riddim</title><link>https://flowfx.de/blog/sleng-teng-riddim/</link><pubDate>Tue, 29 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sleng-teng-riddim/</guid><description>&lt;p&gt;Eine meiner großen Fragen an die Musikgeschichte wurde soeben aufgelöst, als mein Freund &lt;a href="http://www.myspace.com/samson_locks" title="Samsons Myspace-Seite"&gt;Samson&lt;/a&gt; mir folgende SMS schickte:&lt;/p&gt;
&lt;blockquote&gt;Sleng Teng ist mit 'nem Halbton-Schritt am Anfang offiziell - hab's
 gerade von 'ner Quelle bestätigt gekriegt, die's wissen muß - der Kerl
 ist immer im Studio von King Jammy abgehangen zu der Zeit. Ein
 Mysterium weniger ;-)&lt;/blockquote&gt;
&lt;p&gt;Der &lt;a href="http://en.wikipedia.org/wiki/Sleng_Teng" title="Wikipediaartikel zum Sleng Teng (EN)"&gt;Sleng Teng Riddim&lt;/a&gt; von &lt;a href="http://en.wikipedia.org/wiki/King_Jammy" title="King Jammy in der Wikipedia (EN)"&gt;King Jammy&lt;/a&gt; ist der erste digitale Riddim der Reggaegeschichte, zu allererst besungen von &lt;a href="http://en.wikipedia.org/wiki/Wayne_Smith_(musician)" title="Wikipedia über Wayne Smith (EN)"&gt;Wayne Smith&lt;/a&gt;:
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/Wjw7m-BKmQ8?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;h&lt;/p&gt;
&lt;p&gt;Eingespielt wurde er mit einem Casio MT-40, so etwa wie hier:&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/56hVoZ93QkA?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Wenn man ihn selbst spielt, stellt sich die Frage: Ist das erste Intervall ein Halb- oder ein Ganzton? Beides klingt für sich gesehen ziemlich genial gut. Ich war immer für nen Ganzton. So richtig raushören konnte ich es nämlich nie. Zumal diverse Covers ganz sicher einen Ganzton beinhalten.&lt;/p&gt;
&lt;p&gt;Nun ist es also geklärt und ich darf meine Lieblingsversion des Sleng Teng Riddims präsentieren, selbstverständlich mit einem großartigen Bläserriff:&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/wu30O_ZL2Gw?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Otis Redding live beim Monterey Pop Festival 1967</title><link>https://flowfx.de/blog/otis-redding-live-beim-monterey-pop-festival-1967/</link><pubDate>Fri, 25 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/otis-redding-live-beim-monterey-pop-festival-1967/</guid><description>&lt;p&gt;&amp;lt;
&lt;p&gt;p&amp;gt;17 Minuten Otis Redding pur.&lt;/p&gt;
&lt;/p&gt;&lt;h4&gt;Shake und Respect&lt;/h4&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/BHXutgxpjgU?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h4&gt;I've Been Loving You Too Long und Satisfaction&lt;/h4&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/YBiUFhYMu2s?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h4&gt;Try A Little Tenderness&lt;/h4&gt;
&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/wX2vcxO-0_8?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;An den Instrumenten: Booker T. &amp;amp; The MGs&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Booker T. Jones - Keyboards&lt;/li&gt;&lt;li&gt;Al Jackson - Schlagzeug&lt;/li&gt;&lt;li&gt;Steve Cropper - Gitarre&lt;/li&gt;&lt;li&gt;Donald 'Duck' Dunn - Bass&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;und The Mar-Keys&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Wayne Jackson - Trompete&lt;/li&gt;&lt;li&gt;Andrew Love - Saxophon&lt;/li&gt;&lt;li&gt;Floyd Newman - Saxaphon&lt;/li&gt;&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Fat Freddy's Drop - Mittänzer gesucht</title><link>https://flowfx.de/blog/fat-freddys-drop-mittanzer-gesucht/</link><pubDate>Tue, 15 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/fat-freddys-drop-mittanzer-gesucht/</guid><description>&lt;p&gt;Ich bin großer Freund der Privatkopie bzw. der dezentralen Sicherung von Tonträgern. Ohne die hätte ich mich wahrscheinlich nie mit einer Band beschäftigt, die auf der Bühne gänzlich ohne Schlagzeug und Bass auskommt. Und ich hätte sie mir letzten Sommer beim Chiemsee Reggae Summer eventuell nicht angeschaut.
&lt;p&gt;Das, was die Jungs von Fat Freddy&amp;rsquo;s Drop im August auf die Bühne gebracht haben, hat mich dann aber so weggefegt, dass mir danach sogar Anthony B. schlichtweg egal war: 70 Minuten pure Musikzelebration. Ich war den Rest des Abends komplett geflashed, glücklich.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.fkpscorpio.com/kuenstler.asp?nummer=187027"&gt;Im Juni spielt Fat Freddy&amp;rsquo;s Drop wieder in Deutschland&lt;/a&gt;. Das kann ich mir nicht entgehen lassen, weswegen ich nun Mittänzer und -fahrer für das Konzert am 27.06. in Offenbach suche. Wer mag?&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/EDVogNbo3Cg?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Spülmaschine. Physikerin. CERN.</title><link>https://flowfx.de/blog/spulmaschine-physikerin-cern/</link><pubDate>Thu, 10 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/spulmaschine-physikerin-cern/</guid><description>&lt;p&gt;[blackbirdpie url="http://twitter.com/#!/Scytale/status/45615130502889472"]&lt;/p&gt;</description></item><item><title>Die Felsen - Rollender Stein</title><link>https://flowfx.de/blog/die-felsen-rollender-stein/</link><pubDate>Sun, 06 Mar 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-rollender-stein/</guid><description>&lt;p&gt;Die vier Jungs von &lt;a href="http://www.diefelsen.de" title="zur offiziellen Felsenwebseite"&gt;den Felsen&lt;/a&gt; sind nicht müde zu kriegen. Letzte Nacht haben sie ihr neues Musikvideo veröffentlicht. "Rollender Stein" ist damit das erste komplett veröffentlichte Lied des neuen Albums, was da ganz einfach auch "Die Felsen" heißen wird.
&lt;p&gt;Produktion, Regie, Kamera und die Idee zum Video kommt im übrigen von dem immer noch unverlinkbaren Sebastian Ladwig. Bravo! kann ich da nur sagen.&lt;/p&gt;
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/DQa8VhhEKaU?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Die Felsen – ein kleines Einladungsvideo</title><link>https://flowfx.de/blog/die-felsen-ein-kleines-einladungsvideo/</link><pubDate>Sun, 27 Feb 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-ein-kleines-einladungsvideo/</guid><description>&lt;p&gt;Je besser die Zutaten, desto besser das Endprodukt. Ohne großartige Fotographien und ebenso toll produzierte Tonaufnahmen hätte das folgende &lt;a href="http://en.wikipedia.org/wiki/Ken_Burns_effect-Video" title="Ken-Burns-effect bei Wikipedia [EN]"&gt;Ken-Burns&lt;/a&gt;-Video so nie entstehen können. Erwähnung finden deshalb vor allem &lt;a href="http://www.twitter.com/scytale" title="Tim Weber bei Twitter"&gt;Tim "Scytale" Weber&lt;/a&gt; und &lt;a href="http://www.dashaus-lu.de/info/team.html" title="Holger Wieneke vom Kulturzentrum DasHaus in Ludwigshafen"&gt;Holger Wieneke&lt;/a&gt;. Aber jetzt erstmal hier klicken!
&lt;iframe title="YouTube video player" width="480" height="300" src="http://www.youtube-nocookie.com/embed/gGc7RGEOx3E?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;Die beworbene Veranstaltung findet sich natürlich auch &lt;a href="http://on.fb.me/felsen-cd" title="Facebookveranstaltung zur CD-Veröffentlichungsfeier der Felsen"&gt;bei Facebook&lt;/a&gt;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>Mein Marathon 2007</title><link>https://flowfx.de/blog/freiburg-marathon-2007/</link><pubDate>Sun, 27 Feb 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/freiburg-marathon-2007/</guid><description>&lt;p&gt;Ich habe mal in den Tiefen des Netzes gekramt und einen alten Text von mir ausgegraben. Geschrieben habe ich ihn eine oder zwei Wochen nach meinem ersten, und bisher einzigen, Marathonlauf 2007 in Freiburg. Der Text war bisher nur auf der &lt;a href="http://marathon.pitsch-aktiv.de/freiburg.html" title="Freiburgmarathobericht von Udo"&gt;Seite meines damaligen Mitläufers Udo&lt;/a&gt; zu finden. Vermutlich geht es nur mir so, aber mir steigen beim nochmaligen Lesen die Gefühle ganz ganz hoch! Nicht-Läufer könnten demnach etwas irritiert sein. Los geht's:
&lt;/p&gt;&lt;h4&gt;Laufbericht vom Freiburg Marathon 2007&lt;/h4&gt;
&lt;p&gt;Mein Bericht hätte auch gut und gerne viermal so lang werden können, so viele Gedanken schwirren mir immer noch im Kopf herum. Immer und immer wieder bin ich den Lauf in dieser Woche durchgegangen. Und es ist immer noch ein affenstarkes Gefühl!&lt;/p&gt;
&lt;h4&gt;Vorbereitung&lt;/h4&gt;
&lt;p&gt;Frei nach Herbert Steffny. Nach einem ordentlichen Winter mit 30-60 Wochenkilometern bin ich im Januar in den 10-Wochen 3:30er Plan eingestiegen. Na ja, ich habe mich grob daran orientiert. Das einzige, was davon übrig blieb, waren die Wochenkilometer und die Tempodauerläufe. An langen Läufen kamen zusammen: 2x26, 28, 2x32 - der letzte davon zwei Wochen vor dem Wettkampf mit 12,5km Endbeschleunigung.&lt;/p&gt;
&lt;h4&gt;Zielzeit&lt;/h4&gt;
&lt;p&gt;Wäre eine Geschichte für sich. Als belegbare Vorraussetzungen bringe ich eigentlich nur die 20km in 1:34:07 aus Celle mit. Macht knapp 1:40 für den HM, also 3:30 für den Marathon plus 15 Minuten Debütantenaufschlag. Ganz abgesehen davon, dass auch über 100 Höhenmeter zu bewältigen sind und wir in die Halbmarathon-Läufer hinein laufen werden.&lt;/p&gt;
&lt;h4&gt;Die letzten zwei Wochen&lt;/h4&gt;
&lt;p&gt;Bauchschmerzen, Verstopfung, Appetitlosigkeit. Ich denke sogar an Übertraining. Laufen macht jedenfalls keinen Spaß mehr. Gut, dass das am Mittwoch vor dem Marathon vorbei ist. Am Abend vor dem Start feiern wir die Hochzeit von guten Freunden. Zwar gibt es nichts Gescheites zu essen, aber ich bin gut abgelenkt und falle um kurz nach Mitternacht hundemüde ins Bett.&lt;/p&gt;
&lt;h4&gt;2 Stunden vor dem Start&lt;/h4&gt;
&lt;p&gt;Ich trete aus dem Haus und treffe sofort auf Udo und seine Frau Ines. Wir unterhalten uns nett und schlendern ein wenig über die Marathon-Messe. Draußen ist es noch ziemlich kalt, und auch drinnen zittere ich ein wenig. Oder ist das die Aufregung? Da Ines unsere Taschen abgeben wird, können wir unsere Jacken bis kurz vorm Start anbehalten. Dann folgt das eigentlich nicht mehr geplante Einlaufen, da wir noch ein paar hundert Meter Umweg zum Start zurücklegen müssen. Kaum stehen wir in der 3:45er Region fällt auch schon der Startschuss.&lt;/p&gt;
&lt;h4&gt;Km1-2&lt;/h4&gt;
&lt;p&gt;Mein offizielles Ziel von 3:45 war nur Vorwand. Ich schiele auf 3:40 und will deshalb den ersten HM mit einer 5:15 Pace beginnen. Udo braucht einen Bremsläufer und so laufen wir den ganzen Lauf gemeinsam. Auf den ersten zwei Kilometern verlieren wir sicher 50 Sekunden auf den Zielschnitt, aber lieber so als anders herum.&lt;/p&gt;
&lt;h4&gt;Km 3&lt;/h4&gt;
&lt;p&gt;Nach der anfänglichen 4-spurigen Läuferautobahn wird die Strecke schmaler, wir erreichen den tiefsten Punkt des Laufes, die Strecke steigt leicht an. Wir hängen jetzt im Gedränge des 4:00-Pace-Läufers fest, aber die Geschwindigkeit passt.&lt;/p&gt;
&lt;h4&gt;Km 4-5&lt;/h4&gt;
&lt;p&gt;Im Bereich der ersten Wasserstelle zieht Udo das Tempo etwas an, und wir gehen an der 4:00 Stunden Meute vorbei.&lt;/p&gt;
&lt;h4&gt;Km 5,5&lt;/h4&gt;
&lt;p&gt;Vor der Blauen Brücke erwartet mich meine Schwester mit meiner ersten persönlichen Trinkflasche. Erstmal nur Wasser mit etwas Salz. Ein ausgeklügeltes System von Freunden soll mich unterwegs mit genügend Zuckerwasser versorgen. Iso-Drinks vertrage ich noch nicht. Üben!&lt;/p&gt;
&lt;h4&gt;Innenstadt&lt;/h4&gt;
&lt;p&gt;Erstaunlich schnell machen wir Zeit auf den geplanten Durchschnitt gut. Die Kilometerzeiten schwanken zwischen knapp unter 5 Minuten und 5:30. Die leichten Steigungen überall machen es schwer, konstant zu laufen. Bis zum höchsten Punkt kurz vor km 12 gebe ich mir aber 1 Minute Rückstand. Das sollte dann auf dem Weg zurück zum Start locker reinzulaufen sein.&lt;/p&gt;
&lt;h4&gt;Km 11&lt;/h4&gt;
&lt;p&gt;Ich muss mal. Die eineinhalb Liter Wasser bis 2 Stunden vorm Start waren wohl doch etwas zu viel. Macht nichts, ich habe ja schließlich auch das Pinkeln geübt, zumindest jedenfalls, wie ich möglichst wenig Zeit dabei verliere.&lt;/p&gt;
&lt;h4&gt;Km 12&lt;/h4&gt;
&lt;p&gt;Die Veranstalter des Freiburg Marathon werben ja groß damit, dass ganz viele Bands am Straßenrand stehen und musizieren. Das stimmt auch, und eine der besten des Tages steht hier vor dem Gasthaus Stahl. Meine. Gerade spielen sie unsere Interpretation von &amp;ldquo;The Dock Of The Bay&amp;rdquo;. Ich winke überschwenglich mit meiner Kappe um sie zu begrüßen.
&lt;img src="https://lh3.googleusercontent.com/_D3MEZZKTC8Y/TRJHDVzPLQI/AAAAAAAAI34/8ELq3lTcHes/s400/P1010020.jpg" title="The Uplifters &amp;amp; Block Ice Horn Section beim Freiburg Marathon 2007" alt="The Uplifters &amp;amp; Block Ice Horn Section beim Freiburg Marathon 2007" width="400"&gt;&lt;/p&gt;
&lt;h4&gt;Km 15&lt;/h4&gt;Der 3:45-Pace-Läufer ist überholt. Ich bin sehr zufrieden, dass wir uns so lange Zeit gelassen haben und nichts überstürzten. So ein Marathon ist schon lang, viel Zeit andere Leute einzuholen.
&lt;h4&gt;Km 16&lt;/h4&gt;
&lt;p&gt;Meine besten Freunde erwarten mich mit einer tollen Überraschung. Auf mehreren Pappkartons haben sie meinen Spitznamen FLOJO geschrieben und feuern mich an. Natürlich haben sie auch meine Flasche mit Spezialgetränk a la Herbert Steffny dabei. Wasser, Zucker, Salz, O-Saft, Maisstärke. Das hatte ich natürlich vorher getestet, dennoch kriege ich nur ein Drittel der Flasche davon runter.
&lt;img src="https://lh6.googleusercontent.com/_D3MEZZKTC8Y/TRImKBarJdI/AAAAAAAAIbI/3UG_LrOU4Zg/s400/DSCF0255.JPG" alt="Foto meiner Fans an der Strecke" title="Jochen, Moritz und Franzi feuern mich an." width="400"&gt;&lt;/p&gt;
&lt;h4&gt;Km 17&lt;/h4&gt;Wir kommen nach Zähringen, und Udo fragt mich wie es mir geht. Blendend! Die Atmung ist locker, die Beine tun weh wie immer. Alles im grünen Bereich.
&lt;h4&gt;Km 18&lt;/h4&gt;
&lt;p&gt;Wieso wird es jetzt so schwer? Egal, nichts anmerken lassen.&lt;/p&gt;
&lt;h4&gt;Km 20&lt;/h4&gt;
&lt;p&gt;Ich merke, dass ich schon ganz schön was getan habe. Ich dachte immer, erst ab km 25 wird es schwerer? Egal, muss ja weiter gehen.
Kurz vor der Brücke vor Start und Ziel begrüßt mich mein Schatz mit meiner nächsten Trinkflasche. Ich drücke ihr einen Kuss auf, sage noch schnell, dass es gut läuft und schon bin ich wieder weg. Ein paar Typen hinter uns sind dann wohl gleich zu ihr hin und wollten auch ein Bussi.&lt;/p&gt;
&lt;h4&gt;Km 21&lt;/h4&gt;
&lt;p&gt;Die HM-Markierung sehe ich nicht. Gab es eine? Meine Uhr sagt mir, dass wir etwa 10-20 Sekunden langsamer als 1:50 sind. Die offizielle Zeitmessung sagt später 1:49:30. Komisch, bei km 21 war die Zeit schon durch.. Was mir später erst klar wird: Seit den frühen Kilometern des Rennens gab es kaum einen, der uns überholt hat. Auf den letzten Kilometern überhaupt keinen. Das wird sich auch bis auf eine Ausnahme nicht mehr ändern.
Jetzt beginnt die heiße Phase. Gerade als wir wieder auf die Startgerade biegen sind alle 8500 Halbmarathon-Läufer gestartet. Schon auf der Berliner Allee weichen wir auf Bordsteine aus, um unser Tempo halten zu können.
&lt;img src="https://lh3.googleusercontent.com/_D3MEZZKTC8Y/TRGywicLZKI/AAAAAAAAEIE/HlWcYJDEyk0/s800/marathon_photos_1.jpg" alt="Ich und Udo bei Kilometer 21" title="Ich und Udo bei Kilometer 21."&gt;&lt;/p&gt;
&lt;h4&gt;Km 22-33&lt;/h4&gt;Überholen, abbremsen, ausweichen, Bordsteine, Zuschauer� Diese Strecke durch die Stadt ist zu klein für uns alle. Udo und ich quälen uns durch die Massen der langsamen Läufer. Vielen tippe ich auf die Schulter und sage freundlich "Achtung" oder "Entschuldigung". Ich kehre etwas stolz den Marathonläufer heraus und bin doch erstaunt, wie freundlich alle sind. Niemand beschwert sich, wenn ich ihn oder sie aus Versehen anremple. Und das passiert oft.
Wir verlieren nicht nur Kraft, sondern auch etwas Zeit in diesem Getümmel. Ich bleibe aber ruhig, denn ich kann ja eh nichts daran ändern. Nur als es mit Gegenverkehr wieder am Schwabentor vorbeigeht in die Karthäuserstraße fühle ich mich doch veräppelt. Da läuft 20m vor mir der Zugläufer für 3:30. Der kann auch nicht schneller als wir gerade, es bleiben nicht mal Überholmöglichkeiten.
&lt;h4&gt;Km 30&lt;/h4&gt;
&lt;p&gt;Es geht wieder an der Dreisam längs, aber der Fußweg ist zu schmal für alle. Gut, dass ich die Strecke so gut kenne, deswegen laufe ich viel hinter den Zuschauern auf dem Bordstein. Zum ersten Mal wird mir bewusst, dass ich ganz schön kämpfen muss. Seit der halben Strecke ist es eigentlich immer schwerer geworden. Der Slalom durch die Stadt war anspruchsvoll, aber das lasse ich nicht gelten. Ich weiß, jetzt fängt der Marathon richtig an.&lt;/p&gt;
&lt;h4&gt;Km 32,5&lt;/h4&gt;
&lt;p&gt;Meine Schwester reicht mir die erste Flasche mit meinem Cola-Gemisch. Wieder bekomme ich nicht viel runter. Das Wasser an den Versorgungsständen ist viel besser. Dabei ist Cola eigentlich mein Leibgetränk. Auf vielen Radtouren daran gewöhnt, schreit mein Körper regelmäßig danach. Nur heute muss ich mich zwingen, ich weiß ich brauche den Zucker für die letzten Kilometer.&lt;/p&gt;
&lt;h4&gt;Km 33&lt;/h4&gt;
&lt;p&gt;Meine Band stimmt gerade &amp;ldquo;54-46&amp;rdquo; von Toots &amp;amp; The Maytals an. Haben wir nicht auch etliche eigene Lieder? Obwohl ich winke, bekommt niemand mit, dass ich schon wieder vorbeikomme, die sind alle konzentriert bei der Sache. Gut so, wir sind ja schließlich keine Spaßband.
Nach dem Versorgungstand bringe ich meinen Lieblingsspruch des Tages zum letzten Mal an den Mann. Vor mir fällt ein HM-Läufer zum Trinken in den Gehschritt, so dass ich ihm ausweichen muss. &amp;ldquo;Laufen heißt der Sport!&amp;rdquo; rufe ich ihm zu. Das gute daran: Ich bin überhaupt nicht aus der Puste, die Fettverbrennung läuft noch nicht auf vollen Touren. Gut so!&lt;/p&gt;
&lt;h4&gt;Km 35&lt;/h4&gt;
&lt;p&gt;Seit etlichen Kilometern weiß ich nicht mehr, wie wir in der Zeit liegen. Gefühlsmäßig hatten wir am Wendepunkt vor km 33 mindestens eine Minute Rückstand. Und jetzt wird es erst richtig schwer. Ich laufe am Anschlag und bin mir sicher, weiter Zeit zu verlieren. Schon stelle ich mir eine lockere 3:42 im Ziel vor. Gar nicht schlecht, ich wäre hochzufrieden damit.&lt;/p&gt;
&lt;h4&gt;Km 37&lt;/h4&gt;
&lt;p&gt;Meine Freunde reichen mir meine letzte Trinkflasche, viel Beachtung schenke ich ihnen nicht.&lt;/p&gt;
&lt;h4&gt;Km 38&lt;/h4&gt;
&lt;p&gt;Es macht schon lange keinen Spaß mehr. Es ist anstrengend und sinnlos. Dann der Spruch der Sprüche von Udo: &amp;ldquo;Wenn es jetzt schweineweh tut, dann ist es genau richtig!&amp;rdquo; Wieso motiviert mich das? Weil es allen anderen, die was erreichen wollen, auch so geht. Udo kennt es, mein Vater kennt es von seinen Marathons, und in vier Wochen wird es meinem Kumpel Sören in Hamburg genauso gehen.&lt;/p&gt;
&lt;h4&gt;Km 39&lt;/h4&gt;
&lt;p&gt;Wieso spielt die Big-Band von vorhin nicht mehr?&lt;/p&gt;
&lt;h4&gt;Km 40&lt;/h4&gt;
&lt;p&gt;Stand das Schild vorher nicht viel weiter vorne? Und wieso ist diese Steinwurfdistanz bis zum Ziel noch 2km lang? Ich kenne die Gegend doch. Und wieso werden die ganzen Halbmarathon-Läufer so langsam? Die sind ja gerade mal warmgelaufen. Irgendwas in mir will aufhören. Ich beschließe weiterzulaufen, bis ich einen Grund gefunden habe endlich stehen zu bleiben. Ich höre in meinen Körper und suche angestrengt nach irgendwas. Schmerzen? Keine. Atmung? Schwerer, aber nicht am Limit. Dann also weiter!&lt;/p&gt;
&lt;h4&gt;Km 41&lt;/h4&gt;
&lt;p&gt;Wir biegen in die Kaiserstuhlstraße ein, die das nahe Ziel ankündigt. War die Straße schon immer so lang? Die HM-Läufer sind immer noch so lahm.&lt;/p&gt;
&lt;h4&gt;Km 41,?&lt;/h4&gt;
&lt;p&gt;Kurz vor der letzten Brücke. Meine Freundin sehe ich nur im Augenwinkel. Ich laufe, weil ich laufen muss. Udo schafft es doch, mich nochmal zu motivieren: &amp;ldquo;Wenn du jetzt noch was hast, dann lass es raus!&amp;rdquo; - und ich lasse es raus. Oben auf der Brücke beschleunige ich, ich gebe alles, weil noch was da ist. Jetzt geht es leicht abwärts. Ich stürme an den anderen Läufern vorbei. Noch einmal links, rechts im Zielkanal. Dann erblicke ich das Ziel und ich fühle, wie das Adrenalin in meine Adern strömt! Schlussspurt nach 42km, welch geiles Gefühl. Die Brutto-Zeit springt gerade auf 3:40 Stunden. Noch vor dem Zieleinlauf strecke ich meine Faust in die Höhe und schreie meine Freude heraus.&lt;/p&gt;
&lt;h4&gt;Ziel&lt;/h4&gt;
&lt;p&gt;Mit geballter Siegerfaust muss ich mehrmals laut schreien. Ein super Rennen, absolut am Limit, ein Traum! Gleichzeitig muss ich aufpassen, dass ich mich weiter bewege. Mein Kreislauf steht am Abgrund. Jetzt stehen bleiben und ich kippe um. Freudestrahlend umarme ich Udo und danke ihm für den tollen Lauf. Langsam gehen wir durch den Zielbereich. Die Apfelschorle bekomme ich nur schlückchenweise hinunter, Riegel überhaupt nicht, und das leckere Gebäck nur in kleinen Brocken. Wieso gibt&amp;rsquo;s hier kein Bier?&lt;/p&gt;
&lt;h4&gt;Danach&lt;/h4&gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;p&amp;gt;Das Bier gibt es eine Stunde später. Ich liege geduscht bei meiner Freundin vor dem Fernseher und habe sogar schon ein ganzes Brötchen verdrückt. Ich bin überglücklich und klammere mich die ganze Zeit an meine Finisher-Medaille. Das war ein ganz großer Tag in meinem Leben!&lt;/p&gt;</description></item><item><title>Rockhaus Festival in Landau</title><link>https://flowfx.de/blog/rockhaus-festival-in-landau/</link><pubDate>Sat, 22 Jan 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/rockhaus-festival-in-landau/</guid><description>&lt;p&gt;Gestern war ich mit einer nicht weiter &lt;a href="http://www.diefelsen.de"&gt;erwähnswerten Band&lt;/a&gt; beim &lt;a href="http://www.rockhaus-festival.de/"&gt;Rockhaus Festival&lt;/a&gt; in der Kultur- und Begegnungsstätte &lt;a href="http://suedstern-ev.de/"&gt;"Das Haus"&lt;/a&gt; in &lt;a href="http://goo.gl/maps/DP7S"&gt;Landau&lt;/a&gt;. Keine schlechte Location, einen Freitag Abend zu verbringen!
&lt;p&gt;Was heißt hier Location? Vorne Thekenraum mit Leinwand, durch nen Gang durch halb in den Keller der superkleine Raum mit der Bühne. Deutlich kleiner als der &lt;a href="http://www.slowclub-freiburg.de/"&gt;Slow Club&lt;/a&gt; in Freiburg, und das will was heißen. Dafür wurde es auch schon bei der ersten Band sehr kuschelig.&lt;/p&gt;
&lt;p&gt;Dass dieses Indoor-Festival nicht zum ersten Mal stattfand, war allerdings überdeutlich. Die Organisation war vorbildlich! Die Bands hatten gestaffelte Ankunftszeiten. Der gesonderte Backstageraum war mit einem großen Kühlschrank beliebter Kaltgetränke sowie reichlich selbstgemachtem Essen ausgestattet, und die Musiker hatten das Privileg, den einzigen Raucherraum im ganzen Gebäude bevölkern zu dürfen. Zum Auf- und Abbau konnten die Wagen direkt hinten an die Bühne gefahren werden. usw und so weiter. Alle freundlich, alle hilfsbereit, so soll das sein!&lt;/p&gt;
&lt;p&gt;Was die Bands angeht, muss ich zugeben, nur der ersten gelauscht zu haben. Danach wurde es mir zu voll und zu laut. Aber auch außerhalb des Bühnenraums hatten wir viel Spaß. Es gab Bier, es gab nen Kickertisch, und nette Leute waren auch da. Was will ich mehr?&lt;/p&gt;&lt;/p&gt;</description></item><item><title>a crime don't come alone &amp; Tim G. Mayer im Jos Fritz Café</title><link>https://flowfx.de/blog/a-crime-dont-come-alone-tim-g-mayer-im-jos-fritz-cafe/</link><pubDate>Tue, 18 Jan 2011 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/a-crime-dont-come-alone-tim-g-mayer-im-jos-fritz-cafe/</guid><description>&lt;p&gt;In zwei Wochen findet das erste von mir organisierte Konzert des Jahres im &lt;a href="http://www.josfritzcafe.de"&gt;Jos Fritz Café&lt;/a&gt; in Freiburg statt. Meine Freunde Konstantin Schimanowski, aka &lt;a href="http://www.myspace.com/crimedabime" title="Konny bei MySpace"&gt;a crime don't come alone&lt;/a&gt; und &lt;a href="http://www.twitter.com/TimGMayer" title="Tim bei Twitter"&gt;Tim G. Mayer&lt;/a&gt;, seines Zeichens Sänger und Liedschreiber der Ludwigshafener Rockband &lt;a href="http://www.diefelsen.de" title="Webseite der Felsen"&gt;Die Felsen&lt;/a&gt; geben sich die Ehre.
&lt;p&gt;Konstantin ist schon lange als Solokünstler in Freiburg und der ganzen Republik unterwegs. Kennengelernt habe ich ihn, als er im Frühjahr 2006 als Sänger zu meiner damaligen Freiburger Band &lt;a href="http://www.theuplifters.de" title="Webseite der Uplifters"&gt;The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt; stieß, deren Sound er mit seinem Gesang ganz entschieden prägte. Seine andere Band &lt;a href="http://www.myspace.com/crimekillingjokerman" title="crime killing joker man bei MySpace"&gt;crime killing joker man&lt;/a&gt; wird noch am Abend vor diesem Konzert das Release ihrer neuen CD feiern!&lt;/p&gt;
&lt;p&gt;Tim habe ich letzten August &lt;a href="https://flowfx.de/2010/11/die-felsen-und-ich/" title="wie ich Tim kennenlernte"&gt;beim Konzert der Felsen im Kosmodrom&lt;/a&gt; in Heidelberg kennengelernt. Seitdem ist viel geschehen, und vor einiger Zeit habe ich Tim überzeugen können, dass er es auch mal solo auf der Bühne ausprobieren sollte. Das tut er nun am 5. Februar zum ersten Mal. Wir sind gespannt :)&lt;/p&gt;
&lt;p&gt;Die Veranstaltung beginnt gegen 20 Uhr, der Eintritt ist frei, und nach der Live-Musik legen wir noch gemeinsam auf. Unterstützung bekommen wir dabei von Alex von den Uplifters. Wir freuen uns drauf, es wird gemütlich werden!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.facebook.com/event.php?eid=176686435683983"&gt;&lt;img src="https://flowfx.de/wp-content/uploads/2011/01/flyer-crimedabime-timgmayer-josfritz-20110205-400.png" alt="Künstlerbilder von a crime don't come alone und Tim G. Mayer sowie Infotext: Konzert am 5. Februar 2011 im Jos Fritz Café in Freiburg - 20 Uhr - Eintritt frei" width="400" height="400" class="aligncenter size-full wp-image-495"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Offbeattermine Dezember 2010</title><link>https://flowfx.de/blog/offbeattermine-dezember-2010/</link><pubDate>Sun, 05 Dec 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-dezember-2010/</guid><description>&lt;p&gt;Der Offbeat-Dezember in Rhein-Neckar:
&lt;p&gt;10.12. &lt;a href="http://veranstaltungen.meinestadt.de/mannheim/event-detail/26955076?xtmc=reggae_konzert&amp;amp;xtcr=04001"&gt;Offbeat-Party&lt;/a&gt; mit &lt;a href="http://www.pantano-soundsystem.de"&gt;Pantano Soundsystem&lt;/a&gt; und &lt;a href="http://www.skallncrossbones.de/"&gt;Skall&amp;rsquo;n&amp;rsquo;Crossbones&lt;/a&gt; @ &lt;a href="http://www.forum-mannheim.de/"&gt;Jugendkulturzentrum Forum&lt;/a&gt;, Mannheim&lt;/p&gt;
&lt;p&gt;11.12. &lt;a href="http://www.facebook.com/event.php?eid=168692986485723&amp;amp;ref=mf"&gt;Live Reggae meets Soundsystem&lt;/a&gt; mit der &lt;a href="http://www.backasoul.com"&gt;Backa Soul Formation&lt;/a&gt;, DJ Natty Cool &amp;amp; &lt;a href="http://www.myspace.com/wondap"&gt;Wonda Prince &lt;/a&gt; @ &lt;a href="http://62.80.26.77/leparadis/"&gt;Le Paradis&lt;/a&gt;, Mannheim&lt;/p&gt;
&lt;p&gt;30.12. &lt;a href="http://www.facebook.com/soundition"&gt;Soundition&lt;/a&gt; @ &lt;a href="http://www.cafecentral.de/"&gt;Café Central&lt;/a&gt;, Weinheim&lt;/p&gt;
&lt;p&gt;Skall&amp;rsquo;n&amp;rsquo;Crossbones und Pantano Soundsystem verpasse ich leider. Bandweihnachtsfeier&amp;hellip; mit der Band, die am nächsten Tag im Le Paradis spielt. Am 30.12. werde ich aber versuchen nach Weinheim zu fahren.&amp;quot;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Die Felsen und ich</title><link>https://flowfx.de/blog/die-felsen-und-ich/</link><pubDate>Fri, 19 Nov 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-felsen-und-ich/</guid><description>&lt;p&gt;Im August war ich an einem unschuldigen Freitag Abend kurz im &lt;a href="http://www.kosmodrom-hd.de"&gt;Kosmodrom&lt;/a&gt; in Heidelberg, um die letzten Details für den anstehenden Auftritt der &lt;a href="http://www.soundgenerators.de"&gt;Sound Generators&lt;/a&gt; abzusprechen. Als ich ankam lief der Soundcheck gerade, und ich hatte Zeit zu Twittern...
&lt;p&gt;[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/21084501142&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;Die erste Band des Abends soundcheckte natürlich als letztes. So richtig begeistert war ich nicht:&lt;/p&gt;
&lt;p&gt;[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/21089324839&amp;rdquo;]
[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/21089901686&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;Wo ich aber schon mal dort war, wollte ich mir natürlich auch das ganze Set anhören - zumindest von dieser Band. Das stellte sich als gute und folgenreiche Entscheidung heraus. Am Ende des Konzertes war ich Fan von &amp;ldquo;Selection&amp;rdquo;, was die zwei weiteren Tweets des Abends belegen:&lt;/p&gt;
&lt;p&gt;[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/21095091640&amp;rdquo;]
[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/21101752854&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;Nach dem Konzert habe ich mich unter den Fan-Club gemischt, ohne dass ich groß mit der Band gesprochen hätte. &lt;a href="http://www.lastfm.de/music/Die+Felsen/27"&gt;Ihre CD&lt;/a&gt; habe ich dafür aber gleich mitgenommen und in meiner biergeschwängerten Stimmung angekündigt, beim nächsten Gig wieder dabei zu sein.&lt;/p&gt;
&lt;p&gt;Ein paar Wochen später war ich dann tatsächlich in Ludwigshafen, um die Jungs ein zweites Mal zu sehen:&lt;/p&gt;
&lt;p&gt;[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/22919195889&amp;rdquo;]
[blackbirdpie url=&amp;ldquo;http://twitter.com/#!/FlowFXx/status/22928476989&amp;rdquo;]&lt;/p&gt;
&lt;p&gt;Dort habe ich mich dann zum ersten Mal länger mit dem Sänger Tim unterhalten. So wie beim &lt;a href="http://www.facebook.com/event.php?eid=166271933395971"&gt;darauffolgenden Konzert&lt;/a&gt; ebenfalls. Und ich werde auch alle folgenden Gigs besuchen, so ich denn nicht anderweitig unterwegs bin wie &lt;a href="http://www.facebook.com/event.php?eid=106319996100164"&gt;nächsten Samstag&lt;/a&gt; beispielsweise.&lt;/p&gt;
&lt;p&gt;Mittlerweile heißt die Band &amp;ldquo;Die Felsen&amp;rdquo;, und mein Fanboy-Tum hat sich zu einer Arbeitsbeziehung entwickelt. Dabei begleite ich die Online-Projekte der Band, um sie mit dem zu unterstützen, was ich kann. Nerdkram eben. Die erste Maßnahme war selbstverständlich die Registrierung der Domain &lt;a href="http://www.diefelsen.de"&gt;diefelsen.de&lt;/a&gt; und die Erstellung einer &lt;a href="http://www.facebook.com/diefelsen"&gt;Facebookseite&lt;/a&gt;, die innhalb von 10 Tagen über 80 &amp;lsquo;gefällt mir&amp;rsquo;s&amp;rsquo; bekommen hat. Mehr wird kommen, wobei das meiste natürlich hinter den Kulissen passiert. Eine Schöne erste Erkenntnis ist: Die Fans waren schon da, jetzt kann man sie auch sehen. Dass es mehr werden, daran arbeiten wir.&lt;/p&gt;
&lt;p&gt;Wichtigster Baustein: Die Band steht ab Ende Dezember im Studio und nimmt ihr erstes komplettes Album auf. Ich bin selbst sehr gespannt darauf, und auf alles, was im nächsten Jahr passieren wird.&lt;/p&gt;
&lt;p&gt;Zum Abschluss verlinke ich hier noch mal das aktuelle Video der Band. Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/18366307"&gt;Die Felsen - Die Stille der Nacht (Official Video)&lt;/a&gt; from &lt;a href="http://vimeo.com/user5622094"&gt;Sebastian Ladwig&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Offbeattermine November 2010</title><link>https://flowfx.de/blog/offbeattermine-november-2010/</link><pubDate>Tue, 02 Nov 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-november-2010/</guid><description>&lt;p&gt;Ein trüber November. Langsam muss hier in der Gegend mal was passieren. Aber wir arbeiten daran. Für diesen Monat habe ich jedenfalls nur zwei Termine gefunden, und die auch von ziemlich bekannten Namen. Bitte sehr:
&lt;p&gt;04.11. &lt;a href="www.panteonrococo.com/"&gt;&lt;strong&gt;Panteón Rococó&lt;/strong&gt;&lt;/a&gt; @ &lt;a href="http://www.halle02.de/"&gt;Halle 02&lt;/a&gt;, Heidelberg, 20:00 Uhr.&lt;/p&gt;
&lt;p&gt;23.11. &lt;a href="http://www.gentleman-music.com/"&gt;&lt;strong&gt;Gentleman&lt;/strong&gt;&lt;/a&gt; &amp;amp; The Evolution @ &lt;a href="http://www.capitol-mannheim.de/"&gt;Capitol&lt;/a&gt;, Mannheim, 20:00 Uhr.
&lt;img alt="" src="http://www.gentleman-music.com/typo3temp/pics/f44e16ae5c.jpg" class="aligncenter" width="250"&gt;(&lt;a href="http://www.gentleman-music.com/media/pics/index.html"&gt;offizielles Pressefoto&lt;/a&gt;)&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Skeech in der Haager Eventmühle</title><link>https://flowfx.de/blog/skeech-in-der-haager-eventmuhle/</link><pubDate>Mon, 01 Nov 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/skeech-in-der-haager-eventmuhle/</guid><description>&lt;p&gt;Eine Nacht zum Twittern. Die Band spielt gut, der Sound steht, der Saal tobt. Nur leider hatte ich kein Netz. Null. Und Leute waren auch keine da. Geschweige denn Frauen. &lt;a href="http://www.skeech.de" title="Webseite von Skeech"&gt;Skeech&lt;/a&gt; in Haag war nicht so richtig der Publikumsmagnet den wir uns erhofft hatten.
&lt;p&gt;Berichtenswert ist immerhin die Küche des Landgasthofs &lt;a href="http://www.haager-muehle.de" title="Webseite der Haager Mühle"&gt;Haager Mühle&lt;/a&gt;, an den die Location angeschlossen ist. Diese servierte ein ganz hervorragendes Rumpsteak, auch wenn ihre Definition von &amp;rsquo;englisch&amp;rsquo; mehr was für Warmduscher ist.&lt;/p&gt;
&lt;p&gt;Nach dem Klick wie üblich noch ein paar Fotos vom Abend:&lt;/p&gt;
&lt;p&gt;[pe2-gallery class=&amp;ldquo;aligncenter&amp;rdquo; ]
&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TM8I804xUfI/AAAAAAAACuM/UGsJOfs_nvI/IMG_20101030_215907.jpg" title="IMG_20101030_215907.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TM8I804xUfI/AAAAAAAACuM/UGsJOfs_nvI/h300/IMG_20101030_215907.jpg" alt="IMG_20101030_215907.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TM8I9X_UHUI/AAAAAAAACuM/lIMrRWXIyjk/IMG_20101030_215944.jpg" title="IMG_20101030_215944.jpg" class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TM8I9X_UHUI/AAAAAAAACuM/lIMrRWXIyjk/h300/IMG_20101030_215944.jpg" alt="IMG_20101030_215944.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TM8I90f0omI/AAAAAAAACuM/6XKHpRN7u3k/IMG_20101030_220006.jpg" title="IMG_20101030_220006.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TM8I90f0omI/AAAAAAAACuM/6XKHpRN7u3k/h300/IMG_20101030_220006.jpg" alt="IMG_20101030_220006.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TM8I-cEV0UI/AAAAAAAACuM/XEKSFU5dcp0/IMG_20101030_223628.jpg" title="IMG_20101030_223628.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TM8I-cEV0UI/AAAAAAAACuM/XEKSFU5dcp0/h300/IMG_20101030_223628.jpg" alt="IMG_20101030_223628.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TM8I-wA1ypI/AAAAAAAACuM/2zk_mJpGO74/IMG_20101030_223655.jpg" title="IMG_20101030_223655.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TM8I-wA1ypI/AAAAAAAACuM/2zk_mJpGO74/h300/IMG_20101030_223655.jpg" alt="IMG_20101030_223655.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TM8I_QhavBI/AAAAAAAACuM/ijfk0fomjYM/IMG_20101030_224403.jpg" title="IMG_20101030_224403.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TM8I_QhavBI/AAAAAAAACuM/ijfk0fomjYM/h300/IMG_20101030_224403.jpg" alt="IMG_20101030_224403.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;[/pe2-gallery]&lt;/p&gt;
&lt;p&gt;Obwohl. So gemeinsam mit den Gästen anstossen hat was. Das schafft Athmosphäre, werde ich für den nächsten Backa Soul Auftritt auch mal vorschlagen.
~&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Evolution of the ugly man</title><link>https://flowfx.de/blog/evolution-of-the-ugly-man/</link><pubDate>Tue, 19 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/evolution-of-the-ugly-man/</guid><description>&lt;p&gt;Ich ruhe mich ganz schön auf meinen Lorbeeren aus. Es wird höchste Zeit, dass ich neben der ganzen Keyboardklimperei auch mal wieder einen Hit schreibe. Oder zumindest einen Song, den man guten Gewissens öffentlich aufführen kann. Bis ich dazu komme, will ich hier aber wenigstens mal alle Quellen zu meinem Song "Ugly Man" verlinken und präsentieren, insbesondere damit ihn jeder der will auch in anderen Bands spielt und bearbeitet.
&lt;p&gt;Nun denn, irgendwann im Sommer letztes Jahr, kam mir aus heiterem Himmel die Eingebung für eine fesche Melodie, die ich dann promt mit hingefrickelten Akkorden am heimischen MIDI-Keyboard unterlegte. Die waren natürlich alle falsch, aber genug, damit wir in der ersten Upliftersprobe die richtigen finden konnten. Damals war ich auch permanent dabei, mit &lt;a href="http://lilypond.org/"&gt;Lilypond&lt;/a&gt; irgendwelche Noten zu setzen, so dass sehr schnell dieses Lead-Sheet entstand:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://flowfx.de/uploads/uglyman.pdf"&gt;Ugly Man Lead Sheet&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Credits sind mittlerweile veraltet, das Original Liliypond-File ist allerdings abhanden gekommen. Und neu schreiben werde ich es sicher nicht ;-) Was bleibt ist aber ganz klar die Creative Commons Lizenz BY-SA. Urheber: FlowFX.&lt;/p&gt;
&lt;p&gt;Das folgende ist die allererste Proberaumaufnahme mit den &lt;a href="http://www.blockiceuplifters.com"&gt;Uplifters&lt;/a&gt;:&lt;/p&gt;
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/5744679&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/flowfx" title="FlowFX" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;FlowFX&lt;/a&gt; · &lt;a href="https://soundcloud.com/flowfx/ugly-man-rehearsal-recording-by-the-uplifters-block-ice-horn-section" title="Ugly Man (rehearsal recording) by The Uplifters &amp;amp; Block Ice Horn Section" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Ugly Man (rehearsal recording) by The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Man könnte es &amp;ldquo;brav&amp;rdquo; nennen.&lt;/p&gt;
&lt;p&gt;Uraufführung war im Januar im White Rabbit in Freiburg - was für eine Party! Volle Bude, alle haben getanzt, und auch bei Ugly Man hat keiner aufgehört:&lt;/p&gt;
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/4620796&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/flowfx" title="FlowFX" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;FlowFX&lt;/a&gt; · &lt;a href="https://soundcloud.com/flowfx/ugly-man-live-by-the-uplifters-block-ice-horn-section" title="Ugly Man (live) by The Uplifters &amp;amp; Block Ice Horn Section" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Ugly Man (live) by The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Seit einem knappen Jahr spiele ich ja auch bei der Mannheimer &lt;a href="http://www.backasoul.com"&gt;Backa Soul Formation&lt;/a&gt;, zunächst auch als Posaunist. Selbstverständlich habe ich als Einstiegsgeschenk meinen Song mitgebracht. Im Juni durften wir auf dem 8. Delicious Offbeat Vibration Festival in Freiburg auftreten und haben ihn auch gespielt:&lt;/p&gt;
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/4620917&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/flowfx" title="FlowFX" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;FlowFX&lt;/a&gt; · &lt;a href="https://soundcloud.com/flowfx/ugly-man-live-by-backa-soul-formation" title="Ugly Man (live) by Backa Soul Formation" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Ugly Man (live) by Backa Soul Formation&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Ich finde es höchst spannend, wie unterschiedlich zwei Bands einen Song spielen können. Beide hatten die gleichen Vorraussetzungen. Die Melodie plus Akkorde. Die Ergebnisse fühlen sich aber sehr anders an, was nicht zuletzt natürlich durch die völlig verschiedenen Sänger bedingt ist.&lt;/p&gt;
&lt;p&gt;Da fällt mir auch auf: Ich sollte unbedingt demnächst einen Original-Backasoul-Riddim mit nach Freiburg bringen!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>I-Fire in der Halle 02 - VIDEOS</title><link>https://flowfx.de/blog/i-fire-in-der-halle-02-videos/</link><pubDate>Tue, 19 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/i-fire-in-der-halle-02-videos/</guid><description>&lt;p&gt;&lt;a href="http://www.youtube.com/user/BuergerBewegung"&gt;Irgendwer&lt;/a&gt; hat Samstag tatsächlich mitgefilmt. Hier zwei Videos vom I-Fire-Konzert in der Halle:&lt;/p&gt;
&lt;p&gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;h4&amp;gt;&amp;ldquo;I-Fire&amp;rdquo;&lt;/p&gt;
&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="400" height="300" src="http://www.youtube-nocookie.com/embed/0V7jYlFwDw8" frameborder="0"&gt;&lt;/iframe&gt;
&lt;h4&gt;"Wir kenn' das"&lt;/h4&gt;
&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" width="400" height="300" src="http://www.youtube-nocookie.com/embed/ug46frEboGY" frameborder="0"&gt;&lt;/iframe&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Google ist das Internet ist Google ist das ...</title><link>https://flowfx.de/blog/google-ist-das-internet-ist-google-ist-das/</link><pubDate>Sun, 17 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/google-ist-das-internet-ist-google-ist-das/</guid><description>&lt;p&gt;Es ist keine neue Erkenntnis, dass Google für viele Internetnutzer, gerade in Deutschland, schlicht und einfach &lt;em&gt;das Internet&lt;/em&gt; ist. Neu ist aber meine Erfahrung genau damit.
&lt;p&gt;Vorhin ruft mich eine neue Kundin für &lt;a href="http://www.nachhilfe-in-mannheim.net" title="Nachhilfe in Mannheim in Mathe und Physik"&gt;meine Nachhilfe&lt;/a&gt; an und will einen Termin vereinbaren. Da ich immer sehr gespannt bin, wie die Leute auf mich stoßen - Websuche, Kleinanzeigen, Vermittlungsplattformen etc - frage ich sie, wie sie mich gefunden hat. Ihre Antwort:&lt;/p&gt;
&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;Na, im Internet!&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;Ich kann damit natürlich erstmal überhaupt nichts anfangen - was in diesem Fall vor allem bedeutet, dass &lt;em&gt;ich&lt;/em&gt; &lt;em&gt;sie&lt;/em&gt; nicht verstehe. Auf Nachfrage sagt sie mir dann, dass sie nach &amp;ldquo;mathe nachhilfe weinheim&amp;rdquo; gesucht habe und dann meine Seite auftauchte. Dass sie dabei Google benutzt hatte war klar bei &lt;a href="http://www.seo-united.de/blog/internet/suchmaschinenverteilung-im-oktober.htm"&gt;90% Marktanteil&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Fazit? Nur Google zählt, &lt;a href="http://maps.google.de/maps/place?hl=de&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;q=mathe+nachhilfe+mannheim&amp;amp;fb=1&amp;amp;gl=de&amp;amp;hq=mathe+nachhilfe&amp;amp;hnear=Mannheim&amp;amp;cid=16582018166516885626&amp;amp;ei=BU67TMGLMMqWOo77lfcM&amp;amp;sa=X&amp;amp;oi=local_result&amp;amp;ct=result&amp;amp;resnum=2&amp;amp;ved=0CCoQnQIwAQ" title="Mein Nachhilfeangebot bei Google Places"&gt;Places&lt;/a&gt; ist grad echt gut zu mir: nur in der angezeigten Karte bin ich so hoch geranked. Und ich werde meinen Aktionsradius kräftig erweitern: Weinheim war bisher überhaupt nicht auf meiner Liste&amp;hellip;&lt;/p&gt;</description></item><item><title>I-Fire in der Halle 02</title><link>https://flowfx.de/blog/i-fire-in-der-halle-02/</link><pubDate>Sun, 17 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/i-fire-in-der-halle-02/</guid><description>&lt;p&gt;&lt;a href="http://www.i-fire-sound.com/"&gt;I-Fire&lt;/a&gt; aus Hamburg habe ich letztes Jahr tatsächlich via Last.fm zum ersten Mal gehört. &amp;ldquo;&lt;a href="http://www.youtube.com/watch?v=7M6AfXLylpA"&gt;Ferien zu Haus&lt;/a&gt;&amp;rdquo; lief danach eine Woche auf Dauerrotation. Besonders erfreut war ich deshalb, als ich letzten Donnerstag zufällig ein Plakat der Hallo 02 in Heidelberg sah. Zu Hause musste ich zwar noch nachschauen, was es mit &amp;ldquo;&lt;a href="http://www.halle02.de/programm/termin/2010/oktober/dub-club-mit-i-fire.html"&gt;Dub Club&lt;/a&gt;&amp;rdquo; auf sich hatte, und ob tatsächlich DIE I-Fire Band aus Hamburg gemeint war, aber natürlich war ich dann gestern dort.&lt;/p&gt;
&lt;p&gt;Die Crowd war zunächst überschaubar, später ordentlich. Die Halle hat aber sicher schon ganz andere Massen gesehen. &lt;a href="http://www.myspace.com/lionhillsound"&gt;Lionhill Sound&lt;/a&gt; hat es dennoch verstanden, schon vor Konzertbeginn die Beine zu bewegen. Um Elf fing dann endlich die Live-Musik an. In wenigen Worten: Fetter Sound, tighte Band, krasse Stimmen! Der beste Musiker auf der Bühne war wie so oft der Bassist. Er und der Drummer hatten auch eindeutig am meisten Spaß. Den anderen Jungs merkte man schon etwas an, dass sie gewohnt sind vor größerem Publikum zu spielen. Keine Ahnung, was da bei der Werbung schief gegangen ist.&lt;/p&gt;
&lt;p&gt;Es hat aber Spaß gemacht! Da waren schon einige Hits und Mitsing-Kracher dabei, und permanent Bewegung auf der Bühne. Ich konnte auch definitiv nie still stehen, und das ist immer das beste Zeichen, dass die Musik gut ist. Ein paar verwischte Fotos habe ich auch noch gemacht.&lt;/p&gt;
&lt;p&gt;Ist doch erstaunlich, was Telefone heute können:&lt;/p&gt;
&lt;p&gt;[pe2-gallery class=&amp;ldquo;aligncenter&amp;rdquo; ]
&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriAG4nk9I/AAAAAAAACsc/n2hiY2Uk5-w/IMG_20101016_233353.jpg" title="IMG_20101016_233353.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriAG4nk9I/AAAAAAAACsc/n2hiY2Uk5-w/h300/IMG_20101016_233353.jpg" alt="IMG_20101016_233353.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriAqXf6GI/AAAAAAAACsc/E56uPmHw05s/IMG_20101016_233403.jpg" title="IMG_20101016_233403.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriAqXf6GI/AAAAAAAACsc/E56uPmHw05s/h300/IMG_20101016_233403.jpg" alt="IMG_20101016_233403.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriBLDvJAI/AAAAAAAACsc/U2VX4zw3l6E/IMG_20101016_233411.jpg" title="IMG_20101016_233411.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriBLDvJAI/AAAAAAAACsc/U2VX4zw3l6E/h300/IMG_20101016_233411.jpg" alt="IMG_20101016_233411.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriBxXkwhI/AAAAAAAACsc/tbJgFqH2r70/IMG_20101016_233416.jpg" title="IMG_20101016_233416.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriBxXkwhI/AAAAAAAACsc/tbJgFqH2r70/h300/IMG_20101016_233416.jpg" alt="IMG_20101016_233416.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriCLg9kCI/AAAAAAAACsc/Vp2CF24MV1Q/IMG_20101016_233421.jpg" title="IMG_20101016_233421.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriCLg9kCI/AAAAAAAACsc/Vp2CF24MV1Q/h300/IMG_20101016_233421.jpg" alt="IMG_20101016_233421.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriC_vfipI/AAAAAAAACsc/s06uOZ83eJs/IMG_20101016_233526.jpg" title="IMG_20101016_233526.jpg" class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriC_vfipI/AAAAAAAACsc/s06uOZ83eJs/h300/IMG_20101016_233526.jpg" alt="IMG_20101016_233526.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriDDYCQNI/AAAAAAAACsc/UToErkvKYxo/IMG_20101016_233540.jpg" title="IMG_20101016_233540.jpg" class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriDDYCQNI/AAAAAAAACsc/UToErkvKYxo/h300/IMG_20101016_233540.jpg" alt="IMG_20101016_233540.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TLriDsfWmXI/AAAAAAAACsc/Onbk7wHlIFk/IMG_20101016_233857.jpg" title="IMG_20101016_233857.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TLriDsfWmXI/AAAAAAAACsc/Onbk7wHlIFk/h300/IMG_20101016_233857.jpg" alt="IMG_20101016_233857.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriEFHvYXI/AAAAAAAACsc/c9bCC75hkPk/IMG_20101016_233904.jpg" title="IMG_20101016_233904.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriEFHvYXI/AAAAAAAACsc/c9bCC75hkPk/h300/IMG_20101016_233904.jpg" alt="IMG_20101016_233904.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TLriEkXOREI/AAAAAAAACsc/RQYzIUacHYk/IMG_20101016_234354.jpg" title="IMG_20101016_234354.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TLriEkXOREI/AAAAAAAACsc/RQYzIUacHYk/h300/IMG_20101016_234354.jpg" alt="IMG_20101016_234354.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriFMJimKI/AAAAAAAACsc/HhtyYYBXVZQ/IMG_20101016_234433.jpg" title="IMG_20101016_234433.jpg" class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TLriFMJimKI/AAAAAAAACsc/HhtyYYBXVZQ/h300/IMG_20101016_234433.jpg" alt="IMG_20101016_234433.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriFUkQIWI/AAAAAAAACsc/hUU7Or1bkHI/IMG_20101016_234441.jpg" title="IMG_20101016_234441.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriFUkQIWI/AAAAAAAACsc/hUU7Or1bkHI/h300/IMG_20101016_234441.jpg" alt="IMG_20101016_234441.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriF8OCjUI/AAAAAAAACsc/_-FvcT_Y__g/IMG_20101016_234604.jpg" title="IMG_20101016_234604.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TLriF8OCjUI/AAAAAAAACsc/_-FvcT_Y__g/h300/IMG_20101016_234604.jpg" alt="IMG_20101016_234604.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriGIjPo8I/AAAAAAAACsc/-XkEyk_c6OI/IMG_20101017_000222.jpg" title="IMG_20101017_000222.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TLriGIjPo8I/AAAAAAAACsc/-XkEyk_c6OI/h300/IMG_20101017_000222.jpg" alt="IMG_20101017_000222.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;[/pe2-gallery]&lt;/p&gt;</description></item><item><title>Offbeattermine Oktober 2010</title><link>https://flowfx.de/blog/offbeattermine-oktober-2010/</link><pubDate>Sat, 16 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-oktober-2010/</guid><description>&lt;p&gt;Ich habe in den letzten Wochen tatsächlich mehrere Termine verpasst, die ich nicht hätte verpassen wollen. Mangelnde Recherche halt. Für den Rest des Monats habe ich noch zwei Termine in petto. Einmal heute Abend I-Fire in der Halle, und dann nächste Woche eine meiner eigenen Bands in der Villa:
&lt;p&gt;16.10. &lt;a href="http://www.i-fire-sound.com/"&gt;&lt;strong&gt;I-Fire&lt;/strong&gt;&lt;/a&gt;, präsentiert vom &lt;a href="www.myspace.com/lionhillsound"&gt;Lionhill Sound&lt;/a&gt; @ &lt;a href="http://www.halle02.de/programm/termin/2010/oktober/dub-club-mit-i-fire.html"&gt;Dub Club&lt;/a&gt;, Halle 02, Heidelberg, 21:00 Uhr.&lt;/p&gt;
&lt;p&gt;23.10. &lt;a href="http://www.backasoul.com"&gt;&lt;strong&gt;Backa Soul Formation&lt;/strong&gt;&lt;/a&gt; @ &lt;a href="http://www.facebook.com/home.php?#!/event.php?eid=159045887458533"&gt;Mouvement St. Martin - Soliparty #1&lt;/a&gt;, &lt;a href="http://www.villanachttanz.de/"&gt;Villa Nachttanz&lt;/a&gt;, Heidelberg, 21:00 Uhr.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Transnationalmannschaft</title><link>https://flowfx.de/blog/transnationalmannschaft/</link><pubDate>Tue, 12 Oct 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/transnationalmannschaft/</guid><description>&lt;p&gt;Mein Kumpel Phizzl, nicht zuletzt Gitarrist der &lt;a href="http://www.soundgenerators.de" title="Sound Generators - The Crowd Rockers"&gt;Sound Generators&lt;/a&gt;, bastelt mit Hochdruck an seinem selbstgeschrieben und -produzierten Filmprojekt "&lt;a href="http://www.transnationalmannschaft.de" title="Offizielle Transnationalmannschaft-Webseite"&gt;Transnationalmannschaft&lt;/a&gt;". Dass er dadurch nicht so viele Proben mitmachen kann, wie wir alle gern hätten, können wir verschmerzen, wenn der Film auch nur annähernd das hält, was der gerade fertiggestellte Trailer verspricht. Kinopremiere ist Anfang Dezember:
&lt;p&gt;&lt;a href="http://vimeo.com/15730601"&gt;TRANSNATIONALMANNSCHAFT - documentary trailer&lt;/a&gt; from &lt;a href="http://vimeo.com/transnational"&gt;Ali Badakhshan Rad&amp;amp;Philipp Kohl&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Offbeattermine III/2010</title><link>https://flowfx.de/blog/offbeattermine-iii2010/</link><pubDate>Wed, 15 Sep 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-iii2010/</guid><description>&lt;p&gt;Für diesen Samstag habe ich noch einen Termin gefunden - wieder mit Skall'n'Crossbones aus Ladenburg, wieder in Ladenburg. Danach sieht's aber erstmal Ebbe aus. Das &lt;a href="http://www.kosmodrom-hd.de"&gt;Kosmodrom&lt;/a&gt; in Heidelberg ist leider &lt;a href="http://kosmodrom-hd.de/?p=189"&gt;bis auf weiteres geschlossen&lt;/a&gt;, da passiert also auch nichts.
&lt;p&gt;18.09. &lt;a href="http://www.skallncrossbones.de"&gt;&lt;strong&gt;Skall&amp;rsquo;n&amp;rsquo;Crossbones&lt;/strong&gt;&lt;/a&gt; und &lt;a href="http://www.myspace.com/pantanosoundsystem"&gt;Pantano Soundsytem&lt;/a&gt; @ &lt;a href="http://events.myspace.com/Event/5590429/Hegehof-Cornfield-Madness/"&gt;Hegehof Cornfield Madness&lt;/a&gt;, Ladenburg, 20:00 Uhr.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Skall'n'Crossbones in Ladenburg</title><link>https://flowfx.de/blog/skallncrossbones-in-ladenburg/</link><pubDate>Mon, 13 Sep 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/skallncrossbones-in-ladenburg/</guid><description>&lt;p&gt;Gestern war ich wie angekündigt auf dem Altstadtfest in Ladenburg, um die lokale Skaband &lt;a href="http://www.skallncrossbones.de" title="Skall'n'Crossbones Webseite"&gt;"Skall'n'Crossbones"&lt;/a&gt; zu sehen. Und ich darf sagen, der Abend hat sich gelohnt! Auf Grund des einsetzenden Regens waren zwar viel zu wenige Leute da, die Jungs auf der Bühne haben aber trotzdem eine tolle Show gemacht und ihren Fanclub zum Tanzen gebracht. Mich auch.
&lt;p&gt;Der Sound war dick, nur der Schlagzeugmix schwächelte. Man merkte auch, dass die Jungs schon einige Jahre sehr viel miteinander zusammen spielen. Besonders gefallen hat mir die Energie und Show der Bläser. Logisch, dass ich da am ehesten hingucke, aber so muss das sein: Fette Hooks, tighte Einsätze, und dauernd überall unterwegs. Ein Lob auf Clip- und Funkmikros!&lt;/p&gt;
&lt;p&gt;Songmäßig war alles solide, oft laut und rockig, ein Hit ist mir allerdings nicht aufgefallen. Vielleicht beim nächsten Mal. Das wird es nämlich sicher geben!&lt;/p&gt;
&lt;p&gt;Hier noch ein paar Fotos von der Bühne. Dunkel und verwackelt, aber echt:&lt;/p&gt;
&lt;p&gt;[pe2-gallery class=&amp;ldquo;aligncenter&amp;rdquo; ]
&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4WvE2E5LI/AAAAAAAACkE/rHiWd_vJMBU/IMAG0879.jpg" title="IMAG0879.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4WvE2E5LI/AAAAAAAACkE/rHiWd_vJMBU/s288/IMAG0879.jpg" alt="IMAG0879.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TI4WvRc9m5I/AAAAAAAACkI/o9BPB_3ADiA/IMAG0881.jpg" title="IMAG0881.jpg" class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TI4WvRc9m5I/AAAAAAAACkI/o9BPB_3ADiA/s288/IMAG0881.jpg" alt="IMAG0881.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4Wvz-BUwI/AAAAAAAACkM/Ge-oePod5FY/IMAG0884.jpg" title="IMAG0884.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4Wvz-BUwI/AAAAAAAACkM/Ge-oePod5FY/s288/IMAG0884.jpg" alt="IMAG0884.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/_D3MEZZKTC8Y/TI4WwQXlUpI/AAAAAAAACkw/Ev2QjWK5NqI/IMAG0886.jpg" title="Der Fanclub durfte mit auf die Bühne - und aus dem strömenden Regen raus." class="highslide"&gt;&lt;img src="http://lh5.ggpht.com/_D3MEZZKTC8Y/TI4WwQXlUpI/AAAAAAAACkw/Ev2QjWK5NqI/s288/IMAG0886.jpg" alt="IMAG0886.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4WwpUqFPI/AAAAAAAACkU/Pzo4rFSLM8E/IMAG0889.jpg" title="IMAG0889.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TI4WwpUqFPI/AAAAAAAACkU/Pzo4rFSLM8E/s288/IMAG0889.jpg" alt="IMAG0889.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;[/pe2-gallery]&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Offbeattermine II/2010</title><link>https://flowfx.de/blog/offbeattermine-ii2010/</link><pubDate>Sun, 05 Sep 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-ii2010/</guid><description>&lt;p&gt;Für die kommende Woche habe ich irgendwie nur einen Termin mit Live-Offbeatmusik gefunden:
&lt;p&gt;12.09. &lt;a href="http://www.myspace.com/skallandcrossbones"&gt;&lt;strong&gt;Skall&amp;rsquo;n&amp;rsquo;Crossbones&lt;/strong&gt;&lt;/a&gt; @ &lt;a href="http://www.rockatchurch.de/"&gt;Rock at Church&lt;/a&gt;, Ladenburg, 20:30 Uhr.&lt;/p&gt;
&lt;p&gt;Da werde ich auch wohl hinfahren, wollte die Jungs eigentlich schon letztes Jahr mal angucken. Und Altstadtfest hört sich ja nicht schlecht an.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Ludwigshafen's finest: Selection</title><link>https://flowfx.de/blog/ludwigshafens-finest-selection/</link><pubDate>Sat, 04 Sep 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/ludwigshafens-finest-selection/</guid><description>&lt;p&gt;Nicht dass das irgendwas mit Reggae zu tun hätte, aber ich muss hier jetzt Werbung für meine neue Ludwigshafener Lieblingsband machen: &lt;a href="www.myspace.com/selectionde"&gt;Selection&lt;/a&gt;. Vor ein paar Wochen zufällig im Kosmodrom gehört, haben die Jungs mich gestern Abend mit ihrem Auftritt im KulTurm ein weiteres Mal überzeugt. Mit meiner musikalischen Einordnung wage ich mich mal weit aus dem Fenster: Irgendwo zwischen Billy Joel, Rio Reiser und den Doors. Das ganze mit deutschen Texte, die mehr als nur Gesangsfutter sind. Abgesehen davon stehe ich ja auf eingängig zelebrierte Akkordkadenzen, und das gibt es bei Selection zu Genüge zu hören. Für meinen Geschmack kann der Sound sogar noch mehr Bombast vertragen, da bin ich mal sehr auf das nächste Album gespannt!
&lt;/p&gt;&lt;p style="text-align: left"&gt;Hier ein paar dunkle Fotos von gestern Abend:&lt;/p&gt;
&lt;p&gt;[pe2-gallery class=&amp;ldquo;aligncenter&amp;rdquo; ]
&lt;a href="http://lh3.ggpht.com/_D3MEZZKTC8Y/TII0LgrK40I/AAAAAAAACi4/r4LZ7M96R4c/IMAG0866.jpg" title="IMAG0866.jpg" class="highslide"&gt;&lt;img src="http://lh3.ggpht.com/_D3MEZZKTC8Y/TII0LgrK40I/AAAAAAAACi4/r4LZ7M96R4c/s288/IMAG0866.jpg" alt="IMAG0866.jpg" class="aligncenter" height="300"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TII0MbQMFxI/AAAAAAAACi4/nhzv44gHHPI/IMAG0867.jpg" title="IMAG0867.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TII0MbQMFxI/AAAAAAAACi4/nhzv44gHHPI/s288/IMAG0867.jpg" alt="IMAG0867.jpg" class="aligncenter" height="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TII0MiZNe6I/AAAAAAAACi4/j9bLqk070mY/IMAG0869.jpg" title="IMAG0869.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TII0MiZNe6I/AAAAAAAACi4/j9bLqk070mY/s288/IMAG0869.jpg" alt="IMAG0869.jpg" class="aligncenter" width="height"&gt;&lt;/a&gt;&lt;a href="http://lh4.ggpht.com/_D3MEZZKTC8Y/TII0NUT4ERI/AAAAAAAACi4/eD9wpfmK5h8/IMAG0871.jpg" title="IMAG0871.jpg" class="highslide"&gt;&lt;img src="http://lh4.ggpht.com/_D3MEZZKTC8Y/TII0NUT4ERI/AAAAAAAACi4/eD9wpfmK5h8/s288/IMAG0871.jpg" alt="IMAG0871.jpg" class="aligncenter" width="300"&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/_D3MEZZKTC8Y/TII0N-jo3_I/AAAAAAAACi4/StfHv5P7sUE/IMAG0873.jpg" title="IMAG0873.jpg" class="highslide"&gt;&lt;img src="http://lh6.ggpht.com/_D3MEZZKTC8Y/TII0N-jo3_I/AAAAAAAACi4/StfHv5P7sUE/s288/IMAG0873.jpg" alt="IMAG0873.jpg" class="aligncenter" height="300"&gt;&lt;/a&gt;[/pe2-gallery]&lt;/p&gt;
&lt;p style="text-align: left"&gt;Und hier das offizielle Musikvideo:&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;/p&gt;</description></item><item><title>Offbeattermine I/2010</title><link>https://flowfx.de/blog/offbeattermine-i2010/</link><pubDate>Mon, 23 Aug 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/offbeattermine-i2010/</guid><description>&lt;p&gt;Eigentlich wollte ich hiermit eine tolle neue Artikelreihe beginnen, die die interessanten Reggae-, Dancehall- und Ska-Termine der nächsten Wochen in Mannheim, Heidelberg und Umgebung auflistet. Zunächst mal hauptsächlich für mich selbst, um einen Überblick zu bekommen. Leider ist meine Ausbeute bei regioactive, regiomusik und co sehr mager. Neben unseres Sound Generators Gigs habe ich gerade mal ein Live-Musik-Angebot diese Woche gefunden, und das sieht schwer nach Cover-Band aus. Wie auch immer, ich hoffe auf eine bessere Zukunft, mal sehen was da noch geht.
&lt;p&gt;24.08. &lt;a href="http://www.myspace.com/superjammusic"&gt;&lt;strong&gt;Superjam&lt;/strong&gt;&lt;/a&gt; @ &lt;a href="http://events.myspace.com/Event/4313199/Superjam"&gt;REGGAE-KERWE&lt;/a&gt;, Mannheim-Sandhofen, 18-23 Uhr, Open-Air, Eintritt frei.&lt;/p&gt;
&lt;p&gt;25.08. &lt;strong&gt;&lt;a href="http://www.myspace.com/soundgeneratorsband"&gt;Sound Generators&lt;/a&gt; ft. &lt;a href="http://www.myspace.com/lionyard"&gt;White Lion&lt;/a&gt;&lt;/strong&gt; @ &lt;a href="http://www.kosmodrom-hd.de"&gt;Kosmodrom&lt;/a&gt;, Heidelberg, 19-22 Uhr, Eintritt frei. &lt;a href="http://www.facebook.com/event.php?eid=140674752639336&amp;amp;ref=search"&gt;Facebook-Veranstaltung&lt;/a&gt;.&lt;/p&gt;
&lt;br&gt;
&lt;em&gt;Update&lt;/em&gt;: und hier merkt man, dass ich noch neu bin in der Ecke hier. Das &lt;strong&gt;&lt;a href="http://www.myspace.com/lionhillsound"&gt;Lionhill Soundsystem&lt;/a&gt;&lt;/strong&gt; legt jeden Dienstag im &lt;a href="http://www.zollhofgarten.de"&gt;Zollhofgarten&lt;/a&gt; zum &lt;a href="http://events.myspace.com/Event/6357249/Dubby-Tunesday"&gt;Dubby Tunesday&lt;/a&gt; auf. Das werde ich mir nächste Woche mal angucken müssen.&lt;/p&gt;</description></item><item><title>Skeech "bad in Berlin"</title><link>https://flowfx.de/blog/skeech-bad-in-berlin/</link><pubDate>Sun, 15 Aug 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/skeech-bad-in-berlin/</guid><description>&lt;p&gt;Aus aktuellem Anlass, wenn auch jetzt einen halben Tag zu spät, will ich hier endlich mal das beste und bisher einzige produzierte Musikvideo einer meiner Bands verlinken: Skeech "bad in Berlin" ist letztes Jahr während unseres - wen wundert's? - Berlin-Trips mit Gig im Ballhause Berlin (Mitte) entstanden:
&lt;p&gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;p style=&amp;ldquo;text-align: center&amp;rdquo;&amp;gt;&lt;/p&gt;
&lt;/p&gt;&lt;p style="text-align: center"&gt;&lt;/p&gt;</description></item><item><title>Sound Generators beim Chiemsee Reggae Summer</title><link>https://flowfx.de/blog/sound-generators-beim-chiemsee-reggae-summer/</link><pubDate>Thu, 12 Aug 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sound-generators-beim-chiemsee-reggae-summer/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de" title="Sound Generators: Backing Band"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Heute in zwei Wochen starte ich mit meinen &lt;a href="http://www.myspace.com/soundgeneratorsband"&gt;Sound Generators&lt;/a&gt; zum Chiemsee Reggae Summer. Wir werden dort am Sonntag Nachmittag um 16 Uhr bei den &amp;ldquo;Open Decks&amp;rdquo; mit &lt;a href="http://www.myspace.com/lionyard"&gt;White Lion&lt;/a&gt; aus Freiburg auftreten. Als kleinen Vorgeschmack auf die Show hat &lt;a href="http://www.myspace.com/samson_locks"&gt;Samson&lt;/a&gt; einen Snippet-Mix aus unseren Proberaumaufnahmen gebastelt:&lt;/p&gt;
&lt;p&gt;Für die Rhein-Neckar-Meute, die nicht mit zum Chiemsee fährt geben wir außerdem am 25. August im Kosmodrom ein kleines Gratiskonzert. Der erste Auftritt der Sound Generators überhaupt! Infos hier: &lt;a href="http://bit.ly/b2vXsz"&gt;http://bit.ly/b2vXsz&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Während der Festivalwoche plane ich regelmäßig via Twitter von unserer Reise zu berichten, vornehmlich über das Sound Generators Twitter-Konto: &lt;a href="http://www.twitter.com/soundgenerators"&gt;@SoundGenerators&lt;/a&gt;. Dank moderner Technik werde ich auch aktuelle Fotos liefern. Mal sehen wie das klappt, mein UMTS-Trafficvolumen habe ich jedenfalls schon aufgestockt!&lt;/p&gt;</description></item><item><title>Sound Generators ft. White Lion</title><link>https://flowfx.de/blog/sound-generators-ft-white-lion/</link><pubDate>Thu, 05 Aug 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/sound-generators-ft-white-lion/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Der Chiemsee Reggae Summer kann kommen! Letztes Wochenende haben wir intensiv unser Set mit dem Freiburger Sänger &amp;lsquo;White Lion&amp;rsquo; geprobt, und nun steht die Sache. Bevor wir Ende August gemeinsam nach Bayern aufbrechen, wird es wahrscheinlich noch ein kleines und feines Konzert in Heidelberg geben. Freut euch schon mal drauf! Wir tun es!&lt;/p&gt;
&lt;p&gt;Hier noch ein paar Eindrücke vom Wochenende:&lt;/p&gt;</description></item><item><title>Chiemsee Reggae Summer - Das Open Decks Programm</title><link>https://flowfx.de/blog/chiemsee-reggae-summer-das-open-decks-programm/</link><pubDate>Wed, 23 Jun 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/chiemsee-reggae-summer-das-open-decks-programm/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de" title="Sound Generators - Reggae Backing Band"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Das Programm der Open Decks Bühne beim diesjährigen &lt;a href="http://www.chiemsee-reggae.de/"&gt;Chiemsee Reggae Summer&lt;/a&gt; steht. Wichtigster Termin natürlich: Sonntag, 16 Uhr. Aber seht selbst:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.soundgenerators.de/wp-content/uploads/2010/06/CRS_opendecks_quer_web.jpg"&gt;&lt;img class="alignnone size-medium wp-image-131" src="http://wp.soundgenerators.de/wp-content/uploads/2010/06/CRS_opendecks_quer_web-300x212.jpg" alt="Programm der Open Decks Bühne beim Chiemsee Reggae Summer 2010" width="300" height="212"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>In Mannheim wimmelt's von guten Bassisten!</title><link>https://flowfx.de/blog/in-mannheim-wimmelts-von-guten-bassisten/</link><pubDate>Wed, 14 Apr 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/in-mannheim-wimmelts-von-guten-bassisten/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de" title="Sound Generators: Backing Band"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Das ist wenigstens der Eindruck, den wir letzten Samstag bekommen haben. Mit Pille außer Landes, hat uns Guiseppe nämlich tatkräftig am 5-Saiter unterstützt. So hat die Probe mit &lt;a href="http://www.myspace.com/defsam"&gt;Talisman&lt;/a&gt; am Mic erst richtig Spaß gemacht.&lt;/p&gt;
&lt;p&gt;Moment. Pille?&lt;a href="http://wp.soundgenerators.de/wp-content/uploads/2010/04/10725_1110207004578_1508961207_30251894_4109393_n.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style="text-align: center"&gt;&lt;a href="http://wp.soundgenerators.de/wp-content/uploads/2010/04/10725_1110207004578_1508961207_30251894_4109393_n.jpg"&gt;&lt;img class="size-medium wp-image-121 aligncenter" src="http://wp.soundgenerators.de/wp-content/uploads/2010/04/10725_1110207004578_1508961207_30251894_4109393_n-199x300.jpg" alt="" width="139" height="210"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pille ist der gute Mann, der in unserer ersten Gesamtprobe aushilfsweise den Bass gezupft hat. Und der ist so gut, dass wir ihn gleich behalten haben. Damit ist die Truppe endgültig komplett und die Gigplanungen können beginnen.&lt;/p&gt;
&lt;p&gt;Nach dem letzten Wochenende hat unsere Riddimliste auch schon eine ansehnliche Länge vorzuweisen. Hier mal ein Auszug:&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;Lalibella&lt;/li&gt;
 &lt;li&gt;Drifter&lt;/li&gt;
 &lt;li&gt;Stalag&lt;/li&gt;
 &lt;li&gt;Satta&lt;/li&gt;
 &lt;li&gt;Answer&lt;/li&gt;
 &lt;li&gt;Intercom&lt;/li&gt;
 &lt;li&gt;Doctor's Darling&lt;/li&gt;
 &lt;li&gt;Stage Time&lt;/li&gt;
 &lt;li&gt;Hardcore&lt;/li&gt;
 &lt;li&gt;World-A-Music&lt;/li&gt;
 &lt;li&gt;Tempo&lt;/li&gt;
 &lt;li&gt;Chase The Devil&lt;/li&gt;
 &lt;li&gt;Bobo Revolution&lt;/li&gt;
 &lt;li&gt;Come Down Father&lt;/li&gt;
 &lt;li&gt;Truth &amp;amp; Rights&lt;/li&gt;
 &lt;li&gt;Real Rock&lt;/li&gt;
 &lt;li&gt;Broken Stick&lt;/li&gt;
 &lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wer dann bald mit uns auf der Bühne steht, wird noch nicht ganz verraten. Talisman und &lt;a href="http://www.myspace.com/lionyard"&gt;White Lion&lt;/a&gt; werden jedenfalls sicher nicht die letzten sein.&lt;/p&gt;</description></item><item><title>Erste Vier-Mann-Session in Mannheim</title><link>https://flowfx.de/blog/erste-vier-mann-session-in-mannheim/</link><pubDate>Wed, 17 Mar 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/erste-vier-mann-session-in-mannheim/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de" title="Sound Generators: Backing Band"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So langsam geht die Sache los. Letztes Wochenende haben wir zum ersten mal zu viert geprobt. Joe, Samson, Flojo und Phizzle an der Gitarre. Dass Reggae ohne Bass nicht mal halb so gut ist wie mit, wurde mal wieder viel zu deutlich. War ja nicht anders zu erwarten. Ein Highlight war deshalb die Stunde, die Pille mit seinem Bass am Samstag zum Jammen vorbeikam. Sehr sehr schicke Sache!&lt;/p&gt;
&lt;p&gt;Zur nächsten Session werden wir ein paar Sänger einladen. Der nächste Schritt Richtung Bühnendebut.&lt;/p&gt;
&lt;p&gt;Hier noch ein paar Bilder - das MX200 dient übrigens der Posaune.&lt;/p&gt;</description></item><item><title>This is what you need a horn section for:</title><link>https://flowfx.de/blog/this-is-what-you-need-a-horn-section-for/</link><pubDate>Mon, 08 Feb 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/this-is-what-you-need-a-horn-section-for/</guid><description>&lt;iframe title="YouTube video player" width="480" height="390" src="http://www.youtube-nocookie.com/embed/gHbKZa9x1e8?rel=0&amp;amp;hd=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Die Band formiert sich</title><link>https://flowfx.de/blog/die-band-formiert-sich/</link><pubDate>Sat, 06 Feb 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/die-band-formiert-sich/</guid><description>&lt;p&gt;&lt;em&gt;Dieser Eintrag erschien zuerst auf &lt;a href="http://www.soundgenerators.de" title="Sound Generators: Backing Band"&gt;&lt;a href="https://www.soundgenerators.de"&gt;www.soundgenerators.de&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Die Idee der Sound Generators ist nun eine knappe Woche alt. Vier Fünftel der Besetzung stehen fest, der Dropbox-Ordner mit Riddim-Vorschlägen beinhaltet jetzt schon 64 Dateien, und das erste Engagement ist eingetütet. Die Webseite steht, Facebook und Twitter sind aktiv, bleiben eigentlich nur noch erste Live-Aufnahmen, um das ganze hier etwas interessanter zu gestalten.&lt;/p&gt;
&lt;p&gt;Wer ist nun dabei? &lt;a title="Samson bei MySpace" href="http://www.myspace.com/samson_locks"&gt;Samson&lt;/a&gt; dürfte in der Freiburger Reggae-Szene allgemein bekannt sein. &lt;a title="Hey Joe! bei MySpace" href="http://www.myspace.com/95580548"&gt;Hey Joe!&lt;/a&gt; ist Drummer der fantastischen &lt;a title="Backa Soul online" href="http://www.backasoul.com"&gt;Backa Soul Formation&lt;/a&gt; aus Mannheim, die &lt;a title="Flojo online" href="http://duckedbones.wordpress.com"&gt;mich&lt;/a&gt; in meinem nordbadischen Exil zumindest temporär als Posaunist aufgenommen haben. Tamrin vom &lt;a title="Collynization Soundsystem bei MySpace" href="http://www.myspace.com/collynization"&gt;Collynization Soundsystem&lt;/a&gt; zupft den Bass, und der Gitarristenposten wird sicher ebenso hochkarätig vergeben werden.&lt;/p&gt;
&lt;p&gt;Nächste Woche werden Samson und ich erstmal wieder an die Bläserarrangements für &lt;a title="Leo Fairii bei MySpace" href="http://www.myspace.com/leofairii"&gt;Leo Fairii&lt;/a&gt; arbeiten, und Mittwoch selbstverständlich das Kamikaze unsicher machen. Stay tuned!&lt;/p&gt;
&lt;p&gt;[gallery link=&amp;ldquo;file&amp;rdquo; columns=&amp;ldquo;2&amp;rdquo; orderby=&amp;ldquo;rand&amp;rdquo;]&lt;/p&gt;</description></item><item><title>A new toy</title><link>https://flowfx.de/blog/a-new-toy/</link><pubDate>Fri, 05 Feb 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/a-new-toy/</guid><description>&lt;p&gt;Yesterday I finally managed to by a power supply for the guitar-multi-effect-gismo I lended from a friend. This one here:
&lt;a href="http://picasaweb.google.de/lh/photo/0-1_cJwM5zozMmcarRVeUg?authkey=Gv1sRgCJGW-Kud0YbBAg&amp;amp;feat=embedwebsite"&gt;&lt;img class="aligncenter" src="http://lh3.ggpht.com/_D3MEZZKTC8Y/S2wyeZfpfeI/AAAAAAAAA30/27HJlsFzMAI/s288/CIMG4463.JPG" alt=""&gt;&lt;/a&gt;Fun thing that happend at the electronics store: On the power supply's packaging it was not noted, whether it provides AC or DC current. So I asked someone from the store's staff: "Well, does it provide AC or DC current?" - "Why? Does it matter?" is what he answered...
&lt;p&gt;So last night before the rehearsal I tried out the Korg thingy, attaching it to the rehearsal room PA and a Shure microphone. It works. Although it is quite hard to hear the effects when you&amp;rsquo;re playing the trombone at the same time, I am pretty sure I will use it on stage soon. Some details maybe: The Korg needs a 9V DC power supply. It has one input and one to two (stereo anyone?) output plugs, and one for a volume pedal. I am not sure how good the built-in pre-amplifier works. I&amp;rsquo;ll have to test it some more. Testing will hopefully be easy as the gismo also has a headphone output which I can plug directly into my Macbook and record it. Maybe that way I can asses the different sounds.&lt;/p&gt;
&lt;p&gt;There is another device sitting on my desk at the moment:&lt;/p&gt;
&lt;/p&gt;&lt;p style="text-align:left"&gt;&lt;a href="http://picasaweb.google.de/lh/photo/1--8L_vAf3VNm2-vI6zgYg?authkey=Gv1sRgCJGW-Kud0YbBAg&amp;amp;feat=embedwebsite"&gt;&lt;img class="aligncenter" src="http://lh5.ggpht.com/_D3MEZZKTC8Y/S2wygrFGOZI/AAAAAAAAA4A/lYPlKycN-sI/s288/CIMG4466.JPG" alt="" width="216" height="288"&gt;&lt;/a&gt;But I don't know yet, if it works. Next week maybe.&lt;/p&gt;</description></item><item><title>26c3</title><link>https://flowfx.de/blog/26c3/</link><pubDate>Tue, 12 Jan 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/26c3/</guid><description>&lt;p&gt;Two weeks ago, between Christmas and New Year&amp;rsquo;s, I attended the &lt;a title="26c3.de" href="http://www.26c3.de/"&gt;26th Chaos Communication Congress&lt;/a&gt; (26c3) in Berlin, the anual hackers conference organized by the &lt;a title="CCC e.V." href="http://www.ccc.dd"&gt;Chaos Computer Club&lt;/a&gt;. I had never been to any c3 before, and I didn&amp;rsquo;t know anyone else attending. So I was rather excited about what would happen there.&lt;/p&gt;
&lt;p&gt;Long story short: It was a very inspiring experience. I saw and met many people with (on the first glance) crazy ideas, who didn&amp;rsquo;t wait but just acted on those ideas (e.g. &lt;a href="http://events.ccc.de/congress/2009/Fahrplan/events/3637.en.html"&gt;3d-printing at home&lt;/a&gt;, &lt;a href="http://events.ccc.de/congress/2009/Fahrplan/events/3550.en.html"&gt;finally playing well known game shows with interesting questions&lt;/a&gt;, or &lt;a href="http://scytale.name/blog/2009/11/jedem-seine-wikipedia"&gt;saving Wikipedia&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;One of the most interesting talks for me personally was Audrey Penven speaking about &lt;a href="http://events.ccc.de/congress/2009/Fahrplan/events/3579.en.html"&gt;&amp;ldquo;Photography and the Art of Doing it Wrong&amp;rdquo;&lt;/a&gt;, the essence of which was: Whenever you do something, and you make a mistake, or the technology fails you, try looking on the bright side and explore the possibilities these mistakes offer. Audrey talked a lot about doing photography in ways everyone else would consider wrong. But by doing it wrong, she - and many others - create wonderful art you couldn&amp;rsquo;t do any other way. Too see what I mean you should look at &lt;a href="http://www.audreypenven.net/"&gt;Audrey&amp;rsquo;s webpage&lt;/a&gt; and &lt;a href="http://mirror.fem-net.de/CCC/26C3/mp4/26c3-3579-en-photography_and_the_art_of_doing_it_wrong.mp4"&gt;download the recording of her talk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;btw: Almost every talk at 26c3 was recorded and can be downloaded from &lt;a href="https://events.ccc.de/congress/2009/wiki/Conference_Recordings"&gt;the conference webpage.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To further illustrate this, I am happy to present one creative mistake myself. Of course it&amp;rsquo;s a musical recording, specifically an early rehearsal recording of &lt;a href="http://www.theuplifters.de"&gt;our&lt;/a&gt; keyboarder&amp;rsquo;s top hit single &amp;ldquo;It&amp;rsquo;s Not You&amp;rdquo;. Here, her voice is amplified via a bass guitar amp only because the rehearsal room PA was not there that night. This makes for a great and very fitting sound in this song, and we&amp;rsquo;ll have to play with that kind of stuff much more often I think. Here you go:&lt;/p&gt;
&lt;iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1329665&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/duckedbones" title="flojo -" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;flojo -&lt;/a&gt; · &lt;a href="https://soundcloud.com/duckedbones/its-not-you" title="Its not you - bass amplified vocals" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Its not you - bass amplified vocals&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Note: This song is not (yet) Creative Commons licenced as it is not my own work!&lt;/p&gt;</description></item><item><title>Wuff! Ouch! Lächel!</title><link>https://flowfx.de/blog/wuff-ouch-lachel/</link><pubDate>Mon, 11 Jan 2010 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/wuff-ouch-lachel/</guid><description>&lt;p&gt;Hund: "Wuff!"
Ich: &lt;em&gt;fall&lt;/em&gt; "Ouch" (denke: Was läuft mir dieser Scheißköter auf dieser scheißglatten Straße einfach so vors Fahrrad?)
Er: &lt;em&gt;runzel&lt;/em&gt; (denkt: Will der scheiß Radfahrer etwa meckern?)
Ich: (denke: Selbstschuld! Was bremst du auch für nen Hund?) &lt;em&gt;grins&lt;/em&gt; "Mmh, da bin ich wohl zu schnell gefahren."
Er: &lt;em&gt;lächel&lt;/em&gt; "Joh, ist mir bei dem Wetter auch schon mehrmals passiert."
Ich: &lt;em&gt;lächel&lt;/em&gt;
Er: &lt;em&gt;lächel&lt;/em&gt;
Ich: "Tschüß"
Er: "Tschüß"&lt;/p&gt;</description></item><item><title>New Ugly Man rehearsal recording</title><link>https://flowfx.de/blog/new-ugly-man-rehearsal-recording/</link><pubDate>Fri, 18 Dec 2009 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/new-ugly-man-rehearsal-recording/</guid><description>&lt;p&gt;Yesterday I tested my macbook's built-in microphone (successfully!) and one of the results is a new recording of the Ugly Man tune. With lyrics this time, but no guitar.
&lt;iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/1150638&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/duckedbones" title="flojo -" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;flojo -&lt;/a&gt; · &lt;a href="https://soundcloud.com/duckedbones/ugly-man-rehearsal-recording-1" title="Ugly Man - rehearsal recording" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Ugly Man - rehearsal recording&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;(Played by The Uplifters &amp;amp; Block Ice Horn Section)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;&lt;/p&gt;</description></item><item><title>"Ugly Man" - new original ska tune</title><link>https://flowfx.de/blog/ugly-man-new-original-ska-tune/</link><pubDate>Tue, 24 Nov 2009 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/ugly-man-new-original-ska-tune/</guid><description>&lt;p&gt;"Ugly Man" is an original ska tune by me with help from &lt;a href="http://www.theuplifters.de"&gt;The Uplifters &amp;amp; Block Ice Horn Section&lt;/a&gt;. Lyrics are from &lt;a href="https://myspace.com/crimedabime"&gt;a crime don't come alone&lt;/a&gt;. It was first performed November 21st 2009. The recording so far is a rough rehearsal recording without lyrics, solos or such:
&lt;iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/5744679&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"&gt;&lt;/iframe&gt;
&lt;p&gt;Here&amp;rsquo;s the &lt;a href="https://flowfx.de/uploads/uglyman.pdf"&gt;Ugly Man - Lead Sheet&lt;/a&gt;. The arrangement goes somewhat like this:&lt;/p&gt;
&lt;/p&gt;&lt;ul&gt;
 &lt;li&gt;A (horns only) A B A (Intro plus theme)&lt;/li&gt;
 &lt;li&gt;A B A (verse 1)&lt;/li&gt;
 &lt;li&gt;A B A (verse 2)&lt;/li&gt;
 &lt;li&gt;C - a capella part&lt;/li&gt;
 &lt;li&gt;A A B A (theme)&lt;/li&gt;
&lt;/ul&gt;&lt;/body&gt;&lt;/html&gt;</description></item><item><title>Riddim - Rock On - Garage Band version</title><link>https://flowfx.de/blog/riddim-rock-on-garage-band-version/</link><pubDate>Fri, 20 Nov 2009 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/riddim-rock-on-garage-band-version/</guid><description>&lt;p&gt;Here's a new riddim idea. It's a song mostly in A major, based on the classic changes to C and D. Got the idea from &lt;a title="King Floyd - Groove Me" href="http://www.youtube.com/watch?v=T7hEyTghGd4"&gt;King Floyd's / The Blues Brothers' "Groove Me"&lt;/a&gt;. Haven't played it with my band yet, so I'm still curious what it will sound like.
&lt;p&gt;[soundcloud url=&amp;ldquo;http://soundcloud.com/duckedbones/rock-on-garage-band-version-0-1&amp;rdquo; params=&amp;ldquo;show_comments=true&amp;amp;auto_play=false&amp;amp;color=1a7321&amp;rdquo; width=&amp;ldquo;100%&amp;rdquo; height=&amp;ldquo;81&amp;rdquo; ]&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the &lt;a href="http://duckedbones.wordpress.com/files/2009/11/rockon.pdf"&gt;Rock On - Lead Sheet&lt;/a&gt;.&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 07 - The End</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-07-the-end/</link><pubDate>Sat, 20 Aug 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-07-the-end/</guid><description>&lt;p&gt;Hallo.
&lt;p&gt;Ich bin zurück in Deutschland, seit ein paar Tagen schon, und genieße die Behaglichkeit von vernünftigem Essen, verständlichem Fernsehen und kostenlosen Duschen.&lt;/p&gt;
&lt;p&gt;Der Flug von Kirkenes zu Oslos nächstgelegenem Flughafen verlief problemlos. Der erhoffte Totalschaden am Rad - zwecks Versicherungsfall - blieb vollkommen aus. Erster Eindruck in Südnorwegen: Das Wetter war nicht groß anders, dafür aber 10 Grad wärmer. Da macht auch Regen wieder Spaß. Auf dem Weg nach Oslo übernachtete ich noch eine Nacht bei einem Kumpel aus Trondheim, der dort einen Sommerjob hat. Oslo war auch ganz nett, es schien nämlich die Sonne.&lt;/p&gt;
&lt;p&gt;Das Wetter blieb gut, so dass sogar ich die Fährfahrt genießen konnte. Ich saß sehr lange an Deck und bewunderte die Stadt und den Oslofjord in tollem Licht. Der Abschied von Norwegen war sehr traurig. Ich kann nur die Nationalhymne zitieren: Ja, ich liebe dieses Land!&lt;/p&gt;
&lt;p&gt;Die Nacht in der vereinsamten Viererkabine war sehr erholsam. Ab dem nächsten Morgen schloss sich eine schnelle Fahrt durch Dänemark an. Einziges Ziel: Flensburg. Dänemark ist wirklich toll! Hübsche Orte, gute Straßen und exzellente Radwege. Der Kontrast zu Deutschland ist enorm. Fazit: Die Kommunen sind tatsächlich pleite, und deutsche Radwegeplaner fahren Auto.&lt;/p&gt;
&lt;p&gt;Nach einem netten Abend in Flensburg schlossen sich ein paar Tage Verwandten- und Freundebesuch an. Das war gut. Da gab es viel Kaffee und Kuchen. Und gutes deutsches Grillfleisch. Das ganz normale Sommerleben also.&lt;/p&gt;
&lt;p&gt;Mitte nächster Woche fahre ich mit dem Zug zurück nach Freiburg. Heute nachmittag sorge ich dafür, dass ich die nächsten Tage faul vor dem Fernseher liegen darf. Ich nehme am 3. Munsteraner Triathlon teil, nachdem ich monatelang nicht gelaufen geschweige denn geschwommen bin. Das wird sicher ein großer Spaß :-/ und ne Menge Muskelkater.&lt;/p&gt;
&lt;p&gt;Ich bin jedenfalls nun glücklich, zu Hause zu sein. Ich hoffe, meine Briefe von unterwegs haben Euch ein wenig gefallen. In einiger Zeit werde ich auch dafür sorgen, dass ihr alle die Bilder zu sehen bekommt, die noch in der Entwicklung sind. Aber, Geduld!&lt;/p&gt;
&lt;p&gt;Gruß Florian
Munster 20.08.05&lt;/p&gt;
&lt;p&gt;&lt;a href="https://picasaweb.google.com/104976288460797943627/20050801LebenszeichenAusNorwegen?authuser=0&amp;amp;authkey=Gv1sRgCKv6j4Wnt-zygQE&amp;amp;feat=directlink" title="Fotoalbum - Norwegenreise 2005" target="_blank"&gt;Alle Fotos von der Reise.&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 06 - A Night In Tunesia</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-06-a-night-in-tunesia/</link><pubDate>Wed, 10 Aug 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-06-a-night-in-tunesia/</guid><description>&lt;p&gt;Hallo.
&lt;p&gt;Ich bin am Ende. Wenigstens von meiner Norwegenreise. Ich sitze nun in Kirkenes in der Bibliothek und staune ueber das Sommerwetter. Das gab es in letzter Zeit sowieso nur an Ruhetagen, deswegen auch heute. Morgen geht mein Flieger nach Oslo.&lt;/p&gt;
&lt;p&gt;Der Titel dieser Email bedarf denke ich einer Erklærung. Ich sass also vor ein paar Tagen in Børselv vor dem Supermarkt beim Fruehstueck. Neben mir ein Dorfalter, der mich natuerlich gleich angesprochen hat. Im Verlaufe des Gespræchs meint er, Porsanger - die dortige Kommune/Gemeinde -, sei die trockenste Norwegens. Der Jahresniederschlag sei vergleichbar mit dem in der Sahara. Dummerweise hatte es die ganze Nacht durchgeregnet, und auch an dem morgen trøpfelte es noch ordentlich vom Himmel. Die Statistik muss also schon etwas ælter sein. Wer nun meint, Tunesien hætte gar kein Stueck der Sahara, der mag recht haben. Weiss ich nicht. Es war aber der beste Titel, der mir dazu einfiel.&lt;/p&gt;
&lt;p&gt;Den Titel der letzten Email møchte ich uebrigens offiziell in &amp;ldquo;Riders On The Storm&amp;rdquo; ændern. Das passt viel viel besser. Ich wundere mich immernoch, wieso ich da nicht frueher drauf gekommen bin.&lt;/p&gt;
&lt;p&gt;Kurz nachdem ich die eben genannte Email aus Honningsvåg geschickt hatte, rief mich Arne an, ein Norweger den ich in Alta getroffen hatte. Er lud mich ganz frei auf seine Hytte, 80km nørdlich von Alta, ein. Damit war der Plan fuer die næchsten Tage gemacht. Ich fuhr noch zwei Tage gegen den Wind, der auf dem Hinweg noch in die andere Richtung geblasen hatte. Dann verbrachte ich zwei erholsame Næchte auf Arnes Hytte im Wald. Nach ueber drei Monaten konnte ich auch endlich wieder eine Sauna geniessen!&lt;/p&gt;
&lt;p&gt;Die meisten Norweger haben ihren festen Urlaubsort. Entweder haben sie ne Sommerhytte, oder einen Wohnwagen irgendwo stehen. Arne ist nun im Urlaub in sein leerstehendes Elternhaus gezogen. Das liegt, gluecklich fuer mich, auf dem Weg nach Kirkenes! :) Durch noch ein wenig Regen, und Wind natuerlich, bin ich also in gemuetlichen vier Tagen nach Varangerbotn am Varangerfjord geradelt. Drei Sachen sind erwæhnenswert: Die Bib in Lakselv, einem ansonsten æusserst tristen Ort, ist sehr nett. Dort habe ich lange gesessen, Emails geschrieben und mit der Bibliothekarin geplaudert.&lt;/p&gt;
&lt;p&gt;50km hinter dem schon erwæhnten Børselv findet sich der waldreiche und hæuserarme Ort Kunes. Jeder, der mal dort durchkommt, muss einen Blick in &amp;ldquo;Eli&amp;rsquo;s Sommerkaffè&amp;rdquo; werfen! Dort gibt es guten, guenstigen Kaffee, und noch bessere, frisch gebackene Waffeln. Ausserdem die Chance auf nette Gespræche mit dem Hausherren Edmund, ein etwas kauziger Typ. Das tollste sind natuerlich die Sofas, und ganz wichtig: Es ist warm dort! - Radler brauchen nicht viel um gluecklich zu sein..&lt;/p&gt;
&lt;p&gt;30 km hinter Kunes beginnt das Ifjordjell, eine Bergregion wie viele andere. Aber die schønste, die ich bisher in Finnmark erlebt habe. Dazu beigetragen hat natuerlich wiedermal auch das Wetter. Es hat nicht geregnet, und der Wind hielt sich in Grenzen. Dann geht alles viel viel leichter!&lt;/p&gt;
&lt;p&gt;In Varangerbotn, wieder bei Arne, hatte ich wieder eine sehr gute Zeit. Am ersten Abend gab es natuerlich die obligatorische Sauna. Bei Arnes Kumpel Kåre sassen wir dann noch bis 4 bei Bier und Wodka - ich habe mich diesmal vornehm zurueckgehalten. Ehrlich. Der næchste Tag, letzten Sonntag also, brachte wunderschønes Wetter mit Wærme und Sonnenschein. Ist klar, ich bin ja auch nicht geradelt. Das schønste Ereignis des Tages war mal wieder das Abendessen. Es gab gebratenen Lachs mit allem was dazu gehørt. Køstlich!&lt;/p&gt;
&lt;p&gt;Zwei Tage bin ich dann noch durch mehr oder minder ungemuetliches Wetter Richtung Osten gefahren. Mittlerweile brauche ich abends im Zelt meine Stirnlampe, um vernuenftig schreiben zu kønnen. Es wird also auch hier Winter! Die Mitternachtssonne ist schon lange nicht mehr zu sehen. Am Nordkapp hætte ich nochmal eine Chance gehabt, die Wolken waren aber dagegen. So muss ich mich mit dem einmaligen Abend auf der Insel Senja, am Tag vor Tromsø, zufrieden geben. Dort war ich den ganzen Abend hindurch geradelt. Um 22 Uhr musste ich meine Schirmmuetze aufsetzen - die Sonne blendete! Gegen halb eins war ich an der Nordspitze der Insel angekommen. Dort gab es einen kleinen Sandstrand, flaches Gras, sogar eine Toilette (Toilette heisst hier meistens Plumpsklo), und die freie Aussicht nach Norden. Dort stand die Sonne. Und ging nicht unter! Kurz nach eins bewegte sie sich schon wieder nach oben. Ich ging zu einer nicht ungewøhnlichen Zeit
schlafen, die Sonne schien trotzdem in mein Zelt! :) Das war schon ein besonderer Abend.&lt;/p&gt;
&lt;p&gt;Gestern war auch nochmal ein sehr netter Tag. Am Ortseingang von Kirkenes habe ich Fritz aus Heidenheim getroffen. Wie das so kommt, haben wir abends gemeinsam unser Lager aufgeschlagen. Suedlich von Kirkenes gibt es ein recht grosses Naherholungsgebiet, in dem es ausdruecklich unerwuenscht ist, &amp;hellip; længer als zwei Næchte zu campen. Das war natuerlich schøn, und mit den Tipps der Einheimischen fanden wir einen wunderschønen See in den Huegeln. Die Zelte stelten wir auf dem Sandstrand auf. Das Wasser war sehr angenehm fuer die Abenddusche. Schwimmen wollte ich aber doch nicht darin. Zu zweit macht das Abendessen auch viel mehr Spass. Zum Fruehstueck kam die Sonne tatsæchlich raus. So dass ich jetzt noch ein paar Stunden gemuetlich in der Stadt verbringen werde, viel Cola fuer die Benzinflaschenreinigung kaufen
werde, und mich nachher auf dem Campingplatz recht nah am Flughafen einmieten werde.&lt;/p&gt;
&lt;p&gt;Ich freue mich auf hochsommerliche Tage in Dænemark und Schleswig-Holstein. Und wenn es die nicht gibt, ist wenigstens das Bier billiger und besser.&lt;/p&gt;
&lt;p&gt;Die næchste und letzte Massenmail kommt aus Deutschland!&lt;/p&gt;
&lt;p&gt;Alles Gute bis dahin,
Florian
Kirkenes, 10.08.05&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-07-the-end" title="Lebenszeichen aus Norwegen - 07"&gt;Weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 07&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 05 - In The Midnight Hour/Let The Sunshine In - (Medley)</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-05-in-the-midnight-hourlet-the-sunshine-in-medley/</link><pubDate>Sat, 30 Jul 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-05-in-the-midnight-hourlet-the-sunshine-in-medley/</guid><description>&lt;p&gt;Hallo.
&lt;p&gt;Ich war am Nordkapp! Ob es sich gelohnt hat? Ansichtssache. Fuer mich ja. Es war der krønende Abschluss einer verrueckten 2-Tagesetappe. 289km bin ich am Stueck gefahren, durch die Nacht. Auf den letzten 140km hatte ich Gegenwind, die letzten 30 von Honningsvåg verwøhnten mich mit Regen und Sturmbøen! Teilweise musste ich berghoch und gegen den Wind schieben. Gesehen habe ich auch nichts. Eine einzige Nebelsuppe, stundenlang. Die Strasse geht auch immer auf und ab. Aber irgendwann tauchen aus diesem nichts ein paar Huetten auf, wo man auch noch 25€ Eintritt zahlen soll. Ausser man ist Radfahrer! Kurz danach sass ich dann bei einem Kaffee in einem schøn warmen Gebæude und war gluecklich.&lt;/p&gt;
&lt;p&gt;Eine Nacht im Zelt habe ich ausgehalten. Am næchsten Tag habe ich aber zusammengepackt, bevor ich den Nachmittag in den Nordkapphallen verbracht habe. Der Wind hatte in der Nacht nochmal zugenommen, ein Wetter fuer das mein Zelt nicht gebaut ist. Es hat sich dennoch wacker geschlagen, drinnen ist nichts nass geworden. Kalt war es aber ausserdem. Gestern abend bin ich 24km durch den Sturm geradelt. Vøllig verrueckte Tour. Eisig kalt, ich wurde einmal gegen die Leitplanke gedrueckt, bergab war Gehen sicherer! Gut, dass ich wusste, wo sich eine Art Hytten-Schlafsaal-Juhe befindet. Vøllig verfroren kam ich dort kurz vor Toresschluss an. Mein abendliches Bier konnte ich mit einem hollændischen Zimmernachbarn teilen. Die Dusche und die Nacht in einem richtigen Bett waren genial!&lt;/p&gt;
&lt;p&gt;Jetzt bin ich kurz in Honningsvåg, zum Einkaufen und Emailsschreiben. Morgen geht es weiter, wie und wohin werde ich mir heute Nacht ueberlegen.&lt;/p&gt;
&lt;p&gt;Der Betreff-Titel passt ganz offensichtlich nicht zum Text. Ich hatte ihn ja aber angekuendigt.. Das gesuchte Ereignis war natuerlich die Mitternachtssonne. Gewonnen hat niemand. Mehr dazu schreibe ich vielleicht, wenn ich mehr Ruhe und Zeit habe. In Kirkenes eventuell? Hier im Souvenierladen kosten die Internetminuten ein Vermøgen.&lt;/p&gt;
&lt;p&gt;Alles Gute, Florian
Honningsvåg, 30.07.05&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-06-a-night-in-tunesia" title="Lebenszeichen aus Norwegen - 06"&gt;Weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 06&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 04 - Yellow Submarine</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-04-yellow-submarine/</link><pubDate>Thu, 21 Jul 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-04-yellow-submarine/</guid><description>&lt;p&gt;Hallo,
und schöne Grüße von meiner Altherren-Tour. So muss ich das mittlerweile aufgrund des sinkenden Kilometerschnitts und des steigenden Bierkonsums nennen. Ihr merkt schon, es geht mir sehr gut hier oben!&lt;/p&gt;
&lt;p&gt;Trotz anderslautender Ankündigung schreibe ich euch aus Tromsö. Die Lofoten sind einfach zu klein, und die dortigen Bibliotheken haben teilweise sehr merkwürdige Öffnungszeiten. Die Bib in Reine hat wöchentlich weniger Stunden geöffnet als der durchschnittliche Student Vorlesungen &lt;em&gt;besucht&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Von Sandnessjöen nach Bodö waren es nur drei lustige Radeltage, mit zwei super Zeltplätzen. Geniale Aussichten aufs Meer mit witzigen Bergen darin. Die zwei wettermäßig schlechtesten Tage der letzten Wochen konnte ich gemütlich in Bodö auf dem Sofa verbringen. Die Wohnung im vierten Stock direkt am Fjord hatte ich aufgrund glücklicher Umstände für mich alleine. :) Mir geht es einfach gut hier!&lt;/p&gt;
&lt;p&gt;Oft wenigstens. Mein Fahrrad sieht das nicht ganz so. Deshalb ein Tipp aus der angewandten Marktwirtschaft: Kauft keine Fahrradersatzteile in Norwegen, und schon gar nicht nördlich des Polarkreises! Ich musste in Bodö ein komplett neues Laufrad kaufen, zum ca zweieinhalbfachen Preis verglichen mit Deutschland.. Und schon war das Erasmus-Geld, über dass ich mich ein paar Tage vorher so sehr gefreut hatte, wieder weg.&lt;/p&gt;
&lt;p&gt;Die Fährfahrt nach Moskenes auf den Lofoten waren meine schlimmsten 3 Stunden nicht nur der Reise, sondern der letzten Jahre. Man sollte Boote verbieten. Sollen die doch 100km lange Tunnel bohren, oder gleich einen Busshuttle anbieten! Wenigstens kam ich unterkühlt und ohne meine mittäglichen Pfannkuchen in Moskenes an. Von dem moderaten Kaffeepreis von knapp 2Euro im Hafencafe war ich regelrecht begeistert. Glücklicherweise wusste ich schon vor der Ankunft, wo ich mein Zelt aufschlagen konnte. So hatte ich eine Sorge weniger.&lt;/p&gt;
&lt;p&gt;Die Lofoten selbst habe ich in zwei Tagen durchradelt. Kurzfassung: Überall Berge, und außenrum Wasser. Das nennt man wohl Inseln. Die einzige Insel auf der einem die Kinnlade runterfallen kann ist allerdings Moskenesöya, die südlichste. Die verlässt man als Radler leider ziemlich schnell. Danach kommen Landschaften, die sich auch woanders im Land finden lassen. Nur mit weniger Wasser.&lt;/p&gt;
&lt;p&gt;Die letzten 20 Lofotenkilometer waren sehr angenehm. Die führten nämlich in eine Sackgasse, wo in Zukunft ein recht langer Tunnel für eine durchgehende Straßenanbindung der Lofoten ans Festland sorgen soll. Noch ist der aber nicht fertig, und somit sind dort auch kaum Autos unterwegs. Und die Straßen sind erste Sahne. Ebenso wie die Zeltplätze, die sich dort am Fjord finden.&lt;/p&gt;
&lt;p&gt;Tags drauf brachten mich unter anderem drei Fähren nach Grytöya (Öya, eigentlich mit norwegischem Ö, heißt Insel) bei Harstad. Dort verbrachte ich wiederum fast zwei Tage bei Freunden aus Trondheim. Am zweiten Abend bin ich mit Asle - ja, das ist ein norwegischer Vorname - in einer Nussschale mit Außenboarder auf die See hinaus gefahren, Abendessen fangen. Das Wetter war perfekt, die Aussicht auf die umliegenden Berge klasse, der Fang am Ende erfolgreich, und mein Magen hat doch tatsächlich drei Stunden auf dem optisch ruhigen Wasser ausgehalten. Danach war ich aber doch froh, mich mit Kaffee vor den Fernseher verkriechen zu können. Der Seelachs wurde dann auf lokale Art zubereitet, in dicke Scheiben geschnitten in Salzwasser gekocht. Dazu gab es überraschend gute Kartoffeln - lecker! Auch Fischleber schmeckt! Nach Fisch.&lt;/p&gt;
&lt;p&gt;Wiederum tags drauf habe ich endlich das gemacht, was ich schon sehr lange vorhatte. Ich bin, durch komische Schnellbootverbindungen bedingt, erst um 16 Uhr richtig gestartet und den Abend hindurch über 115km gefahren. Irgendwann wird es kühl, und ich musste gegen 22 Uhr meine Mütze aufsetzen. Als Sonnenblende! Der Weg führte mich einmal über die Insel Senja von der es nichts zu berichten gibt, weil dort einfach nichts ist. Es gibt zwar einige Käffer und Siedlungen, die Kinder dort sind aber nicht zu beneiden. Mein Zeltplatz war aber wieder wirklich toll. Und damit darf ich das folgende Gewinnspiel einleiten:&lt;/p&gt;
&lt;p&gt;In Anlehnung an das nächtliche Ereignis, das ich vorgestern zum ersten mal erleben durfte, wird meine nächste Email zwei Musiktitel im Titel tragen. Ein Medley sozusagen. Und ihr dürft raten, welche das sein werden. Alle richtigen, oder guten, Einsender bekommen eine besonders herzliche Email von mir! Das ist doch was.&lt;/p&gt;
&lt;p&gt;Zwei Tipps:&lt;/p&gt;
&lt;/p&gt;&lt;ul&gt;
 &lt;li&gt; Alle Bewohner Tromsös sind wegen unfairer Wettbewerbsvorteile ausgeschlossen.&lt;/li&gt;
 &lt;li&gt; Right Said Fred ist schonmal falsch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nun bin ich also in Tromsö, bei Elias, einem Kommillitonen aus Freiburg, der hier auch das letzte Jahr studiert hat. Da ich bis zu meinem Abflug aus Kirkenes noch sehr viel Zeit habe, und hier am Wochenende ein Rockfestival stattfindet, und das hier gebraute Mack-Öl mein Lieblingsnorwegenbier ist, und ich eh ein fauler Mensch bin werde ich wohl einige Tage hier bleiben. So schnell läuft mir das Nordkapp nicht davon.&lt;/p&gt;
&lt;p&gt;Gruß Florian
Tromsö, 21.07.05&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-05-in-the-midnight-hourlet-the-sunshine-in-medley" title="Lebenszeichen aus Norwegen - 05"&gt;Weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 05&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 03 - Summer In The City</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-03-summer-in-the-city/</link><pubDate>Thu, 07 Jul 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-03-summer-in-the-city/</guid><description>&lt;p&gt;Hallo.
&lt;p&gt;Jetzt ist Sommer, kønnte man singen. Beziehungsweise singe ich regelmæssig beim fahren, besonders gerne bei Regenwetter. Daran mangelt es aber momentan. Es ist der norwegisch-tropische Sommer ausgebrochen! Temperaturen bis 30 Grad bedeuten Hitzerekorde. Mit der gelgentlichen leichten Meeresbrise herrscht also perfektes Radlerwetter.&lt;/p&gt;
&lt;p&gt;Ich bin nun in Sandnessjøen, das liegt wie der Name schon sagt am Wasser. Hier bin ich bei der Mutter einer sehr guten Freundin sehr gut aufgenommen worden und ruhe mal wieder meine Beine aus. Nøtig haben die das zwar nicht, aber Luxus und Faullenzen machen mir doch immernoch sehr viel Spass.&lt;/p&gt;
&lt;p&gt;Die Landschaft hat sich in den letzten Tagen merklich von Suednorwegen verændert. Ich bin im Inselreich angekommen. Abertausende Inseln bereichern die Aussicht, und zahlreiche Fæhren unterbrechen die Fahrt auf den immer leerer werdenden Strassen. Allein der Radlerverkehr hat drastisch zugenommen. Viele Deutsche, Hollænder, Schweizer, und auch etliche Norweger sind auf der beliebten Kuestenstrecke zwischen Trondheim und Bodø unterwegs. Studenten und Rentner zumeist, eben die, die sonst auch nix besseres zu tun haben. Auch einige Nordkappfahrer habe ich getroffen, was nicht verwunderlich ist in einem Land, wo es nur zwei møgliche Parallelstrecken nach Norden gibt.&lt;/p&gt;
&lt;p&gt;Gestern bin ich zum ersten mal nur des Radelns wegen unterwegs gewesen. Ich war auf Vega, einer Insel die auf der UNESCO-Weltkulturerbe-Liste steht, und bin dort 50km einfach so kreuz und quer gefahren. Genussradeln ohne richtiges Weiterkommen ist ja eigentlich nicht so meine Sache. Ganz ohne Zeit- und Kilometerdruck hat es mir aber dennoch sehr viel Spass gemacht! Die Landschaft war auch einmalig. Die schønste Stunde der letzten Woche war sicher meine Ankunft auf Vega vorgestern Abend.Bei vollem Sonnenschein um neun Uhr abends und Windstille bin ich etwa 12km von der Fæhre ins Inselinnere gefahren. Ohne Verkehr, der einzige Klang waren meine Reifen auf dem Asphalt, und die Fliegen haben sich auch zurueckgehalten. Einfach klasse!&lt;/p&gt;
&lt;p&gt;Kilometermæssig bin ich etwa bei der Hælfte meiner Reise angekommen. 2100 stehen mittlerweile auf dem Tacho. Nach Tromsø sind es nun keine 1000km mehr, von dort ist es ein Katzensprung zum Nordkapp - also gut 500km, und danach fahre ich soviel ich Lust und Laune habe oder fahre ein Stueck mit der Hurtigrute. Irgendwie merkwuerdig ist diese Reise schon. Wirklich abenteuerlich fuehlt es sich nicht an. Ich kenne dieses Land wohl doch zu gut. Und als Deutscher bin ich auch kein Exot hier. Es ist aber schøn, mit der lokalen Bevølkerung norwegisch sprechen zu kønnen. Das macht sie gleich noch ein Stueckchen hilfsbereiter. Dadurch habe ich schon ein paar sehr nette Zeltplætze gefunden, die eigentlich nur Einheimische kennen.&lt;/p&gt;
&lt;p&gt;Heute mittag waren wir Kaffeetrinken auf hiesige Art. Um halb eins legt das Boot der Hurtigrute an. Dann strømen die reichen Touristen aus Deutschland und anderen Wohlstandslændern fuer eine Stunde ins Ørtchen, und etliche Sandnessjøener gehen auf das Schiff um fuer eine Stunde dort Kaffee zu trinken und zu palavern. Sehr witzig, aber bei den Kaffeepreisen vøllig bescheuert.&lt;/p&gt;
&lt;p&gt;Jetzt fahre ich gleich mit einer Sueddeutschen im Gepæck fuer den Rest des Tages an ein Strandhaus im Sueden der Insel. Mit dem Auto natuerlich, wie es sich fuer ordentliche Norwegentouristen gehørt.&lt;/p&gt;
&lt;p&gt;Bis bald von den Lofoten,
Florian&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-04-yellow-submarine" title="Lebenszeichen aus Norwegen - 04"&gt;weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 04&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 02 - Ain't No Mountain High Enough</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-02-aint-no-mountain-high-enough/</link><pubDate>Thu, 30 Jun 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-02-aint-no-mountain-high-enough/</guid><description>&lt;p&gt;Hallo.
&lt;p&gt;Zu Hause ist es doch am schønsten. Trondheim ist aber nicht mein zu Hause. Ausserdem hat es sich in den letzten zweieinhalb Wochen ganz schøn verændert. Es ist auf einmal warm hier! Norwegenwarm, 20 Grad halt. Das nennt sich hier aber Hochsommer. Dennoch bin ich fuer zwei Tage hierher zurueckgekommen und wohne in der leeren Wohnung zweier guten Freundinnen. Morgen geht es weiter nach Norden.&lt;/p&gt;
&lt;p&gt;Nachdem ich letzte Woche einen sonnigen Tag in Bergen verlebt hatte, regnete es am Tag drauf bei meiner Abreise natuerlich wieder. Da ich mich nicht wieder durch die autobahnverseuchte Stadt quælen wollte, fuhr mich Jan-Trygves Vater weit aus der Stadt hinaus. Das sorgte aber auch nicht fuer trockeneres Wetter. Gluecklicherweise hat das &amp;ldquo;Statens vegvesen&amp;rdquo; - einfach mal laut lesen, dann ist klar was es bedeutet - viele Rastplætze gebaut, und davon haben viele auch ein Dach und ein Stueck Wiese fuer ein Zelt. Einer stand auch am verregneten Hardangerfjord. Die beschilderte Bitte, an den Rastplætzen nicht zu kampieren, ignoriert man als Radler einfach. Die Mitarbeiter, die am næchsten Morgen die Toilette instand setzten, haben mich auch nur freundlich nach meiner Reise gefragt.&lt;/p&gt;
&lt;p&gt;Die næchsten Tage wurden huegelig. Østlich von Voss ging es bergan, damit ich nach einer kurzen Bahnfahrt durch den Berg die Strecke der bekannten Flåmbahn abwærts fahren konnte. Ein wenig weiter fuehrt der &amp;ldquo;Aurlandvegen&amp;rdquo; ueber die Huegel, durch die der længste Strassentunnel des Welt (25km) fuehrt. Bei einer Passhøhe von 1300m, 4m-Schneewænden auf der Hochplateau und Graupelschauer Ende Juni verstehe ich den Sinn des Tunnels! Zur Belohnung habe ich mich dann auf dem Campingplatz in Lærdal einquartiert, wo ich bei zwei Jungs aus Heide - die mit ihren insgesamt fuenf Kindern unterwegs waren - alkoholfreies Erdinger Weissbier geniessen durfte und Adrianos 3:2 erleben musste.&lt;/p&gt;
&lt;p&gt;1434 Meter ueber Null hørt sich fuer die erfahrenen Alpenfahrern unter euch vielleicht nicht viel an. Hier im Fjordland muss man das aber immer von null Metern aus angehen, und damit reicht die genannte Zahl fuer Nordeuropas høchsten Strassenpass aus. Was es in den Alpen so auch nicht gibt ist das 20km Hochplateao auf 12-1400m vor dem Pass. Trotz eisigen Windes und einigen Schneeflocken habe ich es aber dort rueber geschafft, was mir auch wieder einige hochgereckte Daumen der unglæubigen Mittouristenschaft in ihren warmen Fahrzeugen einbrachte.&lt;/p&gt;
&lt;p&gt;Apropos. Ich habe folgende Beobachtungen gemacht: Auf den ausgewiesenen, oder dafuer bekannten, Touristenstrassen sind 95% all derer die unterwegs sind tatsæchlich Touristen. Auf Nebenstrecken schwankt die Zahl zwischen 20 und 50 Prozent. Das umfasst Wohnmobile, Wohnwagengespanne und sonstige ueberladene Fahrzeuge (was heisst, inclusive Fahrrædern). Deutsche, Hollænder und Norweger teilen sich die Strasse zu etwa gleichen Teilen, wobei wir eigentlich deutlich dominieren. Ab und an sehe ich auch Briten, Franzosen und Østerreicher. Die Reisebusse aus aller Herrenlænder nehme ich nicht ernst. Die deutschen Reisebusse kommen uebrigens ausschliesslich aus osdeutschen Gefilden, wirklich!, oder aus Pløn.&lt;/p&gt;
&lt;p&gt;Nachdem ich in den letzten drei Tagen zusammen 385km ueber zumeist stark befahrene Strassen geradelt bin, freue ich mich nun, endlich in den Norden zu kommen. Die Strecke der næchsten Woche kenne ich schon von einer Autofahrt im Mai. Diesmal habe ich aber viel mehr Zeit, die Aussichten zu geniessen. Einfach weil ich die Berge nicht allzu schnell hoch komme.&lt;/p&gt;
&lt;p&gt;Noch zwei Nachtræge zur letzten Email: Das was ich ueber Trollstigen geschrieben habe, war ziemlicher Unsinn. Ich darf im folgenden meinen Freund Daniel aus Trondheim zitieren:&lt;/p&gt;
&lt;/p&gt;&lt;blockquote&gt;Und zum Trollstigen muss ich dir sagen - die Straße ist eigentlich keine Touriattraktion, sondern besitzt viel norwegische Geschichte! War früher ein wichtiger Handelsweg zwischen dem Valldal und Åndalsnes/Romsdalen. Man kann dort auch noch auf dem ursprünglichen Pfad wandern. Irgendwann haben sie dann die Straße dran gebaut - aber ganz sicher nicht für Touristen, sondern weil die Einheimischen über den Berg wollten! ...und gut, du hast den Trollstigen jetzt mit (wahrscheinlich) Unmengen Verkehr gesehen. Habe ich auch schon. Aber wesentlich spannender ist die Sache ohne Verkehr, abends oder nachts, wolkenverhangen ... ich liebe diese Straße :)&lt;/blockquote&gt;
&lt;p&gt;Zum letzten Satz muss ich sagen, dass Daniel letzten Samstag/Sonntag das Radrennen &amp;ldquo;Styrkeprøven&amp;rdquo;(Kraftprobe) Trondheim-Oslo in 23:26 Stunden gefahren ist. Ein echter Radfahrer also. Nicht so wie ich, der das nur in den Ferien macht. ;)&lt;/p&gt;
&lt;p&gt;Das Zeitungsinterview war gestern in der Sunnmørsposten zu lesen. Auf der Internetseite smp.no findet sich leider noch nichts. Der Zeitungsausschnitt ist aber auf dem Weg nach Munster, dank einer Freundin in Vestnes.&lt;/p&gt;
&lt;p&gt;Wer im uebrigen keine gescheite Karte zur Hand hat (weil er noch nie in Norwegen war und kein Geographiestudent ist), kann sich meine Route bei meinem Vater angucken. Der bekommt jeden Abend eine sms mit genauer Positionsangabe, die er dann in einer Karte vermerkt.&lt;/p&gt;
&lt;p&gt;Ich hætte noch eine Menge zu schreiben. Ich muss aber langsam wieder was essen. Ohnehin verwirbelt der Aufenthalt in der Stadt meinen ansonsten sehr einfachen Tag, der aus drei Dingen besteht: Essen, Schlafen, Radfahren. Das reicht.&lt;/p&gt;
&lt;p&gt;Gruss,
Florian
Trondheim, 30.06.05&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-03-summer-in-the-city" title="Lebenszeichen aus Norwegen - 03"&gt;Weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 03&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Lebenszeichen aus Norwegen - 01 - On The Road Again</title><link>https://flowfx.de/blog/lebenszeichen-aus-norwegen-01-on-the-road-again/</link><pubDate>Tue, 21 Jun 2005 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/lebenszeichen-aus-norwegen-01-on-the-road-again/</guid><description>&lt;p&gt;Hallo und schøne Gruesse aus Bergen.
&lt;p&gt;Die erste Etappe meiner Reise ist geschafft. Nach ein paar schweren Tagen zu Anfang ist der Muskelkater in den Beinen nun fast verschwunden, ich habe schon zwei Haupttouriattraktionen Norwegens gesehen und verbringe nun zwei sehr ruhige Tage bei der Familie meines Kumpels Jan-Trygve auf der Insel Askøy, nørdlich von Bergen.&lt;/p&gt;
&lt;p&gt;Wie angekuendigt bin ich letzten Montag losgefahren. Nach einem fruehmorgendlichen Tretlagerwechsel war ich gegen Mittag ausserhalb von Trondheim, und die Sonne verdrængte den Regen. Es folgten vier Tage mit Sonnenbrandwetter. Es schien, als ob der norwegische Sommer endlich begonnen hætte. Auf kleinen Strassen bin ich die Kueste entlang bis kurz vor Kristiansund gefahren, dort ging es suedwærts Richtung Trollstigen. Trollstigen ist eine, nur fuer Touristen gebaute, Serpentinenstrasse suedlich von Åndalsnes. Und absolut ueberbewertet. Am letzten Parkplatz, dem mit der Aussicht auf die Serpentinen, meinte ein Englænder mit Wohnmobil, &amp;ldquo;Beautiful, isn&amp;rsquo;t it?&amp;rdquo;, und als er sah, dass ich da hoch wollte: &amp;ldquo;You must be mad!&amp;rdquo; Beides kann ich nicht bestætigen. ;) Die Steigung war wirklich sehr angenehm und gleichmæssig. Nur die Wasserfælle machen die Sache sehr kuehl und feucht. Die vielen Touris, vor allem Deutsche und Hollænder, bzw. japanische und franzøsische Reisebusse, waren allerdings eine Attraktion fuer sich! Die waren alle sehr begeistert von mir :)&lt;/p&gt;
&lt;p&gt;Am selben Abend habe ich in den Bergen nørdlich von Geiranger gezeltet. So ein Schmelzwasserbach direkt neben dem Zelt hat was fuer sich! Leider regnete es am næchsten Morgen. So kann ich die Schønheit des Geirangerfjordes nicht bestætigen. Die Touristeninfo hat mich allerdings begeistert! Dort konne ich mich næmlich breit machen, als ich auf die Fæhre durch den Fjord wartete. Heiss Wasser fuer mein Fruehstuecksmuesli, und Kaffe habe ich auch bekommen! Am anderen Ende des Fjords, immer noch bei Regen, kam die erste Aufhellung des Tages. Eine Reporterin der Regionalzeitung &amp;ldquo;Sunnmørsposten&amp;rdquo; aus Ålesund fand die Gitarre in meinem Gepæck so interessant, dass sie mich interviewte und Bilder schoss. Ich werde versuchen eine Kopie des Artikels zu bekommen!&lt;/p&gt;
&lt;p&gt;Bei trockenem Wetter ging es eineinhalb Tage weiter, weitesgehend auf den kleinen Strassen, die ebenso schøn sind wie die grossen Touristenstrecken, die aber nicht viele Leute sehen. Die letzten zwei Tage vor Bergen waren dann wieder nass, sehr nass. Wie das nunmal so ist in Vestlandet. Jeder erzæhlt hier immer, wieviel es in Westnorwegen regnet - jetzt kann ich es bestætigen. Eine gute Sache hat das aber. Man wird unterwegs nicht von schønen Zeltplætzen abgelenkt! So bin ich in den letzten zwei Tagen zusammen gut 270km gefahren, immer auf und ab wohlgemerkt. 850km gesamt in acht Tagen. Ganz schøn bescheuert, gebe ich ja zu!&lt;/p&gt;
&lt;p&gt;Bis auf den Regen, der einfach nicht zu vermeiden ist, reise ich recht gemuetlich durch die Gegend. Norwegen ist ein sehr gutes Radlerland. Ueberall gibt es Frischwasser, viele Toiletten, und schøne kostenlose Zeltplætze. Letztere variierten bisher zwischen abgelegenem Fjordplatz, Wiese beim Bauern - am Fjord natuerlich, Fæhrableger mit Toilette und gemæhter Wiese und Bergwiese. Ich steige also stets gewaschen in meinen Schlafsack.&lt;/p&gt;
&lt;p&gt;Jetzt bin ich also in Bergen, oder in der Næhe davon, allein um vom Nordrand der Stadt bis nach Askøy zu kommen hat mich gestern 4 Stunden gekostet&amp;hellip; Ich geniesse den Luxus eines echten Betts, einer warmen Dusche und Musik aus der Konserve.&lt;/p&gt;
&lt;p&gt;Apropos Musik. Ich habe meine kleine Gitarre ja nicht nur dabei, um Reporterinnen anzulocken. Ich schmetter jeden Abend ein paar bekannte Gassenhauer in die ansonsten friedliche Landschaft. Das ersetzt das Radio, und meine Reiselektuere ist auch ueberfluessig.&lt;/p&gt;
&lt;p&gt;In meiner Email von letzter Woche hatte ich gar nicht geschrieben, wo ich denn ueberall langfahren will. Nun denn:&lt;/p&gt;
&lt;p&gt;Von Bergen fahre ich ostwærts, durch ein paar Bergregionen, bis zum Ostende des Sognefjords - Øvre Årdal. Dort habe ich auch einen Kumpel, bei dem ich uebernachten kann. Ueber noch mehr Berge geht es zurueck nach Trøndelag - die Region um Trondheim - wo die Kuesten-Reichsstrasse Rv17 beginnt. Diese fuehrt bis hoch nach Bodø. Unterwegs, in Sandnessjøen, habe ich wieder eine Uebernachtungsadresse, ebenso in Bodø! Da die Lofoten angeblich ganz nett sein sollen, fahre ich dort auch entlang. In Tromsø lohnt noch bis August ein Kumpel aus Freiburg. Von dort ist es nicht mehr weit bis ans Nordkapp. Am 11. August fliege ich dann von Kirkenes nach Oslo, ein paar Tage in Dænemark und Schlesweg-Holstein spæter komme ich fuer ein langes Wochenende nach Munster, bevor es zurueck zum wirklich Leben nach Freiburg geht.&lt;/p&gt;
&lt;p&gt;Mir geht es also sehr gut momentan. Kein Wunder allerdings mit vollem Magen und trockenen Fuessen. Ich hoffe, ich habe ein paar interessante Sachen geschrieben. Wenn ihr fragen habt, fragt! Ich plane von nun an etwas gemuetlicher zu fahren, und somit auch etwas mehr Zeit zu haben, ins Netz zu schauen.&lt;/p&gt;
&lt;p&gt;Gruss,
Florian
Askøy, 21.06.05&lt;/p&gt;
&lt;p&gt;&lt;a href="lebenszeichen-aus-norwegen-02-aint-no-mountain-high-enough" title="Lebenszeichen aus norwegen - 02"&gt;Weiter &amp;gt;&amp;gt; Lebenszeichen aus Norwegen - 02&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Florenz - Teningen</title><link>https://flowfx.de/blog/florenz-teningen/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/florenz-teningen/</guid><description>&lt;p&gt;&lt;em&gt;Florenz – 122km – Bologna – 133km – irgendwo am Po – 174km – Como – 82km – Bellinzona – 93km – Haspental – 130km – Beil am See – 99km – Rheinufer – 71km - Teningen&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Drei Nächte blieb ich in Florenz. Ich wollte meinen Geburtstag nicht feiern, während ich irgendwo im Busch kampiere. So richtig feiern konnte ich zwar auch nicht. Den Abend vor dem 4. September verbrachte ich aber richtig schön mit einer Gruppe junger Belgier und mal wieder viel zu viel Wein.&lt;/p&gt;
&lt;p&gt;Der Heimweg begann mit meiner zweiten Appenninenüberquerung. Körperlich erholt und vom Kopf her in freudiger Erwartung auf die Schweiz und Deutschland schaffte ich die 122km Etappe nach Bologna in einem einzigen Tag. Die meiste Zeit ging es über ruhige Straßen die Berge hinauf. Von dem auf 80m gelegenen Florenz über zwei Pässe um die 900m und wieder runter in die Po-Ebene. Auf der ersten Passhöhe fand ich zu meiner großen Überraschung einen deutschen Soldatenfriedhof. 30.000 1942 in der Emilia Romana gefallene deutsche Soldaten liegen dort begraben. Ein eindrucksvolleres Mahnmal, auch in seiner Schlichtheit, habe ich noch nicht gesehen.&lt;/p&gt;
&lt;p&gt;Der zweite Pass war quasi für den motorisierten Verkehr gesperrt. Kilometerlang fuhr ich also auf einer buchstäblich verlassenen Straße. Das Wetter war an diesem Tag wieder angenehm. Einige Wolken, aber kein Regen und nicht zu warm.&lt;/p&gt;
&lt;p&gt;Die nächsten zwei Tage verkamen zum reinen Kilometermachen. Die Po-Ebene war zu durchqueren. Da ich die eintönige Landschaft schon vorher gesehen hatte und die kleinen Dörfer und Städtchen auch nicht hübscher waren als andere, konnte ich mich ganz aufs Radfahren konzentrieren. Am ersten Tag regnete es fast nur, gegen Abend fand ich in einer Autowerkstatt Schutz vor einem donnernden Unwetter, bevor ich nochmal 40km nachlegte um zwischen Maisfelder die schlimmste Nacht der Reise zu erleben. Ab einer gewissen Zahl von herumschwirrenden Moskitos nützt auch jegliche Chemie nichts mehr. Interessanterweise hatte ich am nächsten Morgen nur einen einzigen Mückenstich im Gesicht. Schlafen konnte ich trotzdem die halbe Nacht nicht.&lt;/p&gt;
&lt;p&gt;Meine Kilometerschätzungen auf meiner 1:300 000er Straßenkarte wurden mit der Zeit immer genauer. So war ich nicht überrascht, am Abend des nächsten Tages auf meinem Tacho 174km stehen zu sehen. Eigentlich wollte ich nur bis Monza, mit 137km schon neuer persönlicher Rekord. Doch fand dort eine Woche später der Große Preis von Italien statt. 16 Euro für eine Nacht auf dem Campingplatz waren mir dann weitere 2 Stunden Fahrradfahren wert. Die JH in Como empfing mich auch gebührend mit einer großen Portion Pasta und einer Karaffe Wein. Um neun Uhr abends! Einfach klasse.&lt;/p&gt;
&lt;p&gt;In Como traf ich dann auf Kevin. Ein Kanadier, der mit Rad und Bahn durch Europa tourt und gerade auf dem Weg nach Zürich war. Keine Frage, wir wollten zusammen über den St. Gotthard-Pass und dann weiter durch die Schweiz. Nach einer gemütlichen Etappe nach Bellinzona, ich konnte endlich wieder deutsch sprechen, nahmen wir am 9. September die Herausforderung Alpenhauptkammüberquerung an.&lt;/p&gt;
&lt;p&gt;Seit dem Wiedereintritt in die Schweiz konnten wir wieder den ausgeschilderten Velolandrouten folgen. Auf ruhigen schmalen Straßen und Feldwegen führt die Route Nr.3, oft im Zick-Zack-Kurs, durch die Alpentäler. Airolo erreichten wir erst am Nachmittag. Von dort führen 3 Straßen über den Pass in Richtung Andermatt. Eine Autobahn, eine neue Schnellstraße und die alte Passstraße. Wir fuhren natürlich auf letzterer. Nostalgisches Kopfsteinpflaster führt bis fast nach ganz oben. Das wahre Problem des Tages war aber wiedermal das Wetter. Den ganzen Tag war es schon recht kühl gewesen, immer wieder hatte es geregnet. Dem Himmel näher kommend wurde es natürlich noch kälter. Der Nebel wurde dichter, gesehen haben wir praktisch nichts. Die Straße war aber glücklicherweise nicht so steil wie beispielsweise der Splügenpass. Mit unermüdlicher Kurbelei gelangten wir denn schließlich auf die Passhöhe. Es wurde schon dunkel. Für das Erinnerungsfoto konnten wir einen deutschen Caravanfahrer verpflichten. Ansonsten war nämlich gar niemand da oben.&lt;/p&gt;
&lt;p&gt;Das Gipfelfoto fehlt im Moment noch, da es mit Kevins Fotoklick aufgenommen wurde.&lt;/p&gt;
&lt;p&gt;Danach schnell alle Wind- und Regensachen angezogen und die Abfahrt nach Haspental konnte beginnen. Wir teilten die Jugendherberge mit einer jungen Deutsch-Schweizer-Familie und einem einsamen Wanderer. Wir hatten vergessen einzukaufen und waren deshalb sehr froh über die Reste an Nudeln und Bratensoße, die die kleine Küche zu bieten hatte. Viel braucht es halt nicht um glücklich zu sein.&lt;/p&gt;
&lt;p&gt;Die Alpenabfahrt war wieder enttäuschend. Schuld war der dichte Nebel, der jegliche Panoramasicht verhinderte. Es regnetet weiterhin und wurde nicht besser bis ich wieder in Deutschland war. In Beil am See trennten sich Kevins und meine Wege wieder. Mittlerweile ist er in Chamonoix auf der Suche nach einem Job für den Winter.&lt;/p&gt;
&lt;p&gt;In Basel angekommen galt mein einziges Augenmerk der nächsten Zollstation. Irgendwie war es doch ein gutes Gefühl wieder nach Deutschland zu kommen. Wenn ich unterwegs Heimweh hatte, dann wohl eher nach Deutschland als Ganzem, denn nach Munster im speziellen. Zum einen liegt es wohl an der Sprache selbst. Zum anderen unterliegt im Ausland speziell die Kommunikation mit Fremden immer einer gewissen Unsicherheit. Menschen unterschiedlicher herkunft können die selben Worte verwenden, aber doch etwas ein wenig anderes meinen. Bei intensiver Nutzung der englischen Sprache, wie es europaweit in Jugendherbergen eingentlich unvermeidbar ist, verlieren die Gespräche außerdem meistens die gewisse Nuoncierung in der Ausdrucksweise. In Deutschland gibt es diese Probleme nicht. Wenn ich hier etwas sage, weiß ich ganz genau, ob mein Gegenüber mich verstanden hat oder nicht. Es gibt einfach gewisse Grundsätze in jeder Gesellschaft, die zwar keinem bewusst sind, auf die man sich aber einfach verlassen kann. Und das gibt ein Gefühl der Sicherheit, welches auch ich immer erst wahrnehme, wenn ich mal wieder im Ausland unterwegs war.&lt;/p&gt;
&lt;p&gt;Angekommen in Deutschland kaufte ich erstmal Bier, Chips und eine SportBild ein, aß mich bei McDonalds so richtig satt und suchte mir ein schönes Fleckchen für mein letztes Nachtlager. Bei nur drei zu tötenden Mücken, Abendsonne und entspannter Nachtlektüre wurde dieser letzte Abend zu der besten Nacht unter freiem Himmel der gesamten Tour. Ganz entspannt nahm ich die letzte Etappe nach Teningen in Angriff. Beinahe schon routinemäßig strampelte ich die 70km ab, so dass ich schon um 13 Uhr, pünktlich zum Mittagessen, ankam.&lt;/p&gt;
&lt;p&gt;Nun war es zu Ende. Fünf einhalb Wochen unterwegs. Viele Enttäuschungen ließen sich nicht vermeiden. Aber meinen großen Traum der ersten großen Radreise und die Eroberung Roms habe ich wahrgemacht. Die 2840 Gesamtkilometer betrachte ich im Nachhinein mehr als Nebenprodukt dieser langen Reise. Als Motivation diente mir hauptsächlich auch nicht die Freude am Radfahren, bzw. die damit verbundene Schinderei, sondern die Suche nach einer Möglichkeit des Reisens, die Urlaub, Städtebesuche und vor allem die Entdeckung der Landschaften außerhalb der Städte miteinander verbindet. Billig sollte es natürlich auch sein, wobei sich dies auch immer relativiert sobald man feststellt wie gut zum Beispiel Guinness schmeckt, direkt vom Fass in nem Pub in Limerick versteht sich.&lt;/p&gt;
&lt;p&gt;Nach diesem Sommer kann ich beruhigt feststellen, dass ich diese Möglichkeit gefunden habe. Die nächste Radreise ist schon in Planung. Inwieweit mein Studium dies zulässt ist noch fraglich, aber träumen kann man ja immer. Wenn es soweit ist soll es bald nach Masuren in Ostpreußen gehen. Abgesehen von der schönen Landschaft möchte ich einmal dorthin wo mein Großvater herkam. Mal sehen was die Zukunft bringt.&lt;/p&gt;
&lt;p&gt;Florian Posdziech
Freiburg, Oktober 2002&lt;/p&gt;</description></item><item><title>Italien - Der Start</title><link>https://flowfx.de/blog/italien-der-start/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/italien-der-start/</guid><description>&lt;p&gt;Am 3. August 2002 bin ich mit meinem Freund Alex zu einer 6-wöchigen Radreise Richtung Italien aufgebrochen. Seit etwa 2 Jahren haben wir von einer gemeinsamen Tour geredet, und etwa ein Jahr lang bereiteten wir uns, von Italiens Sonne träumend und Ausrüstung kaufend, auf dieses kleine Abenteuer vor. Keiner von uns hatte zuvor eine Radreise im Ausland, geschweige denn länger als ein paar Tage, gemacht. Ich war bis zu dem Zeitpunkt noch nie mehr als zwei Tage am Stück Fahrrad gefahren.
&lt;p&gt;Früh morgens bestiegen wir die Regionalbahn nach Uelzen. Von meiner Mutter mit einem riesigen Beutel geschmierter Brötchen versorgt, machten wir uns auf die Zugreise nach Teningen im Breisgau, unserem Ausgangspunkt für die Reise. 14 ½ Stunden Fahrt sowie 8x Umsteigen sprechen wohl für sich.&lt;/p&gt;
&lt;p&gt;&lt;a href="../teningen-spluegenpass"&gt;Weiter &amp;gt;&amp;gt; Teningen - Splügenpass&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;</description></item><item><title>Rimini - Rom</title><link>https://flowfx.de/blog/rimini-rom/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/rimini-rom/</guid><description>&lt;p&gt;&lt;em&gt;Rimini – 66km – Carpegna – 127km – Ponte Felcino – 52km – Ponte Felcino – 105km – Terni – 123km – Roma&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Jetzt ging es also alleine weiter. Mit Blick nach Rom waren nun die nächsten Ziele San Marino und das Tibertal. Kurz hinter Rimini entdeckte ich meine zweite und letzte Panne der Tour. Eine gebrochene Speiche hatte ich noch morgens für viel zu teures Geld in Rimini ersetzen lassen. Den jetzt akuten Platten konnte ich aber ohne Schwierigkeiten eingenhändig flicken. San Marino selbst liegt mitten oben auf einem über 500m hohen Hügel. Rimini liegt bekanntermaßen auf Meeresniveau. Es lohnt sich trotzdem. Obwohl das Dorf von Touristen überquellt. Auch wurde ich oft ziemlich komisch angeguckt, als ich so mein schweres Rad die letzten Meter den Berg hinauf schob.&lt;/p&gt;
&lt;p&gt;Nach dem verdienten Nachmittagsmahl ging es weiter nach Südwesten. Nach einer kurzen Abfahrt ging es ein Tal entlang wieder bergauf. Immer Richtung Passhöhe, welche ich allerdings erst am nächsten Tag erreichte. Auf der Suche nach einem Lagerplatz fand ich eine bizarre Felsformation etwas abgelegen der Straße, zu deren Fuß ich auf einem abgeernteten Feld lagerte. Als ich so gerade meine Plane ausgebreitet hatte (das Zelt, immerhin 6kg, hatte Alex wieder mitgenommen) und mein Lager bereitete, gab es plötzlich einen Tumult auf dem Schotterweg auf dem ich zu dem Lagerplatz gelangt war. Da mein Lager weitesgehend sichtgeschützt war, konnte ich nur hören was vor sich ging.&lt;/p&gt;
&lt;p&gt;Ohne mir, bis heute, bekannten Grund rief auf einmal eine ältere Frau mehrmals, und sehr wehement, nach der Polizei. „La polizia, la polizia!” – das verstehe selbst ich, als philologisch eher Unbegabter. Kurz danach lief ein Mann den Weg lang zum nahen Dorf, worauf bald ein anderer Mann auf einem Pferd heran gallopiert kam. Ich dachte schon, die wollten mich vom Feld vertreiben. Aber nach einer etwa halbstündigen Diskussion, die ich in Fetzen mithören konnte, sind wohl alle ihrer Wege gegangen. So ganz wohl war mir nicht bei der Sache. Ich bin dem Ganzen am nächsten Morgen auch nicht weiter auf den Grund gegangen, sondern habe mich schleunigst auf meinen Weg Richtung Perugia gemacht.&lt;/p&gt;
&lt;p&gt;Das eben angesprochene Nachtlager war übrigens eines der besten überhaupt gewesen. Von der Straße aus praktisch nicht zu sehen, konnte ich den sternenklaren Himmel über mir genießen. In der Ferne leuchteten die Lichter der nächsten Dörfer, und am Morgen weckte mich ein über das Feld gallopierendes Reh.&lt;/p&gt;
&lt;p&gt;Der Weg nach Perugia wurde zur Königsetappe der bisherigen Reise. 2 1/2 Appennninenpässe musste ich überwinden bis ich ins Tibertal kam. Dort führten mich der leichte Rückenwind und teilweise der Windschatten von ein paar Rennradfahrern ziemlich schnell nach Ponte Felcino, das ich nach insgesamt 127km erreichte. Weil ich die gesamte Kochausrüstung aus Gewichtsgründen und Bequemlichkeit Alex mitgegeben hatte, verbrachte ich von nun an viel Zeit mit Pizza und Pastaessen. Die, meistens durch ihre Privattelefonate abgelenkte, Dame an der Rezeption der JH konnte mir daher auch ein ziemlich uriges, ich würde mal sagen italienisches Schnellrestaurant empfehlen.&lt;/p&gt;
&lt;p&gt;Nach zwei geruhsamen Nächten und einem Tagesausflug durch Umbrien ins nahe und überaus sehenswerte Assisi setzte ich meinen Weg nach Rom fort. Zum ersten Mal während der Tour hatte ich ein Bett in einer Jugendherberge vorbestellt, was auch sogleich in die Hose ging. Ich vertrödelte meine Zeit bis halb vier Uhr nachmittags mit Zeitunglesen und Pause machen, und so kam ich erst gegen 20 Uhr in Terni an. Ziemlich entnervt von der Schnellstraße, die in die Stadt führte, bog ich einfach ab und verzog mich hinter ein paar Blumengeschäfte nahe eines Friedhofs. Leider war die Schnellstraße keine 20 Meter entfernt und erstens beleuchtet und zweitens die ganze Nacht hindurch befahren.&lt;/p&gt;
&lt;p&gt;Lang dauerte die Nacht nicht. Dann fand ich aber den Weg in die Stadt und wieder hinaus. Ab Tarni folgte ich immer der SS 3, der „Via Fermiale,“ die direkt nach Rom führt. Eine interessante und für Radfahrer eher unangenehme Tatsache ist, dass die Italiener ihre meist hübschen Dörfer nie in den Flusstälern gebaut haben, sondern immer auf den Hügeln drauf. Das einzige was durch die Täler führt, sind die Autobahnen und Schnellzugstrecken. Dem einsamen Radler bleibt nichts als den langen Hügelketten parralel des Tibers zu folgen. Zunächst mehr auf als ab, später anders herum. Bis man in Rom ist.&lt;/p&gt;
&lt;p&gt;Die Stadt im Blick und als einzige Möglichkeit hinein eine 4 bis 6-spurige Schnellstraße. Wirklich Spaß hat das nicht gemacht, und ich war heilfroh als ich endlich einen Touristeninformationsstand gefunden hatte. Dort bekam ich eine Karte, woraufhin ich keine Orientierungsprobleme mehr hatte. Für die nächsten Tage kam ich in einer, mit Sicherheit nicht wirklich legalen, Herberge unter. Zentral gelegen hatte ein Typ eine Wohnung voll mit Betten gestellt und vermietet diese nun.&lt;/p&gt;
&lt;p&gt;Mein Ziel hatte ich erreicht. Nach zweieinhalb Wochen schon. Anfangs hatten wir vier eingeplant. Das Wissen um das erreichte bringt eine gewisse Befriedigung mit sich. Wie auch die zumeist ungläubigen Kommentare der anderen Herbergsgäste. Drei Tage Sightseeing in Rom reichten mir allerdings allemal. Ich bin kein Stadt-anguck-muss-alles-gesehen-haben-Mensch. Die Anzahl meiner Romfotos beläuft sich auf drei.&lt;/p&gt;
&lt;p&gt;&lt;a href="../rom-florenz-toskana"&gt;Weiter &amp;gt;&amp;gt; Rom - Florenz - Toskana&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Rom - Florenz - Toskana</title><link>https://flowfx.de/blog/rom-florenz-toskana/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/rom-florenz-toskana/</guid><description>&lt;p&gt;&lt;em&gt;Rom – 113km Zug &amp;amp; 46 km Rad – Pitigliano – 98km – Albina – 179km Zug &amp;amp; 28km Rad – Lucca – 95km – Florenz&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Es soll ja Leute geben, die fliegen für eine Woche nach Rom, sind den ganzen Tag lang damit beschäftigt Museen und alte Gebäude anzugucken, und fliegen dann einfach wieder nach Hause. Ich für meinen Teil habe meine Tage in Rom zur Hälfte mit Zeitung lesen und zu einem weiteren Viertel mit Faulenzen verbracht. Rückblickend hätte ich mich wohl besser mental auf die nächsten Wochen vorbereiten sollen.&lt;/p&gt;
&lt;p&gt;Um den großen Schnellstraßen auf dem Weg aus Rom heraus zu entgehen nahm ich erstmal den Zug zur Küste nach Montalto. Dank überzeugender Ich-Touri-Ich-nix-wissen-Gesten sparte ich die extra Fahrkarte fürs Fahrrad. Von Montalto sollte es nordwärts in die südliche Toskana gehen. Doch erstmal ging gar nichts. Kopf und Beine wollten einfach nicht vorwärts. Die drückende Hitze war nicht Schuld daran. Ich hatte einfach auf einmal null Motivation mehr. Langsam ging es weiter, gegen Abend auch wieder besser.&lt;/p&gt;
&lt;p&gt;Nach einer Nacht in einem Weinberg ging es westwärts in Richtung Küste. Den Vormittag schlich ich wieder die Hügel hinauf, stieg alle paar Kilometer ab um zu rasten. Zwei Höhepunkte hatten diese zwei Tage allerdings. Das Bergdorf Pitigliano und die Thermalquellen von Santua, in denen ich baden konnte. Meine Strecke führte stellenweise über absolut ruhige Straßen, später auf einer größeren Hauptstraße. Die meiste Zeit ging es immer bergauf und -ab. Natürlich mehr Auf als Ab, ist ja logisch.&lt;/p&gt;
&lt;p&gt;Irgendwann kam ich dann ans Meer. Ich saß da so im Sand, sah die Sonne untergehen, und war mir sehr lange nicht im Klaren darüber wie ich weiter machen sollte. Ich hatte keine Lust am nächsten Tag die Strecke nach Pisa zu starten, immerhin drei Tagesreisen. Die Landschaft hatte mir bisher überhaupt nicht gefallen. Es war auch die falsche Jahreszeit für die Toskana. Ein Nachtlager hatte ich auch noch nicht. Camping am Strand fiel als Möglichkeit flach, zu touristisch.&lt;/p&gt;
&lt;p&gt;Letztendlich campierte ich auf einem nahen Campingplatz, ohne Zelt. Der kostete mich zwar die ungeheure Summe von ¥15,50, bot mir aber auch eine Pizzabäckerei und die Bekanntschaft mit zwei Erfurter Studenten, welche mein Verlangen nach Bier befriedigen konnten. Diese Nacht schlief ich wie ein Stein und war am nächsten Morgen wieder voll Tatendrang. Selbst die wirklich schlechte Zweimann-Band, die den Campingplatz in der Nacht mit ihrer Musik belästigten, hinderten mich nicht daran. Der Sänger- und Keyboardspieler klang, als hätte er vor einem halben Jahr erst das Klavierspielen begonnen und früher den Schulchor immer nur an den Konzertterminen verstärkt. So gesehen könnte ich vielleicht doch noch Profimusiker werden. Die italienischen Campinplätze sind so toll aber leider auch nicht. Also wohl eher nicht.&lt;/p&gt;
&lt;p&gt;Ich fuhr also los, kaufte Obst und eine SZ, und wartete dann 3 Stunden auf den Zug, der mich direkt nach Pisa brachte. Dort zum Turm, Foto gemacht, und weiter. Die Sprintstrecke nach Lucca war auch gleich richtig schön, Lucca sowieso. Wer immer nach Pisa will, sollte sich in Lucca einquartieren und von dort einen Nachmittagsausflug nach Pisa machen.&lt;/p&gt;
&lt;p&gt;Dann regnete es mal wieder. Gleichzeitig mit einem Belgier auf nem Motorroller fuhr ich trotzdem los. Und siehe da, eine halbe Stunde später war es trocken. Erst flach, später hügeliger, ging es über Vinci nach Florenz. Und wen treffe ich dort? Den Belgier. Er heißt Raul und wir verbrachten den darauffolgenden Tag gemeinsam in Florenz.&lt;/p&gt;
&lt;p&gt;Auf dem Weg nach Florenz war ich immer noch nicht sicher, was ich mit der mir noch gebliebenen Zeit anfangen sollte. Eine Toskanarundtour, mit dem Fahrrad nach Norden Richtung Schweiz, mit dem Zug nach Hause um an meinem baldigen Geburtstag zu Hause zu sein? Auf der Suche nach der Jugendherberge sprach mich dann ein Italiener auf nem Fahrrad an, der gerade auf dem Nachhauseweg war und schwärmte von der Schönheit der Toskana. Er würde selbst an den Wochenenden immer mit dem Rennrad unterwegs sein und davon träumen auchmal so eine längere Radreise wie ich zu machen. Das wirkte.&lt;/p&gt;
&lt;p&gt;Danach war die Entscheidung leicht. Es sollte wieder nach Süden gehen.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Florenz – 85km Siena – 70km – San Quirico – 111km – Civitella – 78km – Florenz&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Durch die Hügel des Chianti führte mich die Strecke nach Siena. Die mit Sicherheit wunderschöne Landschaft konnte ich nur erahnen. Über allem hing, wie auch schon in den ganzen letzten Wochen, ein dichter grauer Dunstschleier. Ich habe extra Postkarten gekauft um zu sehen, was diese Ecke so berühmt und bekannt gemacht hat.&lt;/p&gt;
&lt;p&gt;Abends in der Jugi traf ich neben Raul dem Belgier auch einen Australier wieder mit dem ich zwei Tage zuvor schon in Florenz geredet hatte. Gemeinsam gingen wir abends auf den Piazza del Campa, angeblich einer der schönsten Plätze der Welt, und erlebten ein gratis Gianna Nannini Konzert. Schätzungsweise 40.000 andere Leute taten dasselbe. Siena ist im übrigen sehr viel sehenswerter als Florenz.&lt;/p&gt;
&lt;p&gt;Geplant hatte ich insgesamt 5 relativ kurze Etappen für die Toskanatour. Es wurden leider nur vier. Die Aufenthalte in Cortona und Arezzo fielen wegen Überbelegung der Jugendherbergen aus und bescherten mir eine ungeplante Nacht in einem Tal westlich von Arezzo. Zuvor war ich nach Süden durch die Crete gefahren, hatte die Abtei „Monte Oliveto Maggiore“ besucht, und war nach Montepulciano hinaufgefahren.&lt;/p&gt;
&lt;p&gt;&lt;a href="../florenz-teningen"&gt;Weiter &amp;gt;&amp;gt; Florenz - Teningen&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Splügenpass - Adria</title><link>https://flowfx.de/blog/spluegenpass-adria/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/spluegenpass-adria/</guid><description>&lt;p&gt;&lt;em&gt;Andeer – 90km – Damaso – Boot &amp;amp; 50km – bei Pontiala – 10km Zug &amp;amp; 5km Rad – Bergamo – 123km – Alosa – 90km Rad &amp;amp; 30km Zug – Ferrara – Zug – Rimini&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Zum ersten Mal in meinem Leben kam ich nun nach Italien. Und es sah genauso aus, wie ich es mir vorgestellt hatte. Die Postkarten und Fernsehbilder lügen in diesem Fall wohl mal nicht. Nach Ende der Abfahrt in Chiavenna herrschte wieder T-Shirt-Wetter. Wenigstens von den Temperaturen her. Die sommerliche italienische Schwüle war mehr als deutlich zu spüren. Leider war es auch immer noch bedeckt. Da wir Lust auf eine Jugendherberge hatten steuerten wir Damaso am Westufer des Comer Sees an. Die, nicht ganz offizielle, JH liegt direkt am See, welchen ich am Abend auch gleich testete. Urteil: nass und erfrischend. Abends gab es logischerweise Pizza.&lt;/p&gt;
&lt;p&gt;Am nächsten Morgen regnete es wie aus Eimern. Dort bleiben wollten wir nicht, also nahmen wir um halb vier Uhr nachmittags die Fähre über den See nach Varenna um dort mit dem Zug weiter nach Bergamo zu fahren. Aber Pustekuchen. Die Zuglinie war wegen Bauarbeiten still gelegt. Obwohl es immer noch regnete setzten wir uns auf unsere Räder und fuhren los. Schnell war Lecco erreicht. McDonalds stärkte uns, eine JH suchten wir allerdings vergebens. Wir starteten die lange Suche nach einem Schlafplatz, indem wir Richtung Bergamo aufbrachen. Interessanterweise stellten wir erst jetzt fest wie viele Zäune die Italiener in jenen Breiten um ihre Häuser bauen. Der Zaun/Haus-Quotient liegt ungefähr bei 1! Gegen 22 Uhr fuhren wir gerade durch ein Wohngebiet abseits der viel befahrenen Hauptstraße, als die Suche ein Ende hatte. Es machte einen lauten Knall und Alex´ Hinterreifen verabschiedete sich. Da auch der Mantel beschädigt war, was wir aber erst später entdeckten, explodierte der Ersatzschlauch auch noch. Ohne Lust auf weitere Reparaturversuche verzogen wir uns hinter ein Gemeindeverwaltungsgebäude (ohne Zaun!) und versuchten erstmal zu schlafen.&lt;/p&gt;
&lt;p&gt;Die Bilanz des nächsten Morgens: Ein kaputter Mantel, zwei geplatzte Schläuche, eine Delle in der Felge (Alex machte die Bordsteinkante eines Penny-Markt-Parkplatzes dafür verantwortlich), ein defektes Lenkerhörnchen, Alex´ Knie schmerzt, immer noch Regen und es ist Sonntag(!). Wir wissen bis heute nicht wie der Ort eigentlich heißt. Aber er hatte einen Bahnhof und da wir in der letzten Nacht wirklich noch 50km gefahren waren, mussten wir nur 15 Minuten Zug fahren bis wir in Bergamo waren.&lt;/p&gt;
&lt;p&gt;Wir haben uns dann in der Jugendherberge einquartiert, Wäsche gewaschen, Alex´ Fahrrad reparieren lassen und auf besseres Wetter gewartet. Das kam dann auch. Nach zwei Ruhetagen, die wir mit Lesen, Bier trinken und Klönen verbracht hatten, starteten wir mit neuen Hoffnungen in Richtung Adria.&lt;/p&gt;
&lt;p&gt;Jetzt war es endlich warm, die Sonne stand am blauen Himmel. Die Po-Ebene ist zumeist topfeben, und ein steter leichter Rückenwind ließ uns schnell voran kommen. Meistens auf Nebenstraßen radelnd kamen wir durch viele hübsche kleine Dörfer und fuhren durch Felder mit Mais, Sonnenblumen und Melonen. In Mantova kosteten wir die besten Honigmelonen und Pfirsiche die ich je gegessen habe. Der Po selbst ist wahrlich keine Augenweide, bescherrte uns aber ein paar sehr ruhige Deichstraßen.&lt;/p&gt;
&lt;p&gt;Am zweiten Tag und nach 210km in der Po-Ebene war die gemeinsame Radtour dann vorbei. Alex´ Knie sagte eindeutig: Hör auf! Von Sedime brachte uns der Zug nach Ferrara, von wo wir am nächsten Tag, ebenfalls per Bahn, nach Rimini fuhren. Es folgten zwei ziemlich langweilige Ruhetage. Der Tourismus war eher auf Party ala Ballermann ausgelegt, glauben wir jedenfalls. Das Meer war eine Riesenenttäuschung.&lt;/p&gt;
&lt;p&gt;Am Mittag des 17. August trennten wir uns. Alex nahm den Nachtzug nach München und war am nächsten Abend zu Hause. Ich konzentrierte mich auf unser eigentliches Ziel: Rom. Es war dennoch ein komisches Gefühl. Auf einmal war ich alleine unterwegs. Zugegeben, die zurückliegenden zwei Wochen waren nicht immer das Gelbe vom Ei gewesen. Ich denke es lag daran, dass ich es bisher gewohnt war immer alleine unterwegs zu sein. Oft hatte ich nicht genug Geduld gehabt, wenn es hieß auf Alex zu warten oder Rücksicht zu nehmen. Dazu kamen Alex´ Knieprobleme, die natürlich auf die Stimmung drückten.&lt;/p&gt;
&lt;p&gt;Andererseits wäre ich viel lieber nicht alleine weiter gefahren. Es gibt nämlich Momente, die kann man alleine einfach nicht erleben. Windschattenfahren und risikoloses Einkaufen ist ein kleiner Teil davon. Ich meine aber eigentlich jene Augenblicke, in denen man nicht viel sagen muss, die man einfach gemeinsam genießen kann. Mir fallen dazu spontan zwei Augenblicke ein. Das Erreichen der Passhöhe des Splügenpasses und unser Ruhetag in Bergamo. Biertrinken macht alleine einfach keinen Spass. Vielleicht ist der letzte Satz sogar die beste Beschreibung für das was ich meine. Einen weiteren dieser Augenblicke erlebte ich vier Tage später in Rom. Nach Bezug meiner Herberge, Dusche und Abendessen ging ich zum Collosseum um wirklich festzustellen, dass ich angekommen war. Da blieb ich dann einige Zeit sitzen. Aber leider war ich alleine, ohne jemanden mit dem ich die großartige Athmosphäre dort hätte teilen können.&lt;/p&gt;
&lt;p&gt;&lt;a href="../rimini-rom"&gt;Weiter &amp;gt;&amp;gt; Rimini - Rom&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Teningen - Splügenpass</title><link>https://flowfx.de/blog/teningen-spluegenpass/</link><pubDate>Tue, 01 Oct 2002 00:00:00 +0000</pubDate><guid>https://flowfx.de/blog/teningen-spluegenpass/</guid><description>&lt;p&gt;&lt;em&gt;Teningen – 82km – Bad Bellingen – 108km – Kaiserstuhl / CH – 84km – Kreuzlingen – 90km – Schaan – 90km - Andeer&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Gestärkt durch das vermeintlich vorerst letzte ausgiebige Frühstück stiegen wir am Morgen des 4. August endlich in die Pedale. Schon auf dem Weg nach Freiburg verfuhren wir uns das erste mal (ich hatte die Karte..). Bis zum frühen Nachmittag hatten wir schönes Radlwetter. Durch das flache Rheintal ging es zum Rhein. Dort sind wir weitesgehend einem ufernahen Wirtschaftsweg flussaufwärts gefolgt.&lt;/p&gt;
&lt;p&gt;Der aufkommende Regen verschlechterte die Fahrbahnbeschaffenheit des sandigen Weges und ließ uns nicht gerade schnell vorankommen. Nach, gefühlsmäßig, viel zu wenigen Kilometern schlugen wir unser erstes Lager direkt am Rhein auf, so dass wir uns sowie unsere Räder waschen konnten.&lt;/p&gt;
&lt;p&gt;Die meisten Tage in der Schweiz hatten wir kühles, regnerisches Wetter. Von den Unwettern, die zu der Zeit in Bayern und Österreich wüteten, bekamen wir aber nichts ab. Die Strecke am Rhein entlang verläuft meistens recht flach. Die schönen Alpenpanoramen konnten wir mangels Sicht leider nur erahnen.&lt;/p&gt;
&lt;p&gt;Der nächste Tag brachte recht viel Sonnenschein. Nach einem kleinen Abstecher nach Frankreich erreichten wir Basel und somit die ausgeschilderten Veloland-Radwegen, denen wir bis nach Italien folgten. Die Rheinroute Nr.2 folgt dem Rhein, immer auf der Schweizer Seite, bis nach Andermatt. Bis auf ein paar Abkürzungen, beispielsweise von Kaiserstuhl nach Schaffhausen (-25km!), sind wir diesen Weg bis Chur gefahren, wo wir auf den Radweg Nr.6 abbogen, der uns bis nach Splügen brachte.&lt;/p&gt;
&lt;p&gt;Die erste Nacht in der Schweiz verbrachten wir auf einer Wiese neben einem Sonnenblumenfeld. Der Bauer verstand uns so wenig wie wir ihn, aber seine Tochter konnte übersetzen: Deutsch – Schweizerdeutsch. Zu dem Geräusch von Regen aufzuwachen ist nicht sehr motivierend. Da hilft erstmal nur ein gutes Frühstück und eine Tasse Kaffee. Beides fanden wir in einem Café im ersten deutschen Dorf das wir fanden. Eigentlich hatte nur die Konditorei geöffnet und das Café Betriebsferien. Doch wir sahen wohl sehr mitleidserregend aus in unseren Regensachen, so dass wir als einzige Gäste im Café bedient wurden.&lt;/p&gt;
&lt;p&gt;Richtung Bodensee wurden die Radfahrer immer zahlreicher, selbst bei dem miesen Wetter das wir hatten. Aufgrund des Regens und Alex´ beginnenden körperlichen Beschwerden verbrachten wir zwei Nächte in den tollen Schweizer Jugis. Das dort gebotene Frühstück sollte ein Vorbild für alle Jugendherbergen der Welt sein. Nur ganz billig ist das ganze leider nicht.&lt;/p&gt;
&lt;p&gt;Die letzte Nacht vor der Alpenhauptkammüberquerung lagerten wir auf dem Gelände einer Steinbruchfirma bei Andeer. Auf über 900 Meter über NN waren wir da schon gekommen. Ich war zwar letztes Jahr schon einmal auf den Brocken gefahren, allerdings ganz ohne Gepäck. So war der Verlauf des nächsten Tages eine große Unbekannte.&lt;/p&gt;
&lt;p&gt;Murphys Gesetz gilt auch auf dem Berg: Der Weg ist immer länger als man von unten denkt. Die nächste Kehre enthüllt meistens weitere. Und nach der Schweizer Zollstation geht es mindestens noch zwei weitere Kilometer bergauf. (Na gut, Murphy ist das wohl nicht ganz)&lt;/p&gt;
&lt;p&gt;Je näher wir der Sonne kamen, desto wärmer wurde es leider nicht. 16km und 500hm bis Splügen. 9km und 700hm bis zur Passhöhe des Splügenpasses. Etwas vergleichbar anstrengendes hatte ich bis dato nur beim Bund erlebt. Mit 30kg auf dem Rücken im Eiltempo durch die Märkische Heide. Der Unterschied dazu war, dass wir uns nicht einmal fragen konnten was das ganze für einen Sinn hätte. Es zählt nur, dass man immer weiterfährt, egal wie langsam. Hauptsache ankommen. Irgendwie.&lt;/p&gt;
&lt;p&gt;Erstaunlich ist es, wie viele Radfahrer man auf der Passhöhe trifft. Mehr als uns während des Aufstiegs entgegenkamen. Oben haben wir erstmal trockene Klamotten und alles, was wir an Wind- und Kälteschutz mithatten, angezogen, bevor es auf die lange Abfahrt ging. Bis Chiavenna waren es 30km auf denen es nur bergab ging. Eine dreiviertel Stunde mussten wir fast gar nicht pedalieren. Viele Serpentinen ließen nur eine Höchstgeschwindigkeit von 60,4 km/h zu, und das während einer Dorfdurchfahrt. Es war Donnerstag, und somit die Straße nicht allzu befahren. So konnten wir die teilweise grandiosen Aussichten genießen und erhielten eine angemessene Entschädigung für die vorherigen Qualen.&lt;/p&gt;
&lt;p&gt;&lt;a href="../spluegenpass-adria"&gt;Weiter &amp;gt;&amp;gt; Splügenpass - Adria&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>