<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Johannes Filter</title>
    <link>https://johannesfilter.com/</link>
    <description>Recent content on Johannes Filter</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 12 Mar 2026 17:00:00 +0100</lastBuildDate>
    <atom:link href="https://johannesfilter.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CiviCRM Standalone: Newsletter Double Opt-In mit beliebiger Website</title>
      <link>https://johannesfilter.com/de/blog/civicrm-standalone-newsletter-double-opt-in/</link>
      <pubDate>Thu, 12 Mar 2026 17:00:00 +0100</pubDate>
      <guid>https://johannesfilter.com/de/blog/civicrm-standalone-newsletter-double-opt-in/</guid>
      <description>&lt;h2 id=&#34;einleitung&#34;&gt;Einleitung&lt;/h2&gt;&#xA;&lt;p&gt;Wenn Sie eine Nonprofit- oder Community-Organisation betreiben, möchten Sie wahrscheinlich eine Newsletter-Anmeldung auf Ihrer Website haben.&#xA;Und wenn Sie CiviCRM als CRM nutzen, sollen neue Abonnent:innen direkt in CiviCRM landen - mit sauberem Double-Opt-In und ohne zusätzlichen Newsletter-Dienst.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;CiviCRM Standalone&lt;/strong&gt; (die neue Deployment-Option, die ohne Drupal, WordPress oder Joomla als Host-CMS läuft) macht das gleichzeitig einfacher und schwieriger.&#xA;Einfacher, weil das CRM jetzt ein sauber getrennter, eigenständiger Dienst ist.&#xA;Schwieriger, weil die meisten vorhandenen Anleitungen davon ausgehen, dass CiviCRM in ein CMS eingebettet ist, und viele alte URL-Pfade schlicht nicht funktionieren.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CiviCRM Standalone: Newsletter Double Opt-In with Any Website</title>
      <link>https://johannesfilter.com/civicrm-standalone-newsletter-double-opt-in/</link>
      <pubDate>Thu, 12 Mar 2026 17:00:00 +0100</pubDate>
      <guid>https://johannesfilter.com/civicrm-standalone-newsletter-double-opt-in/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;If you run a nonprofit or community organization, you probably want a newsletter signup on your website.&#xA;And if you use CiviCRM as your CRM, you want new subscribers to land directly in CiviCRM — with proper double opt-in, no third-party newsletter service required.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;CiviCRM Standalone&lt;/strong&gt; (the new deployment option that runs without Drupal, WordPress, or Joomla as a host CMS) makes this both easier and trickier.&#xA;Easier because your CRM is now a clean, independent service.&#xA;Trickier because most of the existing tutorials assume CiviCRM is embedded inside a CMS, and many of the old URL paths simply do not work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Von Berlin nach Malmö – alle Verbindungen im Überblick</title>
      <link>https://johannesfilter.com/notes/berlin-malmoe-verbindungen/</link>
      <pubDate>Wed, 18 Feb 2026 12:00:00 +0100</pubDate>
      <guid>https://johannesfilter.com/notes/berlin-malmoe-verbindungen/</guid>
      <description>&lt;p&gt;Malmö liegt nur 340 km von Berlin entfernt, aber dazwischen liegt die Ostsee. Das macht die Reiseplanung spannender als bei einer reinen Zugfahrt. Hier ein Überblick über alle Möglichkeiten, von Berlin nach Malmö (und zurück) zu kommen – mit Preisen, Fahrzeiten und praktischen Tipps.&lt;/p&gt;&#xA;&lt;h2 id=&#34;vorweg-das-deutschlandticket&#34;&gt;Vorweg: Das Deutschlandticket&lt;/h2&gt;&#xA;&lt;p&gt;Wer ein Deutschlandticket (49 €/Monat) besitzt, kann die innerdeutschen Zubringerstrecken komplett damit abdecken:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Berlin → Rostock:&lt;/strong&gt; Regionalzug, ca. 2,5 Stunden&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Berlin → Bad Kleinen → Lübeck → Travemünde:&lt;/strong&gt; Regionalzüge, ca. 4,5–5 Stunden, 1–2 Umstiege&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Bei den folgenden Routen sind die Zusatzkosten jeweils „mit D-Ticket&amp;quot; angegeben – also nur die Kosten, die über das Deutschlandticket hinaus anfallen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TimeTiles</title>
      <link>https://johannesfilter.com/de/projects/timetiles/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/timetiles/</guid>
      <description>&lt;p&gt;CSV mit Ereignissen, Daten und Orten hochladen → TimeTiles erstellt eine interaktive Karte mit Zeitachsen-Steuerung → Chronik überall teilen oder einbetten.&lt;/p&gt;&#xA;&lt;p&gt;Entwickelt für Journalist:innen, Forscher:innen und Aktivist:innen, die komplexe raum-zeitliche Daten ohne technische Expertise visualisieren müssen. Mit automatischer Geokodierung, Ereignis-Clustering und dynamischer Filterung.&lt;/p&gt;&#xA;&lt;p&gt;Derzeit in aktiver Entwicklung. Gefördert vom Prototype Fund.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TimeTiles</title>
      <link>https://johannesfilter.com/projects/timetiles/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/timetiles/</guid>
      <description>&lt;p&gt;Upload a CSV with events, dates, and locations → TimeTiles creates an interactive map with timeline controls → Share or embed your chronicle anywhere.&lt;/p&gt;&#xA;&lt;p&gt;Built for journalists, researchers, and activists who need to visualize complex spatio-temporal data without technical expertise. Features automatic geocoding, event clustering, and dynamic filtering.&lt;/p&gt;&#xA;&lt;p&gt;Currently in active development. Funded by the Prototype Fund.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CeMAS BTW 2025</title>
      <link>https://johannesfilter.com/de/projects/btw2025-cemas/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/projects/btw2025-cemas/</guid>
      <description>&lt;p&gt;Digitales Monitoring-Projekt zur Verfolgung von Desinformationskampagnen in sozialen Medien im Vorfeld der Bundestagswahl 2025. Analyse ausländischer Einflussnahme und antidemokratischer Aktivitäten auf Telegram, YouTube, X, TikTok und Facebook mit Daten-Dashboards, Faktenchecks und strategischen Empfehlungen zum Schutz des demokratischen Diskurses.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CeMAS BTW 2025</title>
      <link>https://johannesfilter.com/projects/cemas-btw-2025/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/projects/cemas-btw-2025/</guid>
      <description>&lt;p&gt;Digital monitoring project tracking disinformation campaigns on social media ahead of the 2025 German federal election. Analyzing foreign influence operations and anti-democratic activities across Telegram, YouTube, X, TikTok and Facebook with data dashboards, fact-checking, and strategic recommendations to protect democratic discourse.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Terror seit dem NSU</title>
      <link>https://johannesfilter.com/de/projects/terror-seit-nsu/</link>
      <pubDate>Fri, 01 Mar 2024 00:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/terror-seit-nsu/</guid>
      <description>&lt;p&gt;Eine umfassende Datenbank, die rechtsterroristische Fälle in Deutschland seit 2011 dokumentiert. Entwickelt mit CeMAS, macht diese interaktive Plattform kritische Daten über extremistische Gewalt öffentlich zugänglich.&lt;/p&gt;&#xA;&lt;p&gt;Ich entwickelte die technische Infrastruktur zusammen mit Jan Kaßel und Martin Müller und schuf Datenvisualisierungen und Schnittstellen, die Journalist:innen, Forscher:innen und der Zivilgesellschaft helfen, Muster des Rechtsterrorismus zu verstehen.&lt;/p&gt;&#xA;&lt;p&gt;Nominiert für den Grimme Online Award 2024.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Terror Since the NSU</title>
      <link>https://johannesfilter.com/projects/terror-since-the-nsu/</link>
      <pubDate>Fri, 01 Mar 2024 00:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/terror-since-the-nsu/</guid>
      <description>&lt;p&gt;A comprehensive database documenting right-wing terrorist cases in Germany since 2011. Developed with CeMAS, this interactive platform makes critical data on extremist violence publicly accessible.&lt;/p&gt;&#xA;&lt;p&gt;I built the technical infrastructure alongside Jan Kaßel and Martin Müller, creating data visualizations and interfaces that help journalists, researchers, and civil society understand patterns of right-wing terrorism.&lt;/p&gt;&#xA;&lt;p&gt;Nominated for the Grimme Online Award 2024.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Retrieve GitHub Action Secrets via Webhook</title>
      <link>https://johannesfilter.com/retrieve-github-action-secrets-via-webhook/</link>
      <pubDate>Mon, 30 Jan 2023 11:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/retrieve-github-action-secrets-via-webhook/</guid>
      <description>&lt;p&gt;If you need to extract secrets from GitHub Actions, there is no way you can do read them via the GitHub UI.&#xA;Here is a quick way on how to get the secret values by using curl and a webhook.&#xA;You can, e.g., use Keybase to create a webhook.&#xA;Install the &amp;ldquo;Webhook Bot&amp;rdquo; into a chat or channel, then run &lt;code&gt;!webhook create somename&lt;/code&gt; and note the resulting webhook URL.&lt;/p&gt;&#xA;&lt;p&gt;Create the GitHub Action (see below) in your repo.&#xA;Set a GitHub Action secret to &lt;code&gt;KEYBASE_WEBHOOK&lt;/code&gt; and then manually execute the action once.&#xA;Afterward, remove the GitHub Action from your code.&#xA;You will see all the secrets in the chat.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ImageNet: How a UK TV Cook ended up as &#39;slut&#39; in an influential image database</title>
      <link>https://johannesfilter.com/imagenet-how-a-uk-tv-cook-ended-up-as-slut-in-an-influential-image-database/</link>
      <pubDate>Thu, 10 Mar 2022 13:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/imagenet-how-a-uk-tv-cook-ended-up-as-slut-in-an-influential-image-database/</guid>
      <description>&lt;p&gt;One reason for the recent advances in machine learning is the large amount of annotated data.&#xA;The creation of ImageNet &lt;a href=&#34;https://qz.com/1034972/the-data-that-changed-the-direction-of-ai-research-and-possibly-the-world/&#34;&gt;was important&lt;/a&gt; in the area of computer vision.&#xA;ImageNet is a collection of thousands of annotated images.&#xA;For each image, there is a short term describing what is displayed, e.g., a house or a child.&#xA;In a long &lt;a href=&#34;https://excavating.ai/&#34;&gt;essay&lt;/a&gt; Kate Crawford and Trevor Paglen describe the problematic creation of ImagetNet.&#xA;They also point out some strange descriptions of humans in ImagetNet, i.e., &amp;ldquo;drug addict&amp;rdquo;, &amp;ldquo;loser&amp;rdquo; or &amp;ldquo;slut&amp;rdquo;.&#xA;In this article, I reconstruct how the famous UK TV Cook &lt;a href=&#34;https://en.wikipedia.org/wiki/Nigella_Lawson&#34;&gt;Nigella Lawson&lt;/a&gt; ended up marked as &amp;ldquo;slut&amp;rdquo; in ImageNet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polizeischüsse</title>
      <link>https://johannesfilter.com/de/projects/polizeischuesse/</link>
      <pubDate>Wed, 08 Dec 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/polizeischuesse/</guid>
      <description>&lt;p&gt;Während die deutsche Verwaltung Vorfälle tödlicher Polizeischüsse sammelt, veröffentlicht sie nur Statistiken.&#xA;Das deutsche Magazin CILIP sammelt tödliche Schüsse seit den 1970er Jahren.&#xA;Wir digitalisierten alle Daten, die zuvor nur in gedruckten Tabellen veröffentlicht wurden, und erstellten interaktive Visualisierungen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Polizeischüsse</title>
      <link>https://johannesfilter.com/projects/polizeisch%C3%BCsse/</link>
      <pubDate>Wed, 08 Dec 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/polizeisch%C3%BCsse/</guid>
      <description>&lt;p&gt;While the German administration collect incidents about fatal police shootings, they only publish statistics.&#xA;The German magazin CILIP collects fatal shootings since the 1970s.&#xA;We digitized all data that was previously only reported in printed out tables and built interactive visualizations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DataSkop: YouTube</title>
      <link>https://johannesfilter.com/de/projects/dataskop-youtube/</link>
      <pubDate>Thu, 15 Jul 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/dataskop-youtube/</guid>
      <description>&lt;p&gt;Als Teil meiner Arbeit bei &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;AlgorithmWatch&lt;/a&gt; haben wir Software-Tools entwickelt, um Algorithmen auf Tech-Plattformen zu untersuchen, z.B. Empfehlungen.&lt;/p&gt;&#xA;&lt;p&gt;DataSkop besteht aus zwei Teilen:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;einer Electron-basierten Desktop-Anwendung, mit der nutzerspezifische Daten, z.B. personalisierte Empfehlungen, erfasst werden&lt;/li&gt;&#xA;&lt;li&gt;einer Web-basierten Plattform, auf der Datenspender ihre Daten verwalten und Redakteure ihre Spendenuntersuchungen konfigurieren können&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In dem Projekt war ich der erfahrenste Softwareentwickler und war unter anderem für die Softwarearchitektur verantwortlich.&#xA;Ich arbeitete mit Frontend-Entwicklern, Designern und Forschern zusammen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DataSkop: YouTube</title>
      <link>https://johannesfilter.com/projects/dataskop-youtube/</link>
      <pubDate>Thu, 15 Jul 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/dataskop-youtube/</guid>
      <description>&lt;p&gt;As part of my job for &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;AlgorithmWatch&lt;/a&gt;, we built software tools to investigate algorithms on tech platforms, e.g. recommendations.&lt;/p&gt;&#xA;&lt;p&gt;DataSkop comprises of two parts:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;an Electron-based Desktop application where user-specific data, e.g. personalized recommendations, gets scraped&lt;/li&gt;&#xA;&lt;li&gt;a Web-based platform where data donors manage their data and editors can configure their donation investigation&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;In the project, I was the most senior software developer and was responsible for the software architecture, among other things.&#xA;I collaborated with frontend developers, designers and researches.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tatort Rechts</title>
      <link>https://johannesfilter.com/de/projects/tatort-rechts/</link>
      <pubDate>Mon, 15 Feb 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/tatort-rechts/</guid>
      <description>&lt;p&gt;Verschiedene deutsche NGOs sammeln Vorfälle rechter Gewalt auf ihren Websites.&#xA;Wir sammeln (scrapen) und transformieren die verstreute, halbstrukturierte Berichterstattung in eine durchsuchbare Datenbank.&#xA;Ich entwickelte die gesamte Software, während meine Projektpartnerin für die Inhalte der Website verantwortlich war.&lt;/p&gt;&#xA;&lt;p&gt;Die Arbeit wurde vom deutschen &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Bundesministerium für Bildung und Forschung&lt;/a&gt; im Rahmen des &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt; gefördert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tatort Rechts</title>
      <link>https://johannesfilter.com/projects/tatort-rechts/</link>
      <pubDate>Mon, 15 Feb 2021 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/tatort-rechts/</guid>
      <description>&lt;p&gt;Various German NGOs collect incidents of right-wing violence on their websites.&#xA;We collect (scrape) and transform the scattered, semi-structured reporting into a searchable database.&#xA;I was develped all the software, whereas my project partner was responsible for the content on the website.&lt;/p&gt;&#xA;&lt;p&gt;The work was funded by the German &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Federal Ministry of Education and Research&lt;/a&gt; as part of the &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Speech to text with Google Cloud</title>
      <link>https://johannesfilter.com/speech-to-text-with-google-cloud/</link>
      <pubDate>Tue, 08 Sep 2020 11:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/speech-to-text-with-google-cloud/</guid>
      <description>&lt;p&gt;Nobody should manually transcribe long interviews in the year 2021.&#xA;Machine Learning solved this problem already.&#xA;Google overs a simple API that works for over 120 languages.&#xA;&lt;a href=&#34;https://cloud.google.com/speech-to-text#section-2&#34;&gt;Check out their demo&lt;/a&gt; (works only for sound clips up to 60 seconds).&lt;/p&gt;&#xA;&lt;p&gt;Using their API is free to process up to one hour.&#xA;After this, they charge 0.006 per second (1.44 Euro per hour).&lt;/p&gt;&#xA;&lt;p&gt;You need to work with the command line to use the API, there is AFAIK no frontend.&#xA;The official tutorials are fine, but I stumbled upon a few obstacles.&#xA;So I document some things in this blog post.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pd3f</title>
      <link>https://johannesfilter.com/de/projects/pd3f/</link>
      <pubDate>Fri, 21 Aug 2020 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/pd3f/</guid>
      <description>&lt;p&gt;Über PDF hinausgehen mit pd3f.&#xA;pd3f ist eine Open-Source-Pipeline zur PDF-Textextraktion, die selbst gehostet, lokal und Docker-basiert ist.&#xA;pd3f rekonstruiert den ursprünglichen kontinuierlichen Text mit Hilfe von Machine Learning.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/pd3f-flow.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Die Arbeit wurde vom deutschen &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Bundesministerium für Bildung und Forschung&lt;/a&gt; im Rahmen des &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt; gefördert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pd3f</title>
      <link>https://johannesfilter.com/projects/pd3f/</link>
      <pubDate>Fri, 21 Aug 2020 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/pd3f/</guid>
      <description>&lt;p&gt;Going beyond PDF with pd3f.&#xA;pd3f is an Open-source PDF text extraction pipeline that is self-hosted, local-first and Docker-based.&#xA;pd3f reconstructs the original continuous text with the help of machine learning.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/pd3f-flow.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;The work was funded by the German &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Federal Ministry of Education and Research&lt;/a&gt; as part of the &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kommentare</title>
      <link>https://johannesfilter.com/de/projects/kommentare/</link>
      <pubDate>Tue, 21 Apr 2020 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/kommentare/</guid>
      <description>&lt;p&gt;Machine Learning (&amp;ldquo;KI&amp;rdquo;) wird als Lösung angepriesen, um Hass aus dem Internet zu filtern.&#xA;Diese Website erklärt, wie Computer mit Machine Learning die Bedeutung von Wörtern lernen.&lt;/p&gt;&#xA;&lt;p&gt;Die Website enthält auch experimentellere Visualisierungen darüber, wie Wörter in den letzten 10 Jahren ihre Bedeutung verändert haben. Dies wurde anhand von 13 Millionen deutschen Nachrichtenkommentaren mit einer Technik zur Verarbeitung natürlicher Sprache durchgeführt.&lt;/p&gt;&#xA; &lt;video autoplay loop controls muted style=&#34;width: 100%&#34;&gt;&#xA;  &lt;source src=&#34;https://johannesfilter.com/project-images/kommentare-mittelmeer.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt; &#xA;&lt;p&gt;Die Arbeit wurde vom deutschen &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Bundesministerium für Bildung und Forschung&lt;/a&gt; im Rahmen des &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt; gefördert.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kommentare</title>
      <link>https://johannesfilter.com/projects/kommentare/</link>
      <pubDate>Tue, 21 Apr 2020 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/kommentare/</guid>
      <description>&lt;p&gt;Machine Learning (&amp;ldquo;AI&amp;rdquo;) is sold as a solution to filter hate from the Internet.&#xA;This website explains how computers learn the meanings of words with machine learning.&lt;/p&gt;&#xA;&lt;p&gt;The website also includes some more experimental visualizations about how words have changed their meaning in the past 10 years. This was done on on 13 million German news comments using a natural language processing technique.&lt;/p&gt;&#xA; &lt;video autoplay loop controls muted style=&#34;width: 100%&#34;&gt;&#xA;  &lt;source src=&#34;https://johannesfilter.com/project-images/kommentare-mittelmeer.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt; &#xA;&lt;p&gt;The work was funded by the German &lt;a href=&#34;https://www.bmbf.de/en/index.html&#34;&gt;Federal Ministry of Education and Research&lt;/a&gt; as part of the &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;Prototype Fund&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python and PDF: A Review of Existing Tools</title>
      <link>https://johannesfilter.com/python-and-pdf-a-review-of-existing-tools/</link>
      <pubDate>Sat, 11 Apr 2020 19:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/python-and-pdf-a-review-of-existing-tools/</guid>
      <description>&lt;p&gt;The Portable Document Format (PDF) was invented in the early 1990s and it’s still thriving. But PDFs are mainly for humans – not machines. So it’s often hard to automatically extract information out of PDFs. Besides, more and more functionalities were put into PDF. The complexity of the format makes it hard to get started. But there are existing, well-established software tools. Some have been around for decades. In this blog post, I review some existing tools with the focus on Python. Python is the default language for data processing right now.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Verify integrity of Videos files with FFmpeg</title>
      <link>https://johannesfilter.com/verify-integrity-of-videos-files-with-ffmpeg/</link>
      <pubDate>Tue, 04 Feb 2020 13:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/verify-integrity-of-videos-files-with-ffmpeg/</guid>
      <description>&lt;p&gt;Using &lt;a href=&#34;https://www.ffmpeg.org/&#34;&gt;ffmeg&lt;/a&gt; to verify the integrity of video files. Parallelized by using &lt;a href=&#34;https://www.gnu.org/software/parallel/&#34;&gt;GNU parallel&lt;/a&gt;, filesnames of problematic files are written to a text file.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/bin/bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;process_one&lt;span style=&#34;color:#f92672&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  local file&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;$1 &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; echo $file&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  local out&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;$(&lt;/span&gt;ffmpeg -threads &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; -v error -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$file&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; -f null - 2&amp;gt;&amp;amp;1&lt;span style=&#34;color:#66d9ef&#34;&gt;)&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$out&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;then&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;looks good&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    echo $out &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; echo $file &amp;gt;&amp;gt; problem.txt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;fi&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;export -f process_one&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;parallel process_one ::: video_directory/*.mp4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>vsberichte.de</title>
      <link>https://johannesfilter.com/de/projects/vsberichte/</link>
      <pubDate>Mon, 09 Dec 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/vsberichte/</guid>
      <description>&lt;p&gt;Ein Online-Archiv für die Jahresberichte des &lt;em&gt;Verfassungsschutzes&lt;/em&gt; (der deutsche Inlandsnachrichtendienst): gesammelt, durchsuchbar und analysiert.&lt;/p&gt;&#xA;&lt;p&gt;Der &lt;em&gt;Verfassungsschutz&lt;/em&gt; hat die Aufgabe, die Öffentlichkeit über verfassungsfeindliche Bestrebungen zu informieren.&#xA;Die 16 Landesämter und das Bundesamt veröffentlichen jährlich Berichte zum Verfassungsschutz.&#xA;Leider löschen sie alte Berichte von ihren Websites. Diese Website ist ein zivilgesellschaftliches Archiv, das den Zugang zu den Berichten vereinfacht.&lt;/p&gt;</description>
    </item>
    <item>
      <title>vsberichte.de</title>
      <link>https://johannesfilter.com/projects/vsberichte.de/</link>
      <pubDate>Mon, 09 Dec 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/vsberichte.de/</guid>
      <description>&lt;p&gt;An online archive for the annual report of the &lt;em&gt;Verfassungsschutz&lt;/em&gt; (the German internal intelligence): collected, searchable and analyzed.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;em&gt;Verfassungsschutz&lt;/em&gt; has the task of informing the public about anti-constitutional efforts.&#xA;The 16 state offices and the federal office publish annual reports on the protection of the constitution.&#xA;Unfortunately, they delete old reports from their website. This website is a civil society archive that simplifies access to the reports.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maaßen &amp; Retweets</title>
      <link>https://johannesfilter.com/de/projects/maassen/</link>
      <pubDate>Thu, 15 Aug 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/maassen/</guid>
      <description>&lt;p&gt;Eine neuartige Technik zur Visualisierung von Twitter-Accounts basierend auf dem Retweet-Verhalten anderer Twitter-Nutzer.&lt;/p&gt;&#xA;&lt;p&gt;Die Grundidee: Wenn Leute einen bestimmten Account retweeten, wen retweeten sie außerdem noch?&#xA;Ich nutzte sie, um die Fangemeinde des ehemaligen Leiters des deutschen Verfassungsschutzes Hans-Georg Maaßen zu untersuchen.&lt;/p&gt;&#xA;&lt;p&gt;Die Online-Nachrichtenplattform netzpolitik.org &lt;a href=&#34;https://netzpolitik.org/2019/datenanalyse-maassens-follower-retweeten-rechtsradikale-accounts-aber-fast-nie-die-cdu/&#34;&gt;schrieb einen exklusiven Nachrichtenartikel basierend auf meiner Analyse.&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Der Artikel sorgte für einige Online-Empörung, da die Schlagzeile irreführend war.&#xA;Ich hatte keinen Einfluss auf die Wahl der Schlagzeile und las den vollständigen Artikel erst nach der Veröffentlichung.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Maaßen &amp; Retweets</title>
      <link>https://johannesfilter.com/projects/maa%C3%9Fen-retweets/</link>
      <pubDate>Thu, 15 Aug 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/maa%C3%9Fen-retweets/</guid>
      <description>&lt;p&gt;A novel technique to visualize twitter acounts based on the retweet behavior of other twitter users.&lt;/p&gt;&#xA;&lt;p&gt;The basic idea: If people are retweeting a specific account, who are they retweeting besides the account?&#xA;I used it to investigate the fan base of the former head of German domestic intelligence Hans-Georg Maaßen.&lt;/p&gt;&#xA;&lt;p&gt;The online news platform netzpolitik.org &lt;a href=&#34;https://netzpolitik.org/2019/datenanalyse-maassens-follower-retweeten-rechtsradikale-accounts-aber-fast-nie-die-cdu/&#34;&gt;wrote an exclusive news article based on my analysis.&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The article sparked some online rage since the headline was misleading.&#xA;I did not have any influence in choosing the headline and only read the full article after it was published.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crawl Websites with wget2</title>
      <link>https://johannesfilter.com/crawl-websites-with-wget2/</link>
      <pubDate>Sat, 15 Jun 2019 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/crawl-websites-with-wget2/</guid>
      <description>&lt;p&gt;There are many ways how to crawl and scrape websites. The most popular way is probably the Python package &lt;a href=&#34;https://scrapy.org/&#34;&gt;scrapy&lt;/a&gt;. But there are more barebone alternatives such as the well-known &lt;a href=&#34;https://en.wikipedia.org/wiki/Wget&#34;&gt;GNU wget&lt;/a&gt;. The successor &lt;a href=&#34;https://github.com/rockdaboot/wget2&#34;&gt;wget2&lt;/a&gt; has some neat new features (HTTP/2, parallel downloading) that improve the scraping utilities even further. Now the basic usage.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--accept-regex &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;pattern&amp;#39;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This make is possible to discard certain URS. The option&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--filter-urls&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;is important to filter out URLs before sending requests. Otherwise, the request is sent and checked against afterward.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ULMFIT for German</title>
      <link>https://johannesfilter.com/ulmfit-for-german/</link>
      <pubDate>Mon, 29 Apr 2019 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/ulmfit-for-german/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://nlp.fast.ai/classification/2018/05/15/introducing-ulmfit.html&#34;&gt;ULMFIT&lt;/a&gt; by Howard and Ruder holds several state-of-the-art on text classification. The technique comprises several steps of transfer learning with language models. Language models try to predict the next words based on previous words. They can trained unsupervised on large collection of texts. As the by-product, they create powerful context-aware text represenations. While working on my master&amp;rsquo;s thesis, I needed a German language model. I created one and publish it for further usage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EU Elections</title>
      <link>https://johannesfilter.com/de/projects/europawahl-2019/</link>
      <pubDate>Sun, 21 Apr 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/europawahl-2019/</guid>
      <description>&lt;p&gt;Eine Visualisierung der häufigsten Wörter in den deutschen EU-Wahlprogrammen 2019.&#xA;Die 20 häufigsten Substantive wurden aus den Wahlprogrammen der Parteien extrahiert.&#xA;Ihre Rangfolge (wie häufig die Wörter sind) wurde zwischen den Parteien verglichen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/europawahl-2019.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Für die deutsche Bundestagswahl 2021 habe ich eine &lt;a href=&#34;https://github.com/jfilter/btw21&#34;&gt;ähnliche Grafik&lt;/a&gt; erstellt.&lt;/p&gt;</description>
    </item>
    <item>
      <title>EU Elections</title>
      <link>https://johannesfilter.com/projects/eu-elections/</link>
      <pubDate>Sun, 21 Apr 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/eu-elections/</guid>
      <description>&lt;p&gt;A visualization of the most frequent words in the German 2019 EU election programs.&#xA;The top 20 most common nouns were extracted out of the parties&amp;rsquo; election programms.&#xA;Their ranks (how frequent the words are) were compared among the parties.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/europawahl-2019.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;For the German federal election in 2021, I made a &lt;a href=&#34;https://github.com/jfilter/btw21&#34;&gt;similar graph&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Register Analysis</title>
      <link>https://johannesfilter.com/de/projects/offene-register-exploration/</link>
      <pubDate>Thu, 21 Mar 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/offene-register-exploration/</guid>
      <description>&lt;p&gt;Das britische Open-Data-Unternehmen &lt;a href=&#34;https://opencorporates.com/&#34;&gt;OpenCorporates&lt;/a&gt; machte das &lt;a href=&#34;https://blog.opencorporates.com/2019/02/05/german-company-data-now-open-for-all/&#34;&gt;deutsche Unternehmensregister öffentlich verfügbar&lt;/a&gt;.&#xA;Sie gaben die Daten an die &lt;a href=&#34;https://okfn.de/en/&#34;&gt;Open Knowledge Foundation Germany&lt;/a&gt; weiter, damit diese sie frei auf &lt;a href=&#34;https://offeneregister.de&#34;&gt;OffeneRegister.de&lt;/a&gt; verbreiten können.&lt;/p&gt;&#xA;&lt;p&gt;Um tiefer in die Daten einzutauchen, erstellte ich mehrere Grafiken.&#xA;Die wichtigste handelt von der unterschiedlichen Verteilung männlicher und weiblicher Namen unter den registrierten Personen.&lt;/p&gt;&#xA;&lt;p&gt;Meine ursprüngliche Grafik zu männlichen und weiblichen Namen (klicken Sie auf die Videos, um sie zu pausieren):&lt;/p&gt;&#xA;&lt;video autoplay loop controls muted style=&#34;width: 100%&#34;&gt;&#xA;  &lt;source src=&#34;https://johannesfilter.com/project-images/offene-register-vornamen.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt; &#xA;&lt;p&gt;Ich untersuchte auch das Vorkommen von Jahreszahlen in den Firmennamen:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Register Analysis</title>
      <link>https://johannesfilter.com/projects/register-analysis/</link>
      <pubDate>Thu, 21 Mar 2019 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/register-analysis/</guid>
      <description>&lt;p&gt;The UK-based Open Data company &lt;a href=&#34;https://opencorporates.com/&#34;&gt;OpenCorportes&lt;/a&gt; made the &lt;a href=&#34;https://blog.opencorporates.com/2019/02/05/german-company-data-now-open-for-all/&#34;&gt;German company register publicy available&lt;/a&gt;.&#xA;They gave the data to the &lt;a href=&#34;https://okfn.de/en/&#34;&gt;Open Knowledge Foundation Germany&lt;/a&gt; so they can distribute it freely on &lt;a href=&#34;https://offeneregister.de&#34;&gt;OffeneRegister.de&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In order to dive deeper into the data, I created several graphics.&#xA;The main one is about the different distribution of male and female names among the registered people.&lt;/p&gt;&#xA;&lt;p&gt;My original graph about male and female names (click on the videos to pause them):&lt;/p&gt;</description>
    </item>
    <item>
      <title>Collection of Machine Learning Resources</title>
      <link>https://johannesfilter.com/collection-of-machine-learning-resources/</link>
      <pubDate>Tue, 05 Feb 2019 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/collection-of-machine-learning-resources/</guid>
      <description>&lt;p&gt;Here is a collection of online resources, especially questions on stack exchange, I find interesting. Gets updated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;general-machine-learning&#34;&gt;General Machine Learning&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/268755/when-should-linear-regression-be-called-machine-learning&#34;&gt;When should linear regression be called &amp;ldquo;machine learning&amp;rdquo;?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/6/the-two-cultures-statistics-vs-machine-learning&#34;&gt;What is the difference between machine learning and statistics?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;general-neural-networks&#34;&gt;General Neural Networks&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://ai.stackexchange.com/questions/1479/do-scientists-know-what-is-happening-inside-artificial-neural-networks&#34;&gt;Do scientists know what is happening inside artificial neural networks?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/47868265/what-is-the-difference-between-an-embedding-layer-and-a-dense-layer&#34;&gt;What is the difference between an Embedding Layer and a Dense Layer?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/164876/tradeoff-batch-size-vs-number-of-iterations-to-train-a-neural-network&#34;&gt;Tradeoff batch size vs. number of iterations to train a neural network&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/194142/what-does-1x1-convolution-mean-in-a-neural-network&#34;&gt;What does 1x1 convolution mean in a neural network?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/240305/where-should-i-place-dropout-layers-in-a-neural-network&#34;&gt;Where should I place dropout layers in a neural network?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/309642/why-is-softmax-output-not-a-good-uncertainty-measure-for-deep-learning-models&#34;&gt;Why is softmax output not a good uncertainty measure for Deep Learning models?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://datascience.stackexchange.com/questions/14581/when-to-use-gru-over-lstm&#34;&gt;When to use GRU over LSTM?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/Universal_approximation_theorem&#34;&gt;Universal approximation theorem&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;training-a-nn&#34;&gt;Training a NN&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/160479/practical-hyperparameter-optimization-random-vs-grid-search&#34;&gt;Practical hyperparameter optimization: Random vs. grid search&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://datascience.stackexchange.com/questions/12532/does-batch-size-in-keras-have-any-effects-in-results-quality&#34;&gt;Does batch_size in Keras have any effects in results&amp;rsquo; quality?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://medium.com/huggingface/training-larger-batches-practical-tips-on-1-gpu-multi-gpu-distributed-setups-ec88c3e51255&#34;&gt;Training Neural Nets on Larger Batches: Practical Tips for 1-GPU, Multi-GPU &amp;amp; Distributed setups&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://ruder.io/optimizing-gradient-descent/index.html&#34;&gt;An overview of gradient descent optimization algorithms&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;distances&#34;&gt;Distances&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/99171/why-is-euclidean-distance-not-a-good-metric-in-high-dimensions&#34;&gt;Why is Euclidean distance not a good metric in high dimensions?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;metrics&#34;&gt;Metrics&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/82162/cohens-kappa-in-plain-english/268701&#34;&gt;Cohen&amp;rsquo;s kappa in plain English&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://datascience.stackexchange.com/questions/15989/micro-average-vs-macro-average-performance-in-a-multiclass-classification-settin&#34;&gt;Micro Average vs Macro average Performance in a Multiclass classification setting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/191645/calculating-f-score-which-is-the-positive-class-the-majority-or-minority-cla&#34;&gt;Why F1 is not a good Metric&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/49226/how-to-interpret-f-measure-values&#34;&gt;How to interpret F-measure values?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;loss&#34;&gt;Loss&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/36515202/why-is-the-cross-entropy-method-preferred-over-mean-squared-error-in-what-cases&#34;&gt;Why is the Cross Entropy method preferred over Mean Squared Error?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;preprocessing-images&#34;&gt;Preprocessing Images&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stats.stackexchange.com/questions/211436/why-normalize-images-by-subtracting-datasets-image-mean-instead-of-the-current&#34;&gt;Why normalize images by subtracting dataset&amp;rsquo;s image mean, instead of the current image mean in deep learning?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://stackoverflow.com/questions/18522295/python-pil-change-greyscale-tif-to-rgb&#34;&gt;Grayscale Image and keep 3 Dimensions&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;nlp&#34;&gt;NLP&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://datascience.stackexchange.com/questions/26947/why-do-we-need-to-add-start-s-end-s-symbols-when-using-recurrent-neural-n&#34;&gt;Why do we need to add START &amp;lt;s&amp;gt; + END &amp;lt;/s&amp;gt; symbols when using Recurrent Neural Nets for Sequence-to-Sequence Models?&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;further-literature&#34;&gt;Further Literature&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://explained.ai/&#34;&gt;https://explained.ai/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>Useful Commands for the Terminal</title>
      <link>https://johannesfilter.com/useful-commands-for-the-terminal/</link>
      <pubDate>Tue, 05 Feb 2019 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/useful-commands-for-the-terminal/</guid>
      <description>&lt;p&gt;Snippets of commands I use occasionally and tend to forget. Gets updated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;count-files-in-a-directory&#34;&gt;Count files in a directory&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ls -1 . | wc -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;count-files-in-a-directory-recursively-all-files-in-all-sub-directories&#34;&gt;Count files in a directory recursively (all files in all sub-directories)&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;find . -type f | wc -l&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;get-information-about-a-process&#34;&gt;Get information about a process&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ps -u -p &lt;span style=&#34;color:#ae81ff&#34;&gt;12959&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;get-storage-usage-for-directories&#34;&gt;Get storage usage for directories&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;du -sh /home/*&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;compress-to-bz2&#34;&gt;Compress to .bz2&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar cjf file.tar.bz2 dir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;extracting-bz2&#34;&gt;Extracting .bz2&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvjf file.tar.bz2 &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;extracting-gz&#34;&gt;Extracting .gz&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar xvzf file.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;execute-the-same-command-n-times-in-parallel&#34;&gt;Execute the same command N times in parallel&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;parallel -j $n_parallel $command ::: &lt;span style=&#34;color:#f92672&#34;&gt;{&lt;/span&gt;1..$n_times&lt;span style=&#34;color:#f92672&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If &amp;lsquo;-j&amp;rsquo; is unspecified, defaults to number of cores.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Burn Subtitles on Video with FFmpeg</title>
      <link>https://johannesfilter.com/burn-subtitles-on-video-with-ffmpeg/</link>
      <pubDate>Thu, 03 Jan 2019 20:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/burn-subtitles-on-video-with-ffmpeg/</guid>
      <description>&lt;p&gt;If you want to share a video on social media, it&amp;rsquo;s recommended to burn the subtitles directly onto the video. This way, people can understand what&amp;rsquo;s going on without having to unmute it. There are, for sure, fancy GUI programms to do so. I resort to a CLI tool to easily get the job done: &lt;a href=&#34;https://www.ffmpeg.org/&#34;&gt;FFmpeg&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;installation-for-mac&#34;&gt;Installation for Mac&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;brew install ffmpeg --enable-libass&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ffmpeg -i input.mp4 -filter_complex &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;subtitles=subs.srt:force_style=&amp;#39;FontName=Roboto,FontSize=32,OutlineColour=&amp;amp;H80000000,MarginV=60,PrimaryColour=&amp;amp;H00FFFFFF&amp;#39;&amp;#34;&lt;/span&gt;  output.mp4&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I tried to create a shadow around the subtitles but failed because it overlaps if you have more than one line.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Offene Gesetze</title>
      <link>https://johannesfilter.com/de/projects/offene-gesetze/</link>
      <pubDate>Mon, 10 Dec 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/offene-gesetze/</guid>
      <description>&lt;p&gt;Wir machten die deutschen Bundesgesetzblätter zum ersten Mal frei zugänglich.&#xA;Ich war vollständig für die Frontend-Entwicklung dieses Web-Projekts verantwortlich.&#xA;Weitere Informationen auf Englisch sind auf der &lt;a href=&#34;https://okfn.de/en/projekte/offenegesetze/&#34;&gt;Open Knowledge Foundation Germany Projektseite&lt;/a&gt; verfügbar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Offene Gesetze</title>
      <link>https://johannesfilter.com/projects/offene-gesetze/</link>
      <pubDate>Mon, 10 Dec 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/offene-gesetze/</guid>
      <description>&lt;p&gt;We made the German federal law gazettes freely accessible for the first time.&#xA;I was fully responsible for the frontend development of this Web project.&#xA;More information in English is available on the &lt;a href=&#34;https://okfn.de/en/projekte/offenegesetze/&#34;&gt;Open Knowledge Foundation Germany project page&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tips for Bash Scripts</title>
      <link>https://johannesfilter.com/tips-for-bash-scripts/</link>
      <pubDate>Wed, 05 Dec 2018 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/tips-for-bash-scripts/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://en.wikibooks.org/wiki/Bash_Shell_Scripting&#34;&gt;Bash Shell Scripting&lt;/a&gt; is powerful way of automating shell commands. But its syntax is archaic so it&amp;rsquo;s hard to remember everything. In this blog post, I try to keep track of all the stuff that I learned. It will get updated occasionally.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-the-start&#34;&gt;1. The Start&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#!/usr/bin/env bash&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;set -x&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Beginn every script with those 3 lines. The first make sure it runs on as many devices as possible (see &lt;a href=&#34;https://stackoverflow.com/a/10383546/4028896&#34;&gt;SO&lt;/a&gt;), the second lines aborts the whole script if one command fails, the third line prints the command that gets executed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TrussFormer</title>
      <link>https://johannesfilter.com/de/projects/trussformer/</link>
      <pubDate>Sun, 14 Oct 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/trussformer/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://hpi.de/baudisch/projects/trussformer-3d-printing-large-kinetic-structures.html&#34;&gt;TrussFormer&lt;/a&gt; ist ein Forschungsprojekt, das es Laien ermöglicht, große, bewegliche Strukturen mit Hilfe kleinerer Teile, z.B. Limoflaschen, und 3D-Druck zu erstellen.&lt;/p&gt;&#xA; &lt;video autoplay loop controls muted style=&#34;width: 100%&#34;&gt;&#xA;  &lt;source src=&#34;https://johannesfilter.com/project-images/trussformer-bcc.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt; &#xA;&lt;p&gt;Während meines Masterstudiums am &lt;a href=&#34;https://hpi.de/en.html&#34;&gt;Hasso-Plattner-Institut&lt;/a&gt; war ich an diesem Projekt beteiligt, das Mensch-Computer-Interaktion und Maschinenbau kombiniert. Unter der Betreuung des Doktoranden &lt;a href=&#34;https://robertkovax.com/&#34;&gt;Robert Kovacs&lt;/a&gt;, Prof. Dr. &lt;a href=&#34;https://www.patrickbaudisch.com/&#34;&gt;Patrick Baudisch&lt;/a&gt; und anderen entwickelte eine Gruppe von Masterstudenten den interaktiven Editor. Ich war vollständig verantwortlich für die Erstellung der komplexen Scharnierstrukturen in &lt;a href=&#34;http://www.openscad.org/&#34;&gt;OpenScad&lt;/a&gt; und teilweise verantwortlich für die Web-Technologie-basierte Benutzeroberfläche in der schnelllebigen Forschungsumgebung.&lt;/p&gt;</description>
    </item>
    <item>
      <title>TrussFormer</title>
      <link>https://johannesfilter.com/projects/trussformer/</link>
      <pubDate>Sun, 14 Oct 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/trussformer/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://hpi.de/baudisch/projects/trussformer-3d-printing-large-kinetic-structures.html&#34;&gt;TrussFormer&lt;/a&gt; is a research project that allows non-expert users to create large, moving structures with the help of smaller parts, i.e., soda bottles, and 3D printing.&lt;/p&gt;&#xA; &lt;video autoplay loop controls muted style=&#34;width: 100%&#34;&gt;&#xA;  &lt;source src=&#34;https://johannesfilter.com/project-images/trussformer-bcc.mp4&#34; type=&#34;video/mp4&#34;&gt;&#xA;  Your browser does not support the video tag.&#xA;&lt;/video&gt; &#xA;&lt;p&gt;During my master&amp;rsquo;s studies at the &lt;a href=&#34;https://hpi.de/en.html&#34;&gt;Hasso-Plattner-Institute&lt;/a&gt;, I was involved in this project that combines Human-Computer-Interaction and Mechanical Engineering. Under the supervision of PhD student &lt;a href=&#34;https://robertkovax.com/&#34;&gt;Robert Kovacs&lt;/a&gt;,  Prof. Dr. &lt;a href=&#34;https://www.patrickbaudisch.com/&#34;&gt;Patrick Baudisch&lt;/a&gt; and others, a group of master&amp;rsquo;s students created the interactive editor. I was fully responsible for creating the complex hinge structures in &lt;a href=&#34;http://www.openscad.org/&#34;&gt;OpenScad&lt;/a&gt; and partly responsible for the Web-technology-based UI in the fast-paced research environment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What am I?</title>
      <link>https://johannesfilter.com/de/projects/what-am-i/</link>
      <pubDate>Mon, 01 Oct 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/what-am-i/</guid>
      <description>&lt;p&gt;Eine Visualisierung für den Energie-Hackathon &lt;a href=&#34;https://energyhack.de/&#34;&gt;EnergyHack 2018&lt;/a&gt; (wo sie einen Preis gewann).&#xA;Also raten Sie mal, worum es bei der Datenvisualisierung geht?&lt;/p&gt;</description>
    </item>
    <item>
      <title>What am I?</title>
      <link>https://johannesfilter.com/projects/what-am-i/</link>
      <pubDate>Mon, 01 Oct 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/what-am-i/</guid>
      <description>&lt;p&gt;A visualization for the energy hackathon &lt;a href=&#34;https://energyhack.de/&#34;&gt;EnergyHack 2018&lt;/a&gt; (where it won a price).&#xA;So guess, what is the data visualization about?&lt;/p&gt;</description>
    </item>
    <item>
      <title>IFG-Ticker</title>
      <link>https://johannesfilter.com/de/projects/ifg-ticker/</link>
      <pubDate>Thu, 21 Jun 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/ifg-ticker/</guid>
      <description>&lt;p&gt;Der &lt;a href=&#34;https://twitter.com/ifg_ticker&#34;&gt;IFG-Ticker&lt;/a&gt; hebt automatisch Nachrichtenartikel hervor, die das deutsche Informationsfreiheitsgesetz (IFG) nutzen.&lt;/p&gt;&#xA;&lt;p&gt;In Deutschland ist die Anzahl der Journalisten, die das IFG für ihre Berichterstattung nutzen, gering.&#xA;Und selbst wenn sie das Gesetz nutzen, um Dokumente zu erhalten, erwähnen sie oft nicht, dass sie das IFG verwendet haben.&#xA;Mit diesem Twitter-Bot möchte ich Journalisten dazu ermutigen, a) das IFG zu nutzen und b) in ihren Artikeln zu schreiben, wenn sie das IFG verwendet haben.&#xA;Dadurch bekommt das IFG mehr Aufmerksamkeit.&#xA;Und als Konsequenz ist es für die Mächtigen schwerer, es abzuschaffen, und für die Zivilgesellschaft einfacher, Verbesserungen durchzusetzen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IFG-Ticker</title>
      <link>https://johannesfilter.com/projects/ifg-ticker/</link>
      <pubDate>Thu, 21 Jun 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/ifg-ticker/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://twitter.com/ifg_ticker&#34;&gt;IFG-Ticker&lt;/a&gt; automatically highlights news articles that make use of the German Freedom of Information Act (&lt;em&gt;Informationsfreiheitsgesetz&lt;/em&gt;, abbrev.: IFG).&lt;/p&gt;&#xA;&lt;p&gt;In Germany, the number of journalists who use the IFG for their reporting is low.&#xA;And even if they use the law to obtain documents, they often don&amp;rsquo;t state that they used the IFG.&#xA;With this Twitter bot, I want to encourage journalists to a) use the IFG and b) write in their article if they used the IFG.&#xA;By doing so, the IFG gets more attention.&#xA;And as a consequence, it is harder for the ones in power to abolish it and easier for the civil society to push for improvements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MDMA</title>
      <link>https://johannesfilter.com/de/projects/mdma/</link>
      <pubDate>Fri, 01 Jun 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/mdma/</guid>
      <description>&lt;p&gt;MDMA ermöglichte es auch Laien, mit kreativer Deep-Learning-Technologie zu experimentieren.&lt;/p&gt;&#xA;&lt;p&gt;2018 nahm ich am kulturellen Hackathon &lt;a href=&#34;https://web.archive.org/web/20201105151838/https://codingdavinci.de/events/ost/&#34;&gt;Coding Da Vinci Ost&lt;/a&gt; teil.&#xA;Als Nachfolger zu &lt;a href=&#34;https://johannesfilter.com/projects/deep-ochsenkopf/&#34;&gt;Deep Ochsenkopf&lt;/a&gt; verwendete MDMA &lt;a href=&#34;https://www.theverge.com/2017/3/30/15124466/ai-photo-style-transfer-deep-neural-nets-adobe&#34;&gt;Style Transfer&lt;/a&gt;, um zwei Bilder zu einem zu verschmelzen.&#xA;Inzwischen ist die Website offline.&#xA;Aber alle entstandenen Bilder sind in &lt;a href=&#34;https://johannesfilter.com/project-images/mdma-output-images.mp4&#34;&gt;diesem Video&lt;/a&gt; (~30MB) zu sehen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MDMA</title>
      <link>https://johannesfilter.com/projects/mdma/</link>
      <pubDate>Fri, 01 Jun 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/mdma/</guid>
      <description>&lt;p&gt;MDMA allowed non-expert users to play with creative deep learning technology.&lt;/p&gt;&#xA;&lt;p&gt;In 2018, I participated in the cultural hackathon &lt;a href=&#34;https://web.archive.org/web/20201105151838/https://codingdavinci.de/events/ost/&#34;&gt;Coding Da Vinci Ost&lt;/a&gt;.&#xA;As a follow up to &lt;a href=&#34;https://johannesfilter.com/projects/deep-ochsenkopf/&#34;&gt;Deep Ochsenkopf&lt;/a&gt;, MDMA used &lt;a href=&#34;https://www.theverge.com/2017/3/30/15124466/ai-photo-style-transfer-deep-neural-nets-adobe&#34;&gt;Style Transfer&lt;/a&gt; to merge two pictures into one.&#xA;In the meanwhile, the website is offline.&#xA;But all resulting images are shown in &lt;a href=&#34;https://johannesfilter.com/project-images/mdma-output-images.mp4&#34;&gt;this video&lt;/a&gt; (~30mb).&lt;/p&gt;</description>
    </item>
    <item>
      <title>youdata.eu</title>
      <link>https://johannesfilter.com/de/projects/youdata/</link>
      <pubDate>Wed, 23 May 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/youdata/</guid>
      <description>&lt;p&gt;Die Datenschutz-Grundverordnung (DSGVO) trat am 25. Mai 2018 in Kraft.&#xA;Ich bastelte dieses Tool in wenigen Stunden zusammen.&#xA;Die Grundidee: Nutzer sollten E-Mails mit ihrem E-Mail-Programm versenden. Der Nutzer musste seinen Namen eingeben und dann ein Unternehmen auswählen. Durch Klicken auf einen Button wurde eine vorgefüllte E-Mail in einem E-Mail-Programm generiert, z.B. Thunderbird.&lt;/p&gt;&#xA;&lt;p&gt;Die Idee wurde von der Initiative &lt;a href=&#34;https://www.datenanfragen.de&#34;&gt;DatenAnfragen.de&lt;/a&gt; perfektioniert. Da mein Tool nicht mehr benötigt wurde, stellte ich es ein.&lt;/p&gt;</description>
    </item>
    <item>
      <title>youdata.eu</title>
      <link>https://johannesfilter.com/projects/youdata.eu/</link>
      <pubDate>Wed, 23 May 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/youdata.eu/</guid>
      <description>&lt;p&gt;The General Data Protection Regulation (GDPR) came into force on 25th may 2018.&#xA;I hacked this tool together in a few hours.&#xA;The main idea: make users send email with their email programm. The user had to enter their name and then choose a company. By clicking on a button, a pre-filled email had been generated in an email programm, i.e., Thunderbird.&lt;/p&gt;&#xA;&lt;p&gt;The idea was perfectionated by the initiative &lt;a href=&#34;https://www.datenanfragen.de&#34;&gt;DatenAnfragen.de&lt;/a&gt;. Because there was no need for my tool anymore, I shut it down.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FragDenStaat App</title>
      <link>https://johannesfilter.com/de/projects/fragdenstaat-app/</link>
      <pubDate>Sat, 21 Apr 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/fragdenstaat-app/</guid>
      <description>&lt;p&gt;Eine mobile App für &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;FragDenStaat&lt;/a&gt;, eine Plattform zur Vereinfachung des Prozesses der Erstellung und Verwaltung von Informationsfreiheitsanfragen an deutsche öffentliche Stellen.&lt;/p&gt;&#xA;&lt;p&gt;Die App enthält grundlegende Funktionen der Website wie das Durchsuchen von Anfragen, die Suche und das Erstellen neuer Anfragen. Sie wurde mit React Native für Android und iOS entwickelt.&lt;/p&gt;&#xA;&lt;p&gt;Ich habe unregelmäßig von 2017 bis 2019 daran gearbeitet (die Hauptarbeit war bis April 2018 abgeschlossen).&#xA;Die App wird keine Updates mehr erhalten, da ich nicht mehr an App-Entwicklung interessiert bin.&#xA;Allerdings ist die App noch in den Stores verfügbar und wird weiterhin funktionieren.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FragDenStaat App</title>
      <link>https://johannesfilter.com/projects/fragdenstaat-app/</link>
      <pubDate>Sat, 21 Apr 2018 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/fragdenstaat-app/</guid>
      <description>&lt;p&gt;A mobile app for &lt;a href=&#34;https://johannesfilter.com/&#34;&gt;FragDenStaat&lt;/a&gt;, a platform to simplify the process of sending and managing Freedom of Information requests to German public bodies.&lt;/p&gt;&#xA;&lt;p&gt;The app includes basic functionalities of the website such as browsing through requests, searching, and creating new requests. It is been developed with React Native for Android and iOS.&lt;/p&gt;&#xA;&lt;p&gt;I worked on it irregularly from 2017 to 2019 (the main work was finished by April 2018).&#xA;The app won&amp;rsquo;t receive any updates because I&amp;rsquo;m not interested in app development anymore.&#xA;However, the app is still in the stores and will continue to work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to set up Docker for Deep Learning with Ubuntu 16.04  (with GPU)</title>
      <link>https://johannesfilter.com/how-to-set-ubuntu-16-04-for-deep-learning-with-gpu/</link>
      <pubDate>Sun, 15 Apr 2018 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/how-to-set-ubuntu-16-04-for-deep-learning-with-gpu/</guid>
      <description>&lt;p&gt;In this tutorial, I will guide how you set up your computer as a work station to do some serious deep learning while managing different development environments with &lt;a href=&#34;https://www.docker.com/&#34;&gt;Docker&lt;/a&gt;. First let&amp;rsquo;s get the machine to running without any docker.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Install Ubuntu 16.04 (the latest version with LTS), &lt;em&gt;&lt;a href=&#34;https://medium.com/data-science/deep-learning-gpu-installation-on-ubuntu-18-4-9b12230a1d31&#34;&gt;an updated verison for Ubuntu 18.04&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://www.linuxandubuntu.com/home/how-to-install-latest-nvidia-drivers-in-linux&#34;&gt;Install the latest (supported by your GPU) Nvidia drivers.&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=Ubuntu&amp;amp;target_version=1604&amp;amp;target_type=debnetwork&#34;&gt;Install CUDA (which allows fast computation on your GPU).&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=Ubuntu&amp;amp;target_version=1604&amp;amp;target_type=debnetwork&#34;&gt;Install the CUDA Toolkit&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installlinux-deb&#34;&gt;Install cuDNN (install from Debian files)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Now to verify that everything works as expected, follow the steps, I had to fix some bugs in the sample code as described in &lt;a href=&#34;https://devtalk.nvidia.com/default/topic/1025801/cuda-setup-and-installation/cudnn-test-did-not-pass/&#34;&gt;this blog post&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Now run it again, ‘all test passed!’ should be the last command.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Now let&amp;rsquo;s focus on Docker.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deep Ochsenkopf</title>
      <link>https://johannesfilter.com/de/projects/deep-ochsenkopf/</link>
      <pubDate>Fri, 01 Dec 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/deep-ochsenkopf/</guid>
      <description>&lt;p&gt;Für den Kultur-Hackathon &lt;a href=&#34;https://web.archive.org/web/20191205143153/https://codingdavinci.de/events/berlin/&#34;&gt;Coding da Vinci Berlin 2017&lt;/a&gt; habe ich mit &lt;a href=&#34;https://de.wikipedia.org/wiki/DeepDream&#34;&gt;DeepDream&lt;/a&gt; experimentiert. Eine Möglichkeit, Deep-Learning-Netzwerke halluzinieren zu lassen. Besuchen Sie die Website auf &lt;a href=&#34;https://vis.one/deep-ochsenkopf&#34;&gt;vis.one/deep-ochsenkopf&lt;/a&gt; und lesen Sie unseren &lt;a href=&#34;https://blog.ub.uni-leipzig.de/wenn-maschinen-von-mittelalterlichen-wasserzeichen-traeumen/&#34;&gt;Blogbeitrag&lt;/a&gt; darüber.&lt;/p&gt;&#xA;&lt;p&gt;2021 wurde Deep Ochsenkopf im bayerisch-österreichischen Kulturmagazin &lt;em&gt;kuckuck - notizen zur alltagskultur&lt;/em&gt; in der &lt;a href=&#34;https://www.kuckucknotizen.at/kuckuck/index.php/1-21-code/&#34;&gt;Ausgabe 1/21 &amp;ldquo;Code&amp;rdquo;&lt;/a&gt; vorgestellt.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-1.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-2.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-3.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deep Ochsenkopf</title>
      <link>https://johannesfilter.com/projects/deep-ochsenkopf/</link>
      <pubDate>Fri, 01 Dec 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/deep-ochsenkopf/</guid>
      <description>&lt;p&gt;For the cultural hackathon &lt;a href=&#34;https://web.archive.org/web/20191205143153/https://codingdavinci.de/events/berlin/&#34;&gt;Coding da Vinci Berlin 2017&lt;/a&gt;, I played around with &lt;a href=&#34;https://en.wikipedia.org/wiki/DeepDream&#34;&gt;DeepDream&lt;/a&gt;. A way to make deep learning networks hallucinate. Visit the website on &lt;a href=&#34;https://vis.one/deep-ochsenkopf&#34;&gt;vis.one/deep-ochsenkopf&lt;/a&gt; and read our &lt;a href=&#34;https://blog.ub.uni-leipzig.de/wenn-maschinen-von-mittelalterlichen-wasserzeichen-traeumen/&#34;&gt;blog post&lt;/a&gt; about it (in German).&lt;/p&gt;&#xA;&lt;p&gt;In 2021, the Bavarian / Austrian cultural magazin &lt;em&gt;kuckuck - notizen zur altagskultur&lt;/em&gt; featured Deep Ochsenkopf in their &lt;a href=&#34;https://www.kuckucknotizen.at/kuckuck/index.php/1-21-code/&#34;&gt;1/21 &amp;ldquo;Code&amp;rdquo; edition&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-1.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-2.jpg&#34; alt=&#34;&#34;&gt;&#xA;&lt;img src=&#34;https://johannesfilter.com/project-images/deep-ochsenkopf-kuckuck-3.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Import a Local React-Native NPM Package</title>
      <link>https://johannesfilter.com/how-to-import-a-local-react-native-npm-package/</link>
      <pubDate>Thu, 12 Oct 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/how-to-import-a-local-react-native-npm-package/</guid>
      <description>&lt;p&gt;I had to fix an unmaintained NPM package for my latest React-Native app. But I struggled to import it locally. &lt;code&gt;npm install $relative-patch&lt;/code&gt; or &lt;code&gt;npm link&lt;/code&gt; were not working (check also &lt;a href=&#34;https://github.com/facebook/react-native/issues/637&#34;&gt;this issue&lt;/a&gt; ). For me, it looks like there is no simple way to import a local package that is outside of the root of your React-Native project. So I figured out I just place my local components in a folder &lt;code&gt;local_components&lt;/code&gt; within the react-native root project. Then, I can just &lt;code&gt;import X from ‘package-X’;&lt;/code&gt; without having to touch the &lt;code&gt;package.json&lt;/code&gt; of the react-native project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sublime Text 3 Plugins for Frontend Web Development</title>
      <link>https://johannesfilter.com/sublime-text-3-plugins-for-frontend-web-development/</link>
      <pubDate>Sun, 11 Jun 2017 19:00:00 +0200</pubDate>
      <guid>https://johannesfilter.com/sublime-text-3-plugins-for-frontend-web-development/</guid>
      <description>&lt;div align=&#34;center&#34;&gt;&#xA;  &lt;img src=&#34;https://johannesfilter.com/blog-images/sublime-frontend-preview.gif&#34; alt=&#34;Previews Sublime in use with some of the used plugins.&#34;&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Sublime is great and for many still the best text editor available. But out of the box, it lacks some features that modern competitors have already built-in. Plugins help to stay ahead but it&amp;rsquo;s a hassle to keep up with all of them. In order to help you, I compiled a list of plugins I use for my daily frontend web development.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Names of Estonia</title>
      <link>https://johannesfilter.com/de/projects/names-of-estonia/</link>
      <pubDate>Thu, 01 Jun 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/names-of-estonia/</guid>
      <description>&lt;p&gt;Als ich in Estland lebte, war ich überrascht von der Vielfalt der estnischen Namen.&#xA;Deshalb erstellte ich eine Visualisierung basierend auf offiziellen Namensstatistiken.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Names of Estonia</title>
      <link>https://johannesfilter.com/projects/names-of-estonia/</link>
      <pubDate>Thu, 01 Jun 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/names-of-estonia/</guid>
      <description>&lt;p&gt;When I lived in Estonia, I was surprised by the variety of Estonian names.&#xA;So I created a visualization based on official naming statistics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Create Grouped Bar Charts with R and ggplot2</title>
      <link>https://johannesfilter.com/how-to-create-grouped-bar-charts-with-r-and-ggplot2/</link>
      <pubDate>Sat, 15 Apr 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/how-to-create-grouped-bar-charts-with-r-and-ggplot2/</guid>
      <description>&lt;p&gt;In a recent university project, I had to collect and analyze data via Google Forms. It was a survey about how people perceive frequency and effectively of help-seeking requests on Facebook (in regard to nine pre-defined topics). The questionnaire looked like this: &lt;img src=&#34;https://johannesfilter.com/blog-images/Screen-Shot-2017-04-15-at-16.48.41.png&#34; alt=&#34;&#34;&gt; Altogether, the participants (N=150) had to respond to 18 questions on an ordinal scale and in addition, age and gender were collected as independent variables. In the first step, I did not want to do any statistical analysis but only visualize the results. For every question, I wanted to take a look at the distribution of the data in regard to gender and age. This not possible with Google Forms so I had to resort to more sophisticated visualization tools: &lt;a href=&#34;https://www.r-project.org&#34;&gt;R&lt;/a&gt; and &lt;a href=&#34;http://ggplot2.tidyverse.org/index.html&#34;&gt;ggplot2&lt;/a&gt;. The following image is the end product of this tutorial. &lt;img src=&#34;https://johannesfilter.com/blog-images/EffectivityHome-and-Family.png&#34; alt=&#34;&#34;&gt; You can find the whole source code on &lt;a href=&#34;https://github.com/filter1/blog-examples/blob/master/r/help-seeking-on-facebook/plots.R&#34;&gt;Github&lt;/a&gt; and I will walk you through the essential steps of my code. In general, we want to create an R script that produced for every question two graphs. One where the responses are compares to the gender and one for the age. This allows to spot some interesting patterns in the data but also to present this images to and an audience. With this script, you can also easily re-draw all the graphs when the data gets updated. So you can write this kind of script for your survey and re-run it every time you collect more responses.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scraping With Greasemonkey</title>
      <link>https://johannesfilter.com/scraping-with-greasemonkey/</link>
      <pubDate>Sat, 11 Mar 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/scraping-with-greasemonkey/</guid>
      <description>&lt;p&gt;In a recent project, I had to scrape Web pages that were only accessible after authorization. Due to a complicated authorization process (&amp;ldquo;Estonian ID card&amp;rdquo;), I could not just fake the login with tools such as &lt;a href=&#34;http://docs.seleniumhq.org&#34;&gt;Selenium&lt;/a&gt;. So I had to somehow execute code in the browser environment. It took me some time to figure out for what exactly I was looking for. I ended up with &lt;a href=&#34;https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/&#34;&gt;Greasemonkey&lt;/a&gt; for Firefox. This allowed me to automatically execute a Javascript script after page load. The script consistent of three steps:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Backup With rsync over SSH</title>
      <link>https://johannesfilter.com/backup-with-rsync-over-ssh/</link>
      <pubDate>Tue, 07 Mar 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/backup-with-rsync-over-ssh/</guid>
      <description>&lt;p&gt;I needed a simple backup strategy for a folder on one of my servers. There is an abundance of articles how to do it with rsync, but I somehow could not find one that was simple enough for me to understand, and also secure. So here are my thoughts and links.&lt;/p&gt;&#xA;&lt;p&gt;First, I created a new non-sudo user on my server where the backup should lie. Then, I followed the steps of &lt;a href=&#34;http://troy.jdmz.net/rsync/index.html#note0&#34;&gt;this tutorial&lt;/a&gt; but run into problems when testing the restrictions of the SSH commands. In the end, it turned out that I have placed the command in front of the wrong SSH key.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Failed (111: Connection Refused) While Connecting To Upstream</title>
      <link>https://johannesfilter.com/failed-111-connection-refused-while-connecting-to-upstream/</link>
      <pubDate>Fri, 17 Feb 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/failed-111-connection-refused-while-connecting-to-upstream/</guid>
      <description>&lt;p&gt;After following a tutorial on how to get &lt;a href=&#34;https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uwsgi-and-nginx-on-ubuntu-14-04&#34;&gt;Flask running with NGINX by Digital Ocean&lt;/a&gt;, I experienced some problems. In the erorr.log, I just found&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;failed (111: Connection refused) while connecting to upstream&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;and it took me some to figure the problem out. I read everywhere on the Web that the most problems with uWSGI are related to file permissions. In my case, the .sock file had the right configuration, but I was trying to log the output of the uWSGI process to a file that didn&amp;rsquo;t exist (that part was not covered in the tutorial). After creating the file and setting the adequate permissions, everything worked smoothly. In general, the tutorials by Digital Ocean are excellent.👌&lt;/p&gt;</description>
    </item>
    <item>
      <title>Minimal Local Development Environment for Wordpress with Trellis</title>
      <link>https://johannesfilter.com/minimal-local-development-environment-for-wordpress-with-trellis/</link>
      <pubDate>Sun, 12 Feb 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/minimal-local-development-environment-for-wordpress-with-trellis/</guid>
      <description>&lt;p&gt;When you want to develop a theme or a plugin for Wordpress, it is preferred to do it locally. In order to set up a &lt;a href=&#34;https://developer.wordpress.org/themes/getting-started/setting-up-a-development-environment/&#34;&gt;local development environmen&lt;/a&gt;t, you can do it manually (Web server, database etc.) or with tools such as &lt;a href=&#34;https://www.mamp.info/en/&#34;&gt;MAMP&lt;/a&gt; (that it in my opinion cumbersome to use). I friend of mine recommended &lt;a href=&#34;https://roots.io/trellis/&#34;&gt;Trellis&lt;/a&gt; to me. It makes use of Vagrant to run on a virtual machine and it promised to &amp;ldquo;Just Work&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to Export Data from Google Ngram Viewer</title>
      <link>https://johannesfilter.com/how-to-export-data-from-google-ngram-viewer/</link>
      <pubDate>Tue, 03 Jan 2017 16:56:03 +0200</pubDate>
      <guid>https://johannesfilter.com/how-to-export-data-from-google-ngram-viewer/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://books.google.com/ngrams&#34;&gt;Google Ngram Viewers&lt;/a&gt; gives information about the frequency of words in Google Books. You can query for several words and the results is a graph. But they do not offer a way to export the data. To do so follow the instructions (Mac OS 10.12.2, Chrome 55):&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Specify the query and select a smoothing of 0. This ensures that you get the raw data that was not subjected to &lt;a href=&#34;https://en.wikipedia.org/wiki/Smoothing&#34;&gt;smoothing&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Open Developer Tools.&lt;/li&gt;&#xA;&lt;li&gt;Run the query.&lt;/li&gt;&#xA;&lt;li&gt;Select the Sources panel&lt;/li&gt;&#xA;&lt;li&gt;Select &amp;ldquo;search all files&amp;rdquo; (click on the three dots to see a menu where you can select this)&lt;/li&gt;&#xA;&lt;li&gt;Search for &amp;ldquo;var data&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Look in the resulting list of domains for something like &amp;ldquo;books.google.com/ngrams/graph?content=long&amp;amp;year_start=1800&amp;hellip;..&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;Copy and clean the data&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
    </item>
    <item>
      <title>Völkisch</title>
      <link>https://johannesfilter.com/de/projects/volkisch/</link>
      <pubDate>Sun, 01 Jan 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/volkisch/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://martinhaase.de&#34;&gt;Martin Haase&lt;/a&gt; hielt einen &lt;a href=&#34;https://media.ccc.de/v/33c3-8037-die_sprache_der_populisten&#34;&gt;Vortrag auf dem 33C3&lt;/a&gt;, in dem er die Ursprünge des Wortes &amp;ldquo;völkisch&amp;rdquo; diskutierte. Ich verwandelte seine Idee in ein statisches, &lt;em&gt;teilbares&lt;/em&gt; Bild. Es war ein Erfolg &lt;a href=&#34;https://www.reddit.com/r/de/comments/5lrhii/es_gibt_einen_klaren_bezug_von_v%C3%B6lkisch_auf_den/&#34;&gt;auf dem größten deutschen Subreddit&lt;/a&gt;.&#xA;Ich beschreibe in einem &lt;a href=&#34;https://johannesfilter.com/how-to-export-data-from-google-ngram-viewer/&#34;&gt;Blog-Post&lt;/a&gt;, wie ich die Daten aus dem Google Ngram Viewer extrahiert habe.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/volkisch-full.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Völkisch</title>
      <link>https://johannesfilter.com/projects/v%C3%B6lkisch/</link>
      <pubDate>Sun, 01 Jan 2017 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/v%C3%B6lkisch/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://martinhaase.de&#34;&gt;Martin Haase&lt;/a&gt; gave a &lt;a href=&#34;https://media.ccc.de/v/33c3-8037-die_sprache_der_populisten&#34;&gt;talk on the 33C3&lt;/a&gt; where he was discussing the origins of the word &amp;ldquo;völkisch&amp;rdquo;. I transformed his idea into a static &lt;em&gt;shareable&lt;/em&gt; image. It was a success &lt;a href=&#34;https://www.reddit.com/r/de/comments/5lrhii/es_gibt_einen_klaren_bezug_von_v%C3%B6lkisch_auf_den/&#34;&gt;on the biggest German subreddit&lt;/a&gt;.&#xA;I describe in a &lt;a href=&#34;https://johannesfilter.com/how-to-export-data-from-google-ngram-viewer/&#34;&gt;blog post&lt;/a&gt; how I extracted the data from Google Ngram Viewer.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/volkisch-full.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Estonian Dictionary</title>
      <link>https://johannesfilter.com/de/projects/estonian-dictionary/</link>
      <pubDate>Mon, 01 Aug 2016 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/estonian-dictionary/</guid>
      <description>&lt;p&gt;Während meines Masterstudiums lebte ich im Rahmen eines Austauschprogramms zehn Monate in Estland und wagte es, Estnisch zu lernen.&#xA;Es ist eine schwierige Sprache und da sie nur von etwa einer Million Menschen gesprochen wird, sind die Online-Lernressourcen begrenzt.&lt;/p&gt;&#xA;&lt;p&gt;Ich konnte kein Online-Wörterbuch finden, das mir alle drei wichtigen Fälle bei der Übersetzung von Wörtern aus dem Englischen ins Estnische anzeigte.&#xA;Deshalb baute ich selbst ein Wörterbuch, indem ich zwei andere Online-Sprachressourcen kombinierte.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Estonian Dictionary</title>
      <link>https://johannesfilter.com/projects/estonian-dictionary/</link>
      <pubDate>Mon, 01 Aug 2016 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/estonian-dictionary/</guid>
      <description>&lt;p&gt;During my master studies, I lived for ten months in Estonia as part of an exchange program and I dared to learn Estonian.&#xA;It&amp;rsquo;s a difficult language and because it is only spoken by about one million people, the online learning resources are limited.&lt;/p&gt;&#xA;&lt;p&gt;I could not find any online dictionary that gave me all the three important cases when translating words from English to Estonian.&#xA;So I build a dictionary myself by combining two other online language resources.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Restructuring MV</title>
      <link>https://johannesfilter.com/de/projects/restructuring-mv/</link>
      <pubDate>Sat, 01 Aug 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/restructuring-mv/</guid>
      <description>&lt;p&gt;Einige Visualisierungen über die Umstrukturierung von Verwaltungsgebieten im deutschen Bundesland &lt;em&gt;Mecklenburg-Vorpommern&lt;/em&gt; (MV).&lt;/p&gt;&#xA;&lt;p&gt;Die Karten zeigen die Auswirkungen auf die Fahrzeit für Bürger zum nächsten Gericht vor und nach der Veränderung.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Restructuring MV</title>
      <link>https://johannesfilter.com/projects/restructuring-mv/</link>
      <pubDate>Sat, 01 Aug 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/restructuring-mv/</guid>
      <description>&lt;p&gt;A couple of visualisations about the restructuring of administrative areas in the German state &lt;em&gt;Mecklenburg Vorpommern&lt;/em&gt; (MV).&lt;/p&gt;&#xA;&lt;p&gt;The maps display the affects on the driving time for the citizen to the nearest court before and after the change.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rechte Gewalt</title>
      <link>https://johannesfilter.com/de/projects/rechte-gewalt/</link>
      <pubDate>Sun, 01 Feb 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/rechte-gewalt/</guid>
      <description>&lt;p&gt;Für mehrere Regionen in Deutschland gibt es NGOs, die Daten über rechte Angriffe sammeln und auf ihren Websites präsentieren.&#xA;Leider ist ihre Darstellung nicht maschinenlesbar.&#xA;Deshalb scrapte ich zuerst die Daten von ihren Websites und erstellte dann eine alternative Darstellung ihrer Daten.&#xA;Ich erstellte eine Karte, weil alle Vorfälle geografische Referenzen haben.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rechte Gewalt</title>
      <link>https://johannesfilter.com/projects/rechte-gewalt/</link>
      <pubDate>Sun, 01 Feb 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/rechte-gewalt/</guid>
      <description>&lt;p&gt;For several regions in Germany, there exists NGOs that collect data about right-wing attacks and present on their websites.&#xA;Unfortunately, their presentation is not machine-readable.&#xA;So I first scraped the data off their websites and then created alternative representation of their data.&#xA;I created a map because all incidents have geographic references.&lt;/p&gt;</description>
    </item>
    <item>
      <title>MagdeGo</title>
      <link>https://johannesfilter.com/de/projects/magdego/</link>
      <pubDate>Thu, 01 Jan 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/de/projects/magdego/</guid>
      <description>&lt;p&gt;Eine App zur einfacheren Navigation im öffentlichen Nahverkehr in Magdeburg (mittelgroße Stadt in Ostdeutschland).&lt;/p&gt;&#xA;&lt;p&gt;Ich entwickelte diese App zusammen mit meinem ehemaligen Universitätskommilitonen Rosario Raulin. Ich war für die Web-App (Website) verantwortlich, während er an der iOS-Version arbeitete. Die ganze Geschichte kann &lt;a href=&#34;http://codefor.de/en/stadtgeschichten/3magdego/&#34;&gt;auf der Code For Germany Website&lt;/a&gt; nachgelesen werden.&lt;/p&gt;&#xA;&lt;p&gt;Aus rechtlichen Gründen mussten wir die Website leider offline nehmen.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/magdego-screenshot.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>MagdeGo</title>
      <link>https://johannesfilter.com/projects/magdego/</link>
      <pubDate>Thu, 01 Jan 2015 00:05:32 +0200</pubDate>
      <guid>https://johannesfilter.com/projects/magdego/</guid>
      <description>&lt;p&gt;An app to navigate the public transport in Magdeburg (medium-sized city in East Germany) more easily.&lt;/p&gt;&#xA;&lt;p&gt;I developed this app together with my former university classmate Rosario Raulin. I was responsible for the web app (website) whereas he worked on the iOS version. Read the full story &lt;a href=&#34;http://codefor.de/en/stadtgeschichten/3magdego/&#34;&gt;on the Code For Germany site&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Due to legal reasons, we unfortunately had to take the website offline.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://johannesfilter.com/project-images/magdego-screenshot.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://johannesfilter.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/about/</guid>
      <description>&lt;p&gt;I build &lt;a href=&#34;https://johannesfilter.com/fullstack/&#34;&gt;&lt;b&gt;data-driven web applications&lt;/b&gt;&lt;/a&gt; with Next.js, React, and Django — and I help nonprofits and NGOs adopt and extend &lt;a href=&#34;https://johannesfilter.com/civicrm/&#34;&gt;CiviCRM&lt;/a&gt;, an open-source CRM that fits their budget and constraints.&lt;/p&gt;&#xA;&lt;p&gt;Most of my work is with civic-tech organizations, journalists, and researchers — people who need reliable software without the glossy agency price tag. If CiviCRM or a custom build is the wrong fit, I&amp;rsquo;ll tell you. Bad-fit projects help no one.&lt;/p&gt;&#xA;&lt;p&gt;I hold a master&amp;rsquo;s in computer science from the &lt;a href=&#34;https://hpi.de/en.html&#34;&gt;Hasso Plattner Institute&lt;/a&gt;, with a focus on data visualization, machine learning, and NLP. I contribute to open source on &lt;a href=&#34;https://github.com/jfilter&#34;&gt;GitHub&lt;/a&gt; and write on &lt;a href=&#34;https://johannesfilter.com/blog/&#34;&gt;my blog&lt;/a&gt; when I learn something worth sharing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CiviCRM for nonprofits</title>
      <link>https://johannesfilter.com/civicrm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/civicrm/</guid>
      <description>&lt;p&gt;I help nonprofits and NGOs set up, extend, stabilize, and maintain &lt;a href=&#34;https://civicrm.org&#34;&gt;CiviCRM&lt;/a&gt; - the open-source CRM for contacts, memberships, donations, newsletters, and event workflows. I&amp;rsquo;ve worked with CiviCRM on organisations ranging from tiny volunteer-run groups to national advocacy networks.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ll tell you honestly if CiviCRM isn&amp;rsquo;t the right fit. Bad-fit projects help no one.&lt;/p&gt;&#xA;&lt;p&gt;If what you actually need is a custom app, public-facing platform, or data product rather than a CRM, see my &lt;a href=&#34;https://johannesfilter.com/fullstack/&#34;&gt;full-stack development offering&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>CiviCRM für Nonprofits</title>
      <link>https://johannesfilter.com/de/civicrm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/civicrm/</guid>
      <description>&lt;p&gt;Ich unterstütze Nonprofits und NGOs dabei, &lt;a href=&#34;https://civicrm.org&#34;&gt;CiviCRM&lt;/a&gt; einzurichten, zu erweitern, zu stabilisieren und dauerhaft gut nutzbar zu halten - das Open-Source-CRM für Kontakte, Mitgliedschaften, Spenden, Newsletter und Veranstaltungsprozesse. Ich habe mit CiviCRM für Organisationen gearbeitet, von kleinen ehrenamtlichen Teams bis zu landesweiten Advocacy-Netzwerken.&lt;/p&gt;&#xA;&lt;p&gt;Wenn CiviCRM nicht zu Ihnen passt, sage ich das ehrlich. Schlecht passende Projekte helfen niemandem.&lt;/p&gt;&#xA;&lt;p&gt;Wenn Sie statt eines CRM eher eine individuelle Anwendung, eine öffentliche Plattform oder ein Datentool brauchen, ist wahrscheinlich mein &lt;a href=&#34;https://johannesfilter.com/de/fullstack/&#34;&gt;Full-Stack-Angebot&lt;/a&gt; der bessere Einstieg.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://johannesfilter.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/contact/</guid>
      <description>&lt;div class=&#34;contact-book-cta&#34;&gt;&#xA;&lt;a href=&#34;https://cal.com/jfilter/meeting?user=jfilter&amp;amp;duration=20&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; class=&#34;btn btn--blue&#34;&gt;Book a 20-min call →&lt;/a&gt;&#xA;&#xA;&lt;span&gt;Prefer async? Use any channel below.&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2&gt;Get in Touch&lt;/h2&gt;&#xA;&lt;div class=&#34;contact-table&#34;&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;rect x=&#34;2&#34; y=&#34;4&#34; width=&#34;20&#34; height=&#34;16&#34; rx=&#34;2&#34;/&gt;&lt;path d=&#34;m22 7-10 5L2 7&#34;/&gt;&lt;/svg&gt;Email:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 2C6.48 2 2 6.48 2 12c0 1.54.36 2.98.97 4.29L1 23l6.71-1.97c1.31.61 2.75.97 4.29.97 5.52 0 10-4.48 10-10S17.52 2 12 2z&#34;/&gt;&lt;/svg&gt;Signal:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://signal.me/#eu/hprJzZxsilCtHDq-gJKwipQ6xuU-oWD2FuTGv-OWKcNk-SKErhdPqLrXQ6wMD0Tn&#34;&gt;filter.10&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z&#34;/&gt;&lt;/svg&gt;Matrix:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://matrix.to/#/@jfilter:matrix.org&#34;&gt;@jfilter:matrix.org&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z&#34;/&gt;&lt;/svg&gt;PGP Key:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://johannesfilter.com/filter_key_2024.asc&#34;&gt;Download&lt;/a&gt; &lt;small&gt;(8E9C BA6C 8630 8C1E 992B CB43 5C43 9C79 C693 D9EC)&lt;/small&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2&gt;Find Me Online&lt;/h2&gt;&#xA;&lt;div class=&#34;contact-table&#34;&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z&#34;/&gt;&lt;/svg&gt;Mastodon:&lt;/div&gt;&lt;div&gt;&lt;a rel=&#34;me noopener noreferrer&#34; target=&#34;_blank&#34; href=&#34;https://chaos.social/@filter&#34;&gt;@filter@chaos.social&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z&#34;/&gt;&lt;/svg&gt;Bluesky:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://bsky.app/profile/filter.bsky.social&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;@filter.bsky.social&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z&#34;/&gt;&lt;/svg&gt;LinkedIn:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://www.linkedin.com/in/jfilter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Johannes Filter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z&#34;/&gt;&lt;/svg&gt;GitHub:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://github.com/jfilter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;jfilter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;!-- NEWSLETTER_PLACEHOLDER --&gt;</description>
    </item>
    <item>
      <title>Datenschutzerklärung</title>
      <link>https://johannesfilter.com/de/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/privacy/</guid>
      <description>&lt;p&gt;Diese Erklärung informiert Sie darüber, wie wir mit Ihren persönlichen Daten umgehen, wenn Sie unsere Website und Dienste nutzen. Transparenz beim Datenschutz ist uns wichtig. Unsere Praktiken entsprechen der Datenschutz-Grundverordnung (DSGVO), und wir erheben nur Daten, die für unsere Dienste und zur Verbesserung Ihrer Nutzererfahrung notwendig sind.&lt;/p&gt;&#xA;&lt;h2 id=&#34;verantwortlicher&#34;&gt;Verantwortlicher&lt;/h2&gt;&#xA;&lt;p&gt;Johannes Filter&lt;/p&gt;&#xA;&lt;p&gt;E-Mail: &lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;br&gt;&#xA;Telephone: +4930 - 62938765&lt;br&gt;&#xA;Telefax: +4930 - 22185732&lt;/p&gt;&#xA;&lt;p&gt;Johannes Filter&lt;br&gt;&#xA;c/o Cultivation Space (Aufgang 4)&lt;br&gt;&#xA;ExRotaprint&lt;br&gt;&#xA;Gottschedstraße 4&lt;br&gt;&#xA;13357 Berlin&lt;/p&gt;</description>
    </item>
    <item>
      <title>Full-stack development</title>
      <link>https://johannesfilter.com/fullstack/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/fullstack/</guid>
      <description>&lt;p&gt;I build custom web applications end-to-end - frontend, backend, data layer. Most engagements are research-heavy and data-driven: monitoring tools, searchable archives, internal platforms, and interactive visualisations that turn messy information into something people can use.&lt;/p&gt;&#xA;&lt;p&gt;My clients are civic-tech organisations, journalists, researchers, and small businesses. They need software that works, not agency theatre.&lt;/p&gt;&#xA;&lt;p&gt;If you are a nonprofit and mainly need contact management, memberships, donations, or newsletter flows rather than a custom app, see my &lt;a href=&#34;https://johannesfilter.com/civicrm/&#34;&gt;CiviCRM offering&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Full-Stack-Entwicklung</title>
      <link>https://johannesfilter.com/de/fullstack/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/fullstack/</guid>
      <description>&lt;p&gt;Ich entwickle Webanwendungen von vorne bis hinten - Frontend, Backend, Datenebene. Die meisten Projekte sind recherchelastig und datengetrieben: Monitoring-Tools, durchsuchbare Archive, interne Plattformen und interaktive Visualisierungen, die aus unübersichtlichen Informationen etwas Nutzbares machen.&lt;/p&gt;&#xA;&lt;p&gt;Meine Auftraggeber:innen sind Civic-Tech-Organisationen, Journalist:innen, Forschende und kleine Unternehmen. Sie brauchen Software, die funktioniert — kein Agentur-Theater.&lt;/p&gt;&#xA;&lt;p&gt;Wenn Sie als Nonprofit vor allem Kontaktverwaltung, Mitgliedschaften, Spenden oder Newsletter-Prozesse brauchen statt einer individuellen Anwendung, ist wahrscheinlich mein &lt;a href=&#34;https://johannesfilter.com/de/civicrm/&#34;&gt;CiviCRM-Angebot&lt;/a&gt; der bessere Einstieg.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Impressum</title>
      <link>https://johannesfilter.com/de/impressum/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/impressum/</guid>
      <description>&lt;p&gt;Johannes Filter&lt;/p&gt;&#xA;&lt;p&gt;E-Mail: &lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;br&gt;&#xA;Telefon: +4930 - 62938765&lt;br&gt;&#xA;Telefax: +4930 - 22185732&lt;/p&gt;&#xA;&lt;p&gt;Johannes Filter&lt;br&gt;&#xA;c/o Cultivation Space (Aufgang 4)&lt;br&gt;&#xA;Gottschedstraße 4&lt;br&gt;&#xA;13357 Berlin&lt;br&gt;&#xA;Deutschland&lt;/p&gt;</description>
    </item>
    <item>
      <title>Impressum</title>
      <link>https://johannesfilter.com/impressum/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/impressum/</guid>
      <description>&lt;p&gt;Johannes Filter&lt;/p&gt;&#xA;&lt;p&gt;Email: &lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;br&gt;&#xA;Telephone: +4930 - 62938765&lt;br&gt;&#xA;Telefax: +4930 - 22185732&lt;/p&gt;&#xA;&lt;p&gt;Johannes Filter&lt;br&gt;&#xA;c/o Cultivation Space (Aufgang 4)&lt;br&gt;&#xA;Gottschedstraße 4&lt;br&gt;&#xA;13357 Berlin&lt;br&gt;&#xA;Germany&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kontakt</title>
      <link>https://johannesfilter.com/de/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/contact/</guid>
      <description>&lt;div class=&#34;contact-book-cta&#34;&gt;&#xA;&lt;a href=&#34;https://cal.com/jfilter/meeting?user=jfilter&amp;amp;duration=20&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34; class=&#34;btn btn--blue&#34;&gt;Book a 20-min call →&lt;/a&gt;&#xA;&#xA;&lt;span&gt;Prefer async? Use any channel below.&lt;/span&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2&gt;Kontakt aufnehmen&lt;/h2&gt;&#xA;&lt;div class=&#34;contact-table&#34;&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;rect x=&#34;2&#34; y=&#34;4&#34; width=&#34;20&#34; height=&#34;16&#34; rx=&#34;2&#34;/&gt;&lt;path d=&#34;m22 7-10 5L2 7&#34;/&gt;&lt;/svg&gt;E-Mail:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 2C6.48 2 2 6.48 2 12c0 1.54.36 2.98.97 4.29L1 23l6.71-1.97c1.31.61 2.75.97 4.29.97 5.52 0 10-4.48 10-10S17.52 2 12 2z&#34;/&gt;&lt;/svg&gt;Signal:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://signal.me/#eu/hprJzZxsilCtHDq-gJKwipQ6xuU-oWD2FuTGv-OWKcNk-SKErhdPqLrXQ6wMD0Tn&#34;&gt;filter.10&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.481.314.448.208.785.582 1.02 1.108.254-.374.6-.706 1.034-.992.434-.287.95-.43 1.546-.43.453 0 .872.056 1.26.167.388.11.716.286.993.53.276.245.489.559.646.951.152.392.23.863.23 1.417v5.728h-2.349V11.52c0-.286-.01-.559-.032-.812a1.755 1.755 0 0 0-.18-.66 1.106 1.106 0 0 0-.438-.448c-.194-.11-.457-.166-.785-.166-.332 0-.6.064-.803.189a1.38 1.38 0 0 0-.48.499 1.946 1.946 0 0 0-.231.696 5.56 5.56 0 0 0-.06.785v4.768h-2.35v-4.8c0-.254-.004-.503-.018-.752a2.074 2.074 0 0 0-.143-.688 1.052 1.052 0 0 0-.415-.503c-.194-.125-.476-.19-.854-.19-.111 0-.259.024-.439.074-.18.051-.36.143-.53.282-.171.138-.319.337-.439.595-.12.259-.18.6-.18 1.02v4.966H5.46V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z&#34;/&gt;&lt;/svg&gt;Matrix:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://matrix.to/#/@jfilter:matrix.org&#34;&gt;@jfilter:matrix.org&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z&#34;/&gt;&lt;/svg&gt;PGP-Schlüssel:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://johannesfilter.com/filter_key_2024.asc&#34;&gt;Herunterladen&lt;/a&gt; &lt;small&gt;(8E9C BA6C 8630 8C1E 992B CB43 5C43 9C79 C693 D9EC)&lt;/small&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2&gt;Online finden&lt;/h2&gt;&#xA;&lt;div class=&#34;contact-table&#34;&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z&#34;/&gt;&lt;/svg&gt;Mastodon:&lt;/div&gt;&lt;div&gt;&lt;a rel=&#34;me noopener noreferrer&#34; target=&#34;_blank&#34; href=&#34;https://chaos.social/@filter&#34;&gt;@filter@chaos.social&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z&#34;/&gt;&lt;/svg&gt;Bluesky:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://bsky.app/profile/filter.bsky.social&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;@filter.bsky.social&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z&#34;/&gt;&lt;/svg&gt;LinkedIn:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://www.linkedin.com/in/jfilter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Johannes Filter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;div&gt;&lt;div&gt;&lt;svg width=&#34;16&#34; height=&#34;16&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;currentColor&#34; style=&#34;vertical-align: middle; margin-right: 8px;&#34;&gt;&lt;path d=&#34;M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z&#34;/&gt;&lt;/svg&gt;GitHub:&lt;/div&gt;&lt;div&gt;&lt;a href=&#34;https://github.com/jfilter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;jfilter&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;!-- NEWSLETTER_PLACEHOLDER --&gt;</description>
    </item>
    <item>
      <title>Press</title>
      <link>https://johannesfilter.com/press/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/press/</guid>
      <description></description>
    </item>
    <item>
      <title>Presse</title>
      <link>https://johannesfilter.com/de/press/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/press/</guid>
      <description></description>
    </item>
    <item>
      <title>Privacy Policy</title>
      <link>https://johannesfilter.com/privacy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/privacy/</guid>
      <description>&lt;p&gt;This document explains how we handle personal information when you use our website and services. We&amp;rsquo;re committed to transparency about data collection and usage. Our practices comply with the General Data Protection Regulation (GDPR), and we only collect what&amp;rsquo;s necessary to provide our services and improve your experience.&lt;/p&gt;&#xA;&lt;h2 id=&#34;responsible-person&#34;&gt;Responsible Person&lt;/h2&gt;&#xA;&lt;p&gt;Johannes Filter&lt;/p&gt;&#xA;&lt;p&gt;Email: &lt;a href=&#34;mailto:hi@johannesfilter.com&#34;&gt;hi@johannesfilter.com&lt;/a&gt;&lt;br&gt;&#xA;Telephone: +4930 - 62938765&lt;br&gt;&#xA;Telefax: +4930 - 22185732&lt;/p&gt;&#xA;&lt;p&gt;Johannes Filter&lt;br&gt;&#xA;c/o Cultivation Space (Aufgang 4)&lt;br&gt;&#xA;ExRotaprint&lt;br&gt;&#xA;Gottschedstraße 4&lt;br&gt;&#xA;13357 Berlin&lt;/p&gt;</description>
    </item>
    <item>
      <title>Talks</title>
      <link>https://johannesfilter.com/talks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/talks/</guid>
      <description></description>
    </item>
    <item>
      <title>Über mich</title>
      <link>https://johannesfilter.com/de/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/about/</guid>
      <description>&lt;p&gt;Ich baue &lt;a href=&#34;https://johannesfilter.com/de/fullstack/&#34;&gt;&lt;b&gt;datengetriebene Webanwendungen&lt;/b&gt;&lt;/a&gt; mit Next.js, React und Django — und helfe Nonprofits und NGOs bei der Einrichtung und Anpassung von &lt;a href=&#34;https://johannesfilter.com/de/civicrm/&#34;&gt;CiviCRM&lt;/a&gt;, einem Open-Source-CRM, das zu ihrem Budget und ihren Anforderungen passt.&lt;/p&gt;&#xA;&lt;p&gt;Die meisten meiner Projekte mache ich mit Civic-Tech-Organisationen, Journalist:innen und Forschenden — Menschen, die zuverlässige Software brauchen, aber keine Agentur-Preise zahlen können. Wenn CiviCRM oder eine Eigenentwicklung nicht zu Ihnen passt, sage ich das. Schlecht passende Projekte helfen niemandem.&lt;/p&gt;&#xA;&lt;p&gt;Ich habe einen Master in Informatik vom &lt;a href=&#34;https://hpi.de/&#34;&gt;Hasso-Plattner-Institut&lt;/a&gt;, mit Schwerpunkt auf Datenvisualisierung, maschinellem Lernen und NLP. Ich trage zu Open-Source-Software auf &lt;a href=&#34;https://github.com/jfilter&#34;&gt;GitHub&lt;/a&gt; bei und schreibe in &lt;a href=&#34;https://johannesfilter.com/de/blog/&#34;&gt;meinem Blog&lt;/a&gt;, wenn ich etwas lerne, das sich lohnt zu teilen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Vorträge</title>
      <link>https://johannesfilter.com/de/talks/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://johannesfilter.com/de/talks/</guid>
      <description></description>
    </item>
  </channel>
</rss>
