Author Archive

Visualizing Graphs mit Graphviz (and LaTeX) – Part I

This entry is part 1 of 2 in the series GraphViz

This is the first article in a series to describe Graphviz, an amazing tool to generate org charts and relationship diagrams, and ways to work with it from LaTeX. (I need to compile a huge set of slides so my intention is to save some time by automating the process)

I knew of its existence for quite a while but never managed to take anough time to get a closer look. Driven by my job however (the setup of a Private Equity fund of funds involves different legal entities) I decided to give it a try.

Graphviz was developed at the famous AT&T labs and released under Eclipse Public License. It consists of a set of binary tools that are able tranform Graphviz’s description language DOT into graphics.

Until further notice I will use dot, one of the binaries, to transform the examples into PNG. There are other converters like neato, which differ from dot in the way they calculate the distances between the nodes, etc.

Working with Graphviz involves defining nodes and edges between them. See the following, non-minimal example. I use a digraph (other types like e.g. graph are available but I didn’t look up the differences so far), define two nodes a and b and and edge between them.

digraph G{
a [label="Node A"];
b [label="Node B"];
a->b[label=" An edge"];
}

Using the command dot -Tpng nameoffile.gv I get the following PNG:

basic.gv

The above example is a bit more sophisticated than the minimal working example:

digraph G{
hello->world;
}

minimal.gv

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Importing events into Google Calendar

Google Calendar is able to import events from CSV files. The format however is a bit different from the locale used here in Germany, so I prepared a Excel sheet. It allows you to enter the dates and then uses Excel’s TEXT() function to build the correct format.

gcal

GCal_20130601

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

TeXing with Gummi

There’s a new player in the game of LaTeX editors: Gummi. It was recommeded to me yesterday during the Berlin Linuxtag. The most striking feature is the auto-compile feature. No need to push a button, if it does not detect the user to enter text for more than 2 seconds of, Gummi tries to compile the document in the background. I’ll do some further testing, but so far I like what I saw.

Installation under Xubuntu:

  1. Open a terminal and enter: sudo add-apt-repository ppa:gummi/gummi, see https://launchpad.net/~texworks/+archive/ppa for details.
  2. Run the following command:
    sudo apt-get --no-install-recommends install gummi
    

Some links:

Image (from the Gummi website)

gummi060-1

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Installing TeXworks from PPA under (X)ubuntu

Due to the dependenciesmy Xubuntu wanted to install lots of packages from the Ubuntu TeX Live repository. I didn’t check explicitly but based on earlier experiences it’s safe to assume that it would be outdated. Besides that I had already installed TeX Live 2012. The solution was to check which packages Xubuntu wanted to install and to kick out everything not related with TeXworks.

The following worked smoothl (updated 2016-05-29)y:

  1. Open a terminal and enter: sudo add-apt-repository ppa:texworks/ppa, see https://launchpad.net/~texworks/+archive/ppa for details.
  2. Run the following command:
    sudo apt-get --no-install-recommends install fonts-lato fonts-lmodern javascript-common libjs-jquery libmng2 libmysqlclient20 libpoppler-qt4-4 libpotrace0 libptexenc1 libqt4-dbus libqt4-declarative libqt4-network libqt4-script libqt4-scripttools libqt4-sql libqt4-sql-mysql libqt4-xml libqt4-xmlpatterns libqtcore4 libqtdbus4 libqtgui4 libruby2.3 libsynctex1 libtexlua52 libtexluajit2 libzzip-0-13 lmodern mysql-common qdbus qt-at-spi qtchooser qtcore4-l10n rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3 rubygems-integration
    
  3. As of April 2018 the following works nicely:

    sudo apt-get --no-install-recommends install texworks fonts-lato javascript-common libjs-jquery libpoppler-qt5-1 libptexenc1 libqt5concurrent5 libqt5script5 libqt5scripttools5 libqt5xml5 libruby2.3 libsynctex1 libtexlua52 libtexluajit2 libzzip-0-13 rake ruby ruby-did-you-mean ruby-minitest ruby-net-telnet ruby-power-assert ruby-test-unit ruby2.3 rubygems-integration texworks-help-en texworks-scripting-lua texworks-scripting-python
    

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Checking links with Python in TeX documents

As every year the German documentation for the TeX Live distribution is on my agenda. To check the more than 100 weblinks in the document I wrote a small Python script which does the job fairly well.

import re
import urllib2
 
filehandle = open("texlive-de-new.tex")
text = filehandle.read()
filehandle.close()
 
# regexp from http://www.noah.org/wiki/RegEx_Python
m = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text)
 
i = 0
for item in m:
        i=i+1
        print i, '\t', item, '\t',
        try:
            response = urllib2.urlopen(item)
        except urllib2.HTTPError, e:
                    print e.code
        except urllib2.URLError, u:
                    print u.args
        print "\n"

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Dateien verschieben mit Powershell

Ausgangssituation: Diverse Unterverzeichnisse mit Dateien, die alle ins darüberliegende Verzeichnis verschoben werden sollen. Mit dem Windows Explorer dauert es Stunden, selbst mit Total Commander dauert es zu lange. Gut, dass ein paar Zeilen Powershell das erledigen:

$path =  "D:\files\"
cd $path
 
$files = gci | ? {$_.PSisContainer -eq $true} 
 
foreach ($i in $files){
	Move-Item $i\*.* $path
}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Erste Schritte mit der Roland iModela

Vor kurzem hat die Dingfabrik in Köln eine Roland iModela vom Hersteller zur Verfügung gestellt bekommen. Da mich CAD/CAM generell interessiert (weil ich mit Säge und Feile eher untalentiert bin), habe ich das Ding gleich mal an meinen Rechner angestöpselt und im Selbstversuch einen Stempel gefräst.

Der Anschluss an den Rechner war nicht so einfach, denn die iModela musste erst einmal gefunden werden. Ich hatte ja ein Gerät von der Größe eines Röhrenfernsehers erwartet, jedoch entsprechen die Maße der iModela eher denen eines Toasters, die bearbeitbare Fläche beträgt 86mm x 55mm.

Roland iModela

Das Gerät eignet sich auch nicht unbedingt dazu, aus Hartmetallen Formen zu fräsen, seine Spezialität sind eher weiche Materialien wie Stempelgummi und weiche Hölzer wie Balsaholz. Der eingesetzte Motor erinnert mich sehr an Motoren von Quadcoptern und hat mit 50 Stunden eine vergleichsweise begrenzte Lebensdauer. Roland liefert aber einen Ersatzmotor mit, über den Handel lassen sich vielleicht auch hochwertigere Motoren erwerben.

Das nächste Bild zeigt die Maschine mal aufgeklappt, das Aufklappen selbst ist innerhalb von Sekunden erledigt. Die linke und rechte Seite lässt sich einfach umklappen, danach lassen sich die hellgrünen Klammern lösen.

IMG_6368

Die Software-Installation war recht unspektakulär: Nach der Treiber-Installation empfiehlt es sich, zumindest iModela Creator und iModela Controller zu installieren. Ersteres ist ein einfaches grafisches CAD Programm, letzteres steuert die Maschine selbst an. Für Vorschau-Ansichten eines Datensatzes liefert Roland noch Virtual Modela mit (letztes Update im Jahr 2004, Look & Feel eher altbacken), in meinem ersten Versuchen konnte ich aber eher drauf verzichten.

In meinem Versuch habe ich einen Buchstaben in ein Stück Stempelgummi gefräst. Ein einfaches ‚+‘ Zeichen von knapp 7×7 Millimetern brauchte ungefähr fünf Minuten, durch geeignete Parameterwahl bei Vortrieb und Drehgeschwindigkeit des Fräsers lassen sich hier aber sicher noch Verbesserungen vornehmen.

IMG_6389

IMG_6399

Fazit meiner ersten Schritte: Der Einstieg in die Arbeit mit der iModela fällt wirklich leicht. Mit der passabel gestalteten Software kann man innerhalb von wenigen Minuten erste Erfolge feiern. In Sachen Arbeitsfläche und Materialauswahl erfüllt die iModela sicherlich keine professionellen Anforderungen, im Hobby-Bereich ist sie aber durchaus einsetzbar. Ich denke, in den nächsten Wochen und Monaten werde ich noch einige Stempel damit fräsen. 🙂

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Vorlage für Jour Fixe Protokolle / Template for Jour Fixe protocols

Ausgehend von Vorlage für Gesprächsprotokolle hat mir Stefan Wollny, ein Leser des Blogs, eine schicke Vorlage für Jour Fixe Protokolle geschickt.

Hier die Vorlage_Jour-Fix-Protokoll PDF-Datei, hier der Quellcode:

%% basierend auf http://uweziegenhagen.de/?p=1109
%% gefunden am 15.03.2013
%% 
%%
\PassOptionsToPackage{table}{xcolor}	% Notwendig, damit die Zeilen-Colorierung funktioniert
\documentclass[]{scrartcl}
\usepackage{palatino,url}
\usepackage[T1]{fontenc}		% Vor {inputenc}! http://uweziegenhagen.de/?p=1644
\usepackage[latin1]{inputenc}		% in Uwes Vorgabe noch anders herum
\usepackage[german,ngerman]{babel}	% Alte Hunde lernen keine neuen Tricks
\usepackage[a4paper,top=30mm,left=25mm,right=20mm,bottom=23mm,headsep=12mm,footskip=12mm]{geometry}
\usepackage{textcomp,eurosym}
\usepackage{graphicx}
\usepackage{longtable}
\usepackage{booktabs,paralist}
\usepackage{url}
\usepackage{pgfgantt}
\usepackage{xcolor,soul}
%% Hervorhebungen	\hl{text}
%% Farbe Hervorhebungen \sethlcolor{yellow}  oder {red} oder {green}
%% Unterstreichungen	\ul{text}
%% Farbe Unterstreichungen \setulcolor{yellow}  oder {red} oder {green}
%% Durchstreichungen	\st{text}
%% Farbe Durchstreichungen \setstcolor{yellow}  oder {red} oder {green}
%% Kapitälchen		\caps{text}
%% Letterspacing	\so{text}
\definecolor{LinkColor}{rgb}{0,0,0.5}
%
\definecolor{cell}{RGB}{220,230,240}
\definecolor{line}{RGB}{80,130,190}
\renewcommand{\arraystretch}{1.25}
%
\usepackage[]{changebar}
\newcommand{\cb}[1]{\begin{changebar}#1\end{changebar}}
%
\usepackage[flushmargin]{footmisc}
\renewcommand{\thempfootnote}{\alph{mpfootnote}}
\usepackage{scrpage2,lastpage}
\clearscrheadfoot
%
% nur bei gesetzem twoside
%\lehead{lehead} \cehead{cehead}
%\rehead{rehead} \lefoot{lefoot}
%\cefoot{cefoot} \refoot{refoot}
%
%\lohead{lohead} \cohead{cohead}
%\rohead{rohead} \lofoot{lofoot}
%\cofoot{cofoot}
%
\lohead{Flying Circus \\ Finanzen}
\rohead{\includegraphics[scale=0.15]{puf200X172}}
\lofoot{\today}
\rofoot{Seite \thepage~ von \pageref{LastPage}}
\pagestyle{scrheadings}
%
\usepackage[%
	pdftitle   ={Gespraechsprotokoll},%
	pdfauthor  ={Duck, Donald},%
	pdfcreator ={pdflatex with hyperref},%
	pdfsubject ={Projekt X},%
	pdfkeywords={Gold, Geldspeicher, Inventur}]{hyperref}
\hypersetup{%
	colorlinks =true,%
	linkcolor  =LinkColor,%
	citecolor  =LinkColor,%
	filecolor  =Linkcolor,%
	menucolor  =LinkColor,%
	urlcolor   =LinkColor,%
	breaklinks =true}
%
%
%
\begin{document}
%
\begin{flushleft}
 {\LARGE \textbf{Jour-Fix Protokoll}}
\end{flushleft}
%
\begin{tabular}{rp{5.4cm}lp{5.4cm}} \toprule
 Datum & \textbf{13.03.2013} Rev. 2 & & \\
 Protokollant & Duck, Donald & & \\
 Anwesend & Duck, Dagobert (Chair)	& Abwesend & Gans, Gustav (Luckiness) \\
  & Duck, Daisy (COO) 		&	   & Goofy (Fatality) \\
  & Duck, Tick (Clever-1)			&	& Pluto (Security) \\ 
  & Duck, Trick (Clever-2)		&	& \\ 
  & Duck, Track (Clever-3)		&	& \\ \bottomrule
\end{tabular}
%
%\arrayrulecolor{line}
%\rowcolors{2}{cell}{white}
\begin{small}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\begin{flushleft}
\begin{longtable}{p{0.2cm}p{0.3cm}p{9.9cm}p{2.4cm}l} \toprule
lfd. Nr.	& Art\footnotemark[1] %\footnote{I: Information | A: Aufgabe | B: Beschluß | N: Nachtrag}	
	& Thema
	& Verantwortlich/ Referent
	& Termin	\\ \midrule \endfirsthead
\hline
lfd. Nr.	& Art
	& Thema
	& Verantwortlich/ Referent
	& Termin	\\ \midrule \endhead
%
 
\rowcolor{blue!10}
\textbf{1.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Reinigung Geldspeicher}			
	& \textbf{Duck, Donald}	
	& \\
	& I	
	& Die Reinigung erwies sich als schwieriger, als zunächst gedacht. Durch wiederholte Besuche der Gebrüder \caps{Panzerknacker} wurde die zwischenzeitliche Ordnung derart durcheinander gebracht, daß zunächst das Eintreffen der Entenhausener Polizei abgewartet werden mußte, um selbige wieder herzustellen.
	& Duck, Donald	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \\ \cline{2-5}
	& A	
	& Bericht im übernächsten JF	
	& Duck, Donald	
	& 22.04.2013 \\ \cline{2-5}
	& N	
	& Im Nachgang zur Besprechnung wurde bekannt, daß die Hexe \begin{changebar}\caps{Gaukeley, Gundel}\end{changebar} aus der Haft auf dem Brocken entlassen werden mußte. Sie hatte den Gefängisdirektor in eine Maus verwandelt, was das Interesse der Gefängniskatze wecke. Erst nachdem er versprach, Frau \caps{Gaukeley} zu entlassen, wurde er wieder zurückverwandelt.
	& Duck, Donald	
	&  \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{2.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Goldmachmaschine}
	& \textbf{Dr. Düsentrieb, Daniel}
	& \\
	& I
	& \caps{Dr. Düsentrieb} wird erst wieder in der KW 15 in Entenhausen sein.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
 
\rowcolor{blue!10}
\textbf{3.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Lotterie}			
	& \textbf{Gans, Gustav}	
	& \\
	& 
I	
	& Herr Gans läß sich entschuldigen: Nach dem letzten ungeplanten Lotteriegewinn hat er einen kurzfristig anberaumten Termin mit seinem Steuerberater, Herrn Hartz, damit die Finanzierung von \textit{La Dolce Vita} nicht durch eine unangekündigte  Buchprüfung der Wirtschaftsprüfungsgesellschaft \caps{Troika \& Co.} oder durch eine \textit{Bäng-Bäng}-Affäre gestört wird.
	& Duck, Donald	
	& \\ \cline{2-5}
	& A	
	& Bericht zum Sachstand der Ausbeutung im nächsten JF	
	& Gans, Gustav	
	& 2.04.2013 \vspace*{0.2cm} \\
%
 
\rowcolor{blue!10}
\textbf{4.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Steueroptimierung}
	& \textbf{Duck, Daisy}
	& \\
	& I
	& Bei der zypriotischen Regierung wurde angefragt, was 'Steuern' sind. Solange die Antwort auf sich warten läßt, wurde zusammen mit der Spielbank 'Silberjunge Schwab' ein innovatives, die Sinne vernebelndes Finanzprodukt aufgelegt, daß die Beteiligten aufgrund ihrer internationalen Verflechtungen unzweifelhaft als systemrelevant qualifiziert, da die Anleger in jedem Fall alles verlieren werden.
	& Duck, Daisy	
	& \\ \cline{2-5}
	& A	
	& Bericht zum Sachstand der \euro -Gefälligkeiten
	& Gans, Gustav	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\newpage
\rowcolor{blue!10}
\textbf{5.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Auskunftsersuche IBF}			
	& \textbf{Duck, Trick}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Das Fachkonzept wurde mit der Anwaltskanzlei \caps{Nostra Casa \& Cie.} ausfühlich besprochen. Alle offenen Punkte wurden ungeklärt in die Kanalisation gespült. Eine Gefahr für die Kanalisation bestand zu seinem Zeitpunkt; marginale Kollateralschäden bei Menschen, Kindern und Frauen (!) sind eingepreist. Die Risiken konnten auf die UE geswappt werden.
	& Duck, Trick	
	&	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Track	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{6.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Liquidität}
	& \textbf{Duck, Dagobert}
	& \\
	& I
	& Herr Duck informierte über die aktuelle Goldbad-Temperatur. Das Thermometer wies in letzter Zeit eine auffällige Korrelation zum Aktienkurs der 'Germanian Bunk Ltd.`` auf, die auch der Entenhausener Handelszeitung nicht entgangen war. \caps{Don Corleone} wurde informiert.
	& Duck, Dagobert
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{7.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Fort Knox - Goldschatz}			
	& \textbf{Duck, Dagobert}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Die Analyse der Sicherheitsvorkehrungen ist noch nicht abgeschlossen. \caps{Kater Karlo} verweigert leider noch immer die Kooperation, so daß ein persönlicher Besuch vor Ort wohl unumgänglich sein wird.
	&	\\ \cline{2-5}
	& A	
	& Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \vspace*{0.2cm} \\
%
%\newpage
\rowcolor{blue!10}
\textbf{8.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Hr. M. aus N.}
	& \textbf{Destructivus, Tullius}
	& \\
	& I
	& Hr. D. läßt ausrichten, daß es ihn nie gegeben habe und daß er jeden anderweitigen Hinweis unerbittlich bis zum groß-imperialen Zwischenhändler verfolgen wird, sollte jemand etwas anderes behaupten. Da der 'ehrenwerte Richter' \textit{leider} drei Kinder hat, erübrigt sich ein Erscheinen vor dem hohen Gerüst und ein neuer Termin.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{9.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Las Vegas}			
	& \textbf{Duck, Dagobert}	
	& \\
	&  \vspace*{0.2cm}
I	
	& Der Betriebsauflug nach L.V. war ein voller Erfolg: Anders als beim letzt-jährigen Ausflug nach Hawaii störte diesmal nicht die Werbung für das Softeis 'Magnam'.  Als \textit{dernier-crie} erwies sich vielmehr 'Hokus-Pokus-13', was einigen Geschäftspartnern gleichwohl sauer aufstieß \ldots
	& Duck, track
	&	\\ \cline{2-5}
	& A	
	& Bullizei-Bericht im nächsten JF	
	& Duck, Donald	
	& 2.04.2013 \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{10.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{'Noch ein Bit?' - Liquidität der Falschen}
	& \textbf{Dr. Peulaner}
	& \\
	& I
	& \caps{Dr. Peulaner} wird erst wieder in der KW 15 nüchtern sein.
	& Duck, Donald
	& \vspace*{0.2cm} \\
%
\rowcolor{blue!10}
\textbf{11.}
	&	% Keine Art in der Betreffzeile	
	& \textbf{Termine}
	&
	& \\
	& B
	& Nächster JF
	& alle
	& 2.04.2013 \\
	& B
	& Nächster Workshop ``Tresore öffnen - 101''
	& PK1/Pk2 & 4.04.2013 \\
	& I
	& Nächste Sitzung des Lenkungsausschusses
	&
	& 5.04.2013 \\ \bottomrule 
\end{longtable}
\footnotetext[1]{I: Information | A: Aufgabe | B: Beschluß | N: Nachtrag}
\end{flushleft}
\end{small}
%
\end{document}

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Slides for my ‚Sphinx‘ presentation in Giessen

Here are the slides for my presentation on ‚Sphinx‘, the Python-based publishing tool.

UweZiegenhagen-Sphinx (PDF)

HTML Export example

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website

Slides for the German LaTeX Introductory Course in Gießen

Here are the slides I used in my LaTeX introductory course at University of Gießen.

Intro-Current-Complete (PDF)

Additional materials:

Uwe

Uwe Ziegenhagen likes LaTeX and Python, sometimes even combined. Do you like my content and would like to thank me for it? Consider making a small donation to my local fablab, the Dingfabrik Köln. Details on how to donate can be found here Spenden für die Dingfabrik.

More Posts - Website