Planet Flauscheria

September 09, 2017


Testing the effect of Puppet stringify_facts with octocatalog-diff

When migrating from Puppet 3 to Puppet 4, the first big step is preparing your Puppet manifests for the differences in facts.

Previously in Puppet, the values of facts used to be all strings. In Puppet 4, facts can have various proper data types like booleans, arrays and hashes. In Puppet 3, you can get the same behavior by setting the option stringify_facts = false on the agents.

Since the facts will be different, your Puppet code might behave differently. Especially in the case of booleans, you might previously have compared against "true", where now it’s true (use any2bool to support both).


To test the effects of the change before potentially breaking configuration, I turned to octocatalog-diff. It’s a tool by GitHub that shows the differences between two Puppet catalogues (the compiled output of your Puppet manifests, representing the configuration that will be applied).

For the following script to work, octocatalog-diff should already be configured with PuppetDB access. For each given host, the script will:

  1. fetch the facts from the host by running Facter over SSH. The JSON output of Facter is unaffected by stringification.
  2. compile two catalogs (from the manifests in the current directory), one with facts from PuppetDB and the other with the fetched facts, and compare them

set -e -u -o pipefail

mkdir -p facts

for hostname in "$@"; do
	echo "${hostname}"
		ssh "${hostname}" sudo facter --json --puppet > "${fact_file}"
		octocatalog-diff --hostname "${hostname}" --to-fact-file "${fact_file}" --from .
	) || true

Now when we execute it, we can see whether our catalogs are ready:

I, [2017-09-08T15:34:29.591598 #84032]  INFO -- : Catalogs compiled for
I, [2017-09-08T15:34:29.699115 #84032]  INFO -- : Diffs computed for
I, [2017-09-08T15:34:29.699145 #84032]  INFO -- : No differences
I, [2017-09-08T15:34:29.591598 #84032]  INFO -- : Catalogs compiled for
I, [2017-09-08T15:34:29.699115 #84032]  INFO -- : Diffs computed for
I, [2017-09-08T15:34:29.699145 #84032]  INFO -- : No differences

Looks like we are doing fine 🙂

by mxey at September 09, 2017 04:36 PM

April 26, 2016


Barcamp Oldenburg

Over the last weekend I was at the Barcamp Oldenburg. Since one of the first things I learned at this Barcamp was that not even among technically inclined people everyone knows what a Barcamp is let me give a ultra-rapid introduction.

A Barcamp is a so called unconference, everybody who attends is not audience but integral part of the conference. Usually a Barcamp starts by everybody given a very short introduction of themselves. In the case of the Oldenburg Barcamp you had 7 seconds. So just enough to say: “Hi my name is Martin, I work at junge haie and the three topics I’m interested in are Offline First, Angular 2 and Getting Things Done”. Which was basically my introduction. After that everybody who wants to hold a session goes to the front and has about time for an elevator pitch to his session. So 30 seconds explaining what you would like to use a 45 minute slot. You can do anything you like with that time, give a talk, foster a discussion or give a workshop. Than by show of hands the audience votes on who wants to see your session. If there is enough interest you get to put yourself on the schedule somewhere. After that the day starts with sessions. On the following day(s) this game continues.

Special Features

The Barcamp in Oldenburg, has two special features, the first being that since it is held in a hostel you can stay overnight. The organisers booked some rooms in advance and let you pay together with your ticket.

The second feature is that on the evening before the first day there is a BBQ for the overnight guests and those who want to come a day earlier.

The BBQ fostered some fun discussions between the participants in advance, among other things I had some long discussions about Webdesign/-development, IoT / SmartHomes / Smartgrids, and the Volkswagen scandal.

Last but not least it lead to me meeting someone else who is using GTD to organise his live and agreeing to hold a shared session on it the next day.


During the session planning I was quite happy with the diverse offering we had sessions more in a project and self management direction some for technical topics and e.g. one on bookbinding. It was also nice to see that every session proposed also got enough participants to be held.


The first session I attended was the session on GTD I cohosted. As usually with GTD, a lively discussion went on during us explaining what GTD is and how we modify and employ it in practice.

Personal knowledge management

Directly after GTD, I attended the session on personal knowledge management, which was actually a perfect fit for our GTD session. It outlined not tools, but more the way a personal knowledge management system should be structured, which all participants mostly agreed on. After that we went into some discussion on how this could be helped by tools. We found some solutions on knowledge gathering, filtering, storing and the retrieval, but came to the conclusion that there is at the moment no good tool for connecting the different items of knowledge.

Offline First

Third session on day one, was again one by me on offline first especially on offline first web apps. You can find more about it here.


After the lunch break on day on there was a session on IoT (Internet of Things) but it wasn’t a talk but a very lively discussion on advantages, disadvantages and what role artificial intelligence will play in it. I was very found of two points during the discussion. First it was very broad, since there where two computer scientists with a research background in autonomous traffic, a sociologist and a jurist among the participants. And second that the discussion wasn’t overtaken by those four people. With such a topic obviously we didn’t come to a final result so the discussion continued on during the remaining day.

Good Code / Bad Code

The second to last session on that day was on good and bad code. Which was a session not criticising some given code, but on holding yourself accountable for what you and your team produces. Obviously that is not the sole responsibility of the developer, but during the discussion one thing made it very clear where the difference is to other crafts. For example: No doctor would operate on you without washing properly, only so you could save cents on a hospital bill. But in software development this is basically what happens all the time, developers cutting corners to make a deadline or a budget. It was a good session, which was in times a bit painful since you got your own transgressions held in front of you.

Symfony 2

The last real session of the first day for me was the one of my colleague explaining Symfony 2. Which wasn’t really news to me, but I only started working on productive projects with it 2 weeks ago. That session went really well. I learned some things I didn’t know before and some of the people in the room started installing and playing around with it before the session had even ended.

Code Secrets / Project Secrets

The evening show of the Barcamp came in form of a session on code and project secrets. During the whole day there were two boxes where you could put in the worst thing you ever did during the production of code or in project management. In the evening these boxes where emptied anonymously and the audience decided if your transgressions should be meet with forgiveness or damnation.

There actually where some juicy bits in there but obviously I won’t say anything.

How to fuck up a project

On the second day the first session I attended was how to fuck up a project, where the best ways to do that where presented. It was quite fun and very interactive, since everybody in the audience was able to give some more ideas on how to really sabotage a project.


The last session for me was the one by our apprentice about BEM (Block Element Modifier). A system to better organise your CSS. I actually had not heard about this before. But to me it sounded like a very good idea to use it. So good actually that I moved to implementing it first thing Monday morning on my current work project.


For me this Barcamp was fun and I liked the broad offering of sessions even though my selection went a bit more into the technical sessions.

What was also nice was that many discussions continued well beyond the end of the sessions and everyone seemed quite engaged.

For my own sessions, I was quite happy to see that it helped some people. And I hope that I will see more Offline First (web) applications in the future. I’m counting on you.

In the end what remains to say is that I’m looking forward to Barcamp Oldenburg 2017 and I hope I’ll see you there.

April 26, 2016 12:00 AM

June 30, 2014


Warum Frauen*quoten keine unfaire Benachteiligung für Männer* darstellen

Ich habe kürzlich den Fehler begangen mich auf einer Familienfeier auf eine Diskussion über Feminismus mit meinem Bruder einzulassen1. Irgendwann im Laufe dieser Diskussion, die für jeden Bingospieler eine wahre Freude gewesen wäre, kam die Sprache auch auf die „böse Frauen*quote“, und zwar speziell auf die Quotierung von Kursplätzen in einem Jurastudiengang. Die* Schwester* eines* Freundes* des* Cousins* der* Mutter* seiner* Freundin*2, so mein Bruder, studiere nämlich Jura und habe zu Beginn jedes Semesters die freie Wahl der Kursplätze, weil diese quotiert seien, während ihre* männlichen* Kommilitonen* um jeden Kursplatz heftig kämpfen müssten und das sei ja wohl unfair.

Ich möchte hier erstmal kurz meine Erzählung unterbrechen und einwerfen, dass ich eine Quotierung nicht für grundsätzlich unproblematisch und das richtige Mittel gegen die Unterrepräsentierung von weiblichen* Menschen in bestimmten Bereichen halte. Ein großes Problem einer genderbasierten Quote sehe ich zum Beispiel darin, dass die Ansätze in der Regel von einem binären Gendermodell ausgehen und damit die Lebensrealitäten von trans*, inter* und genderqueeren Personen außer Acht lassen. Ganz abgesehen davon werden bei einer Genderquotierung häufig andere nichtgenderbasierte Diskriminierungsstrukturen vernachlässigt, was zur Verschlechterung der Situation für andere Marginalisierte führen kann. Trotz dieser Einwände halte ich eine genderbasierte Quote situationsabhängig für eine sinnvolle antidiskriminatorische Maßnahme. Genauer möchte ich an dieser Stelle darauf gar nicht eingehen, sondern mich jetzt auf das „Argument“ mit der* Jurastudentin* konzentrieren.

Lasst uns also zunächst einmal zwei Jurastudierende der fraglichen Fakultät betrachten: eine* weibliche* und einen* männlichen*, Alex und Chris3. Vergleichen wir nun deren Situation ausschließlich bezüglich der Kurswahl, so erscheinen die Auswirkungen der Quotierung zunächst tatsächlich reichlich ungerecht. Alex, als eine der wenigen weiblichen* Jurastudierenden, bekommt einen Platz in jedem Kurs, in dem sie* sich einträgt, während Chris größte Mühe hat, überhaupt auf seine* Semesterwochenstunden zu kommen und am Ende Kurse belegen muss, die er* gar nicht belegen wollte. Unfair, oder? Und alles nur, weil Alex eine* Frau* ist!

Nun lasst uns mal einen Schritt zurück machen und uns anschauen, wie der Studiumsalltag von Chris und Alex sonst so aussieht. Chris hat es tatsächlich zu Alex in den Kurs geschafft und die beiden behandeln dort jetzt im Unterricht fiktive Übungsfälle, in denen Männer* erfolgreiche Geschäftsleute, Anwälte und Richter sind, während Frauen* für Haushalt Kinder und Äußerlichkeiten zuständig sind (Link). Alex muss also nicht nur zum millionsten Mal brav über die Einparkwitzchen ihrer* Kommilitonen* lachen, sondern auch damit leben, dass die Herren* Juradozenten* ihr* eigentlich eher einen Platz hinterm Herd als in ihren Kursen wünschen. Ob das wohl fair ist?

Das Ende des Semesters nähert sich und Alex hat eine ziemliche Menge Prüfungen vor sich. Wie Chris büffelt sie* fleißig, doch am Ende schneidet sie* überall ein wenig schlechter ab. Ob es damit zu tun hat, dass Frauen* durchschnittlich schlechter abschneiden4 im Jurastudium? Vielleicht hat sie* tatsächlich aufgrund ihres* Genders schlechtere Chancen bei den Noten? Das klingt nun aber schon auch ziemlich unfair! Was war da am Anfang des Semesters nochmal mit der Kurswahl das Problem…? Ach, ja.

Jetzt lasst uns doch mal kurz überlegen, wie es eigentlich dazu kommt, dass Alex es bei der Kurswahl so viel einfacher hatte als Chris. Was besagt denn die Quotenregelung, die dafür sorgt, dass Alex leichter in die Kurse kommt? Vermutlich ist dort vorgeschrieben, dass eine gewisse Prozentzahl der Studierenden in den Kursen weiblich* sein soll (und nicht, dass Frauen* bei der Kurswahl grundsätzlich bevorzugt werden!). Optimistisch nehme ich für unser Beispiel mal eine fiktive vorgeschriebene Quote von 35% an. Wären also 35% aller Jurastudierenden an Alex‘ Uni weiblich*, so wären vermutlich auch rund 35% der Kursbewerber*innen für jeden Kurs weiblich*. Das würde für Alex allerdings bedeuten, dass sie* sich mit ihren* Mitbewerberinnen* ebenso um die Plätze streiten müsste, wie Chris mit seinen* 65% männlichen* Mitbewerbern*. Der Vorteil für Alex entsteht also am Ende daraus, dass es deutlich weniger weibliche* Jurastudierende gibt, als die Quote vorsieht. Über die Gründe dafür lässt sich natürlich streiten, aber nehmen wir einfach mal an, dass es (zum Teil) an der strukturellen Benachteiligung von Frauen* im Jurastusium liegt.

Alex wird also bei der Kurswahl bevorzugt, weil sie* insgesamt strukturell benachteiligt ist. Nun. Was war daran nochmal unfair?

  1. wenn ihr euch fragt, warum das ein Fehler sein soll, dann habt ihr das entweder noch nie versucht oder eine (in dieser Hinsicht) äußerst beneidenswerte Familie
  2. Bekanntschaftgrad zu stilistischen Zwecken _etwas_ übertrieben
  3. Namen frei erfunden
  4. Warnung für den Link: zum Teil Reproduktion von rassistischen, sexistischen und binaristischen Vorurteilen

by felis at June 30, 2014 05:35 PM

March 24, 2014


Mirroring MediaWiki with Git-Mediawiki and gitolite

From Murphy’s Law we can deduct that Internet failures always come when you least expect them. In my case, the Stratum 0 wiki was offline for a few minutes (only, thankfully!) when I really urgently(1!11) needed to look something up there. If I only had an offline clone of the wiki…

Enter: Git-Mediawiki

I had already before discovered Git-Mediawiki, which lets you mirror certain or all pages of a MediaWiki instance to a local Git repository. It achieves this by implementing the mediawiki:: remote handler, which lets you configure the URL of the remote MediaWiki instance as a Git remote, and loads the raw revisions from the MediaWiki API everytime you do a git fetch:

$ git clone mediawiki::
Cloning into 'mediawiki'...
Searching revisions...
No previous mediawiki revision found, fetching from beginning.
Fetching & writing export data by pages...
Listing pages on remote wiki...
6 pages found.
page 1/78: Vorstand
  Found 2 revision(s).
page 2/78: Atomuhr
  Found 15 revision(s).
page 3/78: Corporate Identity
  Found 6 revision(s).
page 4/78: Presse
  Found 2 revision(s).
1/804: Revision #738 of Presse
2/804: Revision #3036 of Atomuhr
3/804: Revision #3053 of Atomuhr
4/804: Revision #3054 of Atomuhr
Checking connectivity... done.

Not to mention, this can take a very long time if you try to import a whole wiki (say, Wikipedia (NO, DON’T ACTUALLY DO THIS! (or at least don’t tell them I told you how))), but you can also import only single pages or pages from certain categories with the -c remote.origin.pages=<page list> and -c remote.origin.categories=<category list> options to git-clone.

After the clone has finished, you can view the raw MediaWiki source files of the pages you imported from your computer. You can even edit them and push the changes back to the wiki if you configure your wiki user account in your Git config!

Since I had already played around with Git-Mediawiki, I had a local mirror of the Stratum 0 wiki on my laptop. Unfortunately, I had not pulled for a few weeks, and the information I needed was only added to the wiki some days ago. So for the future, it would be nice to have an automatically synchronising mirror… And not only one on my personal laptop, but also for other interested users, at least read-only.

Mirroring repositores with gitolite

The best solution for me was a mirror repository on my own server, which was already running gitolite, the popular Git hosting solution. I would simply add a read-only repository in gitolite and let a cron job handle care of automatic synchronisation.

Creating the new repository was easy, you simple add a line to your gitolite.conf, and when push the changes, gitolite creates the repository for you. But furthermore, I also wanted to configure the MediaWiki remote directly in my repository setup, for which I needed to specify the corresponding remote options for the Git configuration. The appropriate setting to allow this is in .gitolite.rc (gitolite’s main configuration file which resides in the gitolite base directory, say /home/git/ in my case), you can simply add the Git config options you want to set from gitolite.conf to the $GL_GITCONFIG_KEYS variable. Mine now looks like this:

$GL_GITCONFIG_KEYS = "remote\.* gitweb\.owner gitweb\.description";

Now I could easily add the corresponding options to my repository setup:

repo stratum0-wiki
    config gitweb.description = "Read-only Git mirror of the Stratum 0 wiki"
    config remote.origin.url = "mediawiki::"
    config remote.origin.fetch = "+refs/heads/*:refs/remotes/origin/*"
    config remote.origin.fetchstrategy = "by_rev"
    RW+ = rohieb
    R   = @all daemon gitweb

Note that I let Git-Mediawiki work with the by_rev fetch strategy, which queries the MediaWiki API for all recent revisions rather than first looking for changed pages and then fetching the revisions accordingly. This is more efficient since I want to import every revision nonetheless. I also found out the hard way (i.e. through print debugging) that adding the remote.origin.fetch option is critical for Git-Mediawiki to work correctly.

Then, a simple cron job for the git user (which owns all the gitolite repositories), was created with crontab -e to update the mirror every 30 minutes:

# m h  dom mon dow   command
*/30 * * * * /home/git/update-stratum0-mediawiki-mirror

The script which does all the work resides in /home/git/update-stratum0-mediawiki-mirror:

if [ "`whoami`" != "git" ]; then
    echo "fatal: run as user 'git'."
    exit 1;

cd /home/git/git/stratum0-wiki.git/

git fetch 2>&1 | grep -i 'fatal\|error\|warn'
git update-ref refs/heads/master refs/mediawiki/origin/master

Note that we cannot simply git-merge the master branch here, because the gitolite repository is a bare repo and git-merge needs a working tree. Therefore, we only fetch new revisions from our MediaWiki remote (which fetches to refs/mediawiki/origin/master), and update the master branch manually. Since the mirror is read-only and there are no real merges to be done, this is sufficient here.

So far, we have a fully working mirror. But since the Stratum 0 wiki has grown to more than 7000 revisions to date, the initial fetch would need a while. To reduce the load on the MediaWiki API, I figured that I could reuse my existing repository on my laptop.

Re-using a previous Git-Mediawiki repo

So before activating the cron job, I pushed my exiting repository to the mirror:

~/stratum0-wiki$ git push master
~/stratum0-wiki$ git push refs/mediawiki/origin/master

A test run of the mirror script however was not happy with that and wanted to fetch ALL THE revisions anyway. So it took me another while to find out that for efficiency reasons, Git-Mediawiki stores the corresponding MediaWiki revisions in Git notes under refs/notes/origin/mediawiki. For example:

$ git log --notes=refs/notes/origin/mediawiki
commit 7e486fa8a463ebdd177e92689e45f756c05d232f
Author: Daniel Bohrer <Daniel>
Date:   Sat Mar 15 14:42:09 2014 +0000

    /* Talks am Freitag, 14. März 2014, 19:00 */ format, youtube-links

Notes (origin/mediawiki):
    mediawiki_revision: 7444


So after I also pushed refs/notes/origin/mediawiki to the mirror repo, everything was fine and a the cron job only fetched a small amount of new revisions.


To conclude this post, I have now a working MediaWiki mirror for the Stratum 0 wiki, which uses a cron job and Git-Mediawiki to fetch new revisions every 30 minutes, integrated with gitolite for hosting. If you also want to keep track of changes in the wiki and have an offline mirror for reference, feel free to pull from git://

March 24, 2014 02:12 AM

March 02, 2014


Chinese Linking Rings

In the last two blog post we learned how to use <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings to implement several different algorithms, with just 7 lines of code and the right instantiation for a class. Among others, I showed you how to compute the length of the shortest paths between two nodes of a graph. In the last blog post I presented a way to represent every path between two nodes using regular expressions. In this blog post it is the time to combine both. We will construct a new <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring and use our, by now, well known algorithm to get every path that exhibits a specific property.

Combining <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings

First we need to take a look at if and how we can combine <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings. Actually for the if-part, I probably gave that away in the heading. So the answer is yes and it is pretty simple to combine <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings like this given: <semantics>(A,1,1,01,11)<annotation encoding="application/x-tex">(A,\oplus_1,\otimes_1, \mathbf{0}_1, \mathbf{1}_1)</annotation></semantics> and <semantics>(B,2,2,02,12)<annotation encoding="application/x-tex">(B,\oplus_2,\otimes_2, \mathbf{0}_2, \mathbf{1}_2)</annotation></semantics> we can simply construct <semantics>(A×B,,,(01,02),(11,12))<annotation encoding="application/x-tex">( A\times B, \oplus, \otimes, (\mathbf{0}_1, \mathbf{0}_2), (\mathbf{1}_1,\mathbf{1}_2))</annotation></semantics> where <semantics>(a,b)(c,d)=(a1c,b2d)<annotation encoding="application/x-tex">(a,b) \oplus (c, d) = (a \oplus_1 c, b\oplus_2 d)</annotation></semantics> and <semantics>(a,b)(c,d)=(a1c,b2d)<annotation encoding="application/x-tex">(a,b) \otimes (c, d) = (a \otimes_1 c, b\otimes_2 d)</annotation></semantics>. This is very simple, but completely useless for our case. Combining one <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring for our property with the one for regular expressions in this way, would just yield for example the shortest distance for a path as one element of the pair and the regular expression for all path between the two nodes in the other element of the pair.

We need to do something a little more intelligent to reach our goal. What we want is that the selection of the regular expression depends on the outcome of the operation on the property. Should the path be disregarded because it’s longer (less reliable, smaller capacity) we don’t want to include it in the regular expression describing the path.

Let’s construct that. For simplicity I will do so with only the shortest path even though it works the same way for the other properties in exactly the same way. You just have to switch the operations in the appropriate places of this explanation.

  1. First let’s use the pairs over the set’s of the two semirings to work with. In this case <semantics>{}×RE<annotation encoding="application/x-tex">\mathbb{N}\cup\{\infty\}\times RE</annotation></semantics>, we use the left side for our property, the right side for the regular expression describing the path. This should not be a surprise we need to store these properties somewhere.
  2. The neutral elements regarding our new operation will simply be the pairs of the neutral elements from the both <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings we are combining, so for the shortest path these are <semantics>(,)<annotation encoding="application/x-tex">(\infty, \emptyset)</annotation></semantics> and <semantics>(0,ϵ)<annotation encoding="application/x-tex">(0,\epsilon)</annotation></semantics>.
  3. We need a <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> operation for our new <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring. Let’s see what this means for our idea of discarding the path if the path is discarded by the property. In the shortest path <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring we drop a path when we determine the minimum, throwing the longer path away. But we are currently looking at the <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> operation which is <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> for the tropical semiring, this operation doesn’t discard anything. This simply results in the <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> operation being defined as it is above, we combine the <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics>-operations of the semiring like this: <semantics>(a,x)(b,y)=(a+b,xy)<annotation encoding="application/x-tex">(a,x) \otimes (b, y) = (a + b, x \cdot y)</annotation></semantics>.
  4. Now for the interesting case of <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics>. In the tropical semiring, <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> is the minimum-operation. This get’s rid of the larger of two path’s, so the same has to go for the regular expression. So depending on which path is the smaller one we discard that half of our regular expression resulting in the following definition of <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics>

$$(a,x)\oplus (b,y)=\left\{ \begin{array}{ll} (a, x)& \text{ if } min(a, b) = a \text{ and } min(a, b) \not = b\\ (b, y)& \text{ if } min(a, b) = b \text{ and } min(a, b) \not = a\\ (a, x+y)& \text{ otherwise } \end{array} \right.$$

Let’s review that. If the minimum of <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> is <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> we simply discard <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and the path’s <semantics>y<annotation encoding="application/x-tex">y</annotation></semantics> having the weight <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics>. Same goes the other way around if <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> is the shorter distance. In the last case both path have the same distance, so we can use either one to go from start to target node. For our regular expression this means we have to combine both path’s with an Or and since <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> have the same value we can take either as path length for our pair.

We now have a semiring for the pair case that does what we wanted. What remains is the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-operation. This is a bit tricky, but actually not that much. Let’s first give it:

<semantics>(a,x)*={(0,x*) if a=0(0,ϵ) otherwise<annotation encoding="application/x-tex"> (a,x)^*=\left\{ \begin{array}{ll} (0, x^*) & \text{ if } a = 0\\ (0, \epsilon) & \text{ otherwise} \end{array} \right. </annotation></semantics>

This might be a little counter intuitive at first, so let’s do this thinking thing again. If we have a shortest path from one node to somewhere with distance 0, what does that mean? It means there is a loop which doesn’t change the distance. So what can we do with such a loop, right we can take it an arbitrary number of times and this is exactly what the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> in regular expressions means: “Take this path an arbitrary number of times”. So we have to test if <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> is equal to the <semantics>1<annotation encoding="application/x-tex">\mathbf{1}</annotation></semantics> of the tropical semiring, which is <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics> and if it is we need to add a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> to the path leading to this situation. In all other cases, we are not allowed to take this path which is the same as saying, there is only the path of length 0 satisfying the property that it doesn’t add any length to the path, which is given by the regular expression<semantics>ϵ<annotation encoding="application/x-tex">\epsilon</annotation></semantics>.

We now have a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring for calculating all shortest path’s between two given nodes of a graph and again without changing our algorithm from the second to last blog post. For the other properties you simply need to switch, the minimum operation in the definition of <semantics>oplus<annotation encoding="application/x-tex">\ oplus</annotation></semantics> for the appropriate operation of the property you desire.


The following Haskell code works with all the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings from the second to last blog post, so you just plug in Tropical, MinMax or Reliability for a and you get the algorithm for the property you like.

data BestPath a x = BestPath a x

instance Functor (BestPath a) where
  fmap f (BestPath a x) = BestPath a (f x)
cgextract :: BestPath a x -> x
extract (BestPath _ x) = x

instance (Semiring a, Ord a, Semiring x) => Semiring (BestPath a x) where
  zero = BestPath zero zero
  one = BestPath one one
  (BestPath a x) <.> (BestPath b y) = BestPath (a <.> b) (x <.> y)
  (BestPath a x) <+> (BestPath b y) | ((a <+> b == a) && (not (b == a <+> b))) = (BestPath a x) 
                                    | ((a <+> b == b) && (not (a == a <+> b))) = (BestPath b y)
                                    | otherwise = BestPath (a <+> b) (x <+> y)
instance (StarSemiring a, Ord a, StarSemiring x) => StarSemiring (BestPath a x) where
  star (BestPath a x) | a == one = BestPath one (star x)
                      | otherwise = BestPath one one

Admission of cheating

Even though you probably wouldn’t have notice at first, but I cheated a little in this blog post. I used a property I didn’t previously introduce and which makes all of this work. I used the property that there is a natural order on Real and Natural numbers, which is the reason why the minimum and maximum operations on these Sets are defined. This property allows me to use the equality on these Set’s so I can define the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring like above. So what I need to say is: This will not work in the completely general case of having any property on any set with two operations forming a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring, but only for those defined on a set which give you an equality. Set’s not giving you this property, will probably be the topic of a later round of this thinking deeply about algorithms series.

Wrapping up

After now having defined a new <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring we can finally find all path’s exhibiting a specific property. I have an updated file giving you the full definitions from all the last blog posts, just follow this link. Next up I will probably give this to you in a programming language “real people use” (someone asked for it) and then let’s see if we can venture into a whole different area and let our 7 lines of code rest for the moment.

% LocalWords: semiring haskell semirings oplus tt MinMax Functor % LocalWords: fmap cgextract

March 02, 2014 12:00 AM

February 26, 2014


XMPP and the Internet of Things (Seminar wrap-up)

As I’m currently working to get a master’s degree in university, I had to write a seminar paper. I got lucky and the topic “Chatty Things – Making the Internet of Things Readily Usable with XMPP” sounded very interesting to me :-) As the title suggests, the paper describes how the XMPP protocol can be employed to facilitate user access to smart devices in the Internet of Things, and some thoughts on preventing information overflow on the user. If this sounds interesting to you as well, you should read my paper or scroll through the presentation slides ;-) The paper is licensed as CC BY-ND 3.0 (of course, you shouldn’t use it for your own paper :P), the presentation slides are CC BY-SA 3.0, and if you want to re-use it, have a look at the LATEX code.

Apart from the matter handled in the paper, I also acquired some additional skills:

  • Learn to motivate myself. The Pomodoro technique, in conjunction with chocolatey sweets for extrinsic gratification, seems to work quite well for me.
  • Learn to use TikZ to draw figures in LATEX. I already wanted to use it for a while, but it seemed complex and have a steep learning curve. It turns out that the TikZ/PGF manual is very illustrative, and has an exhaustive index for easy skimming.
  • Learn to deliver a good(?) talk. I recently discovered by Zach Holman, and apparently the tips he gives there seem to work and I felt much more secure than on previous talks. Also: a lot of practice. And test sessions. And I ditched his advice on slide design, I like my slides with latex-beamer :P

February 26, 2014 02:40 AM

February 23, 2014


Of rabbits and hats

In the last blog post I showed you what you can do with just implementing the interface for a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring and than using the matrix over that semiring. Up until now, we can compute the transitive connection relation, the length of the shortest path, the maximum throughput between two nodes and the reliability on the most reliable path. But what we can’t do right now is producing the path(s) that instantiate these properties. So this is exactly what I will show you in this post.

Regular Expressions

As you might have to expected, especially since I wrote it in the last blog post, we will use our new best friend the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring to do so. We actually come to the premier example of a semiring, the regular expression. You might know regular expressions from other programming languages, which is as helpful as it is unfortunate. Why is that you might ask and the answer is simple: There is a significant difference between regular expressions used in theoretical computer science and regular expressions as implemented in programming languages. The later are strictly more powerful. The nice part is they are also a syntactical super set of the first and by simply dropping this extra syntax we get exactly the former. So for you, this might result in some unlearning, I can’t help that, sorry.

So for everybody not knowing regular expressions from computer science curriculum, let’s give a brief explanation.

First we need a finite set of “letters” called alphabet usually for illustrative purposes one uses the regular letters of a usual alphabet, like <semantics>a,b,c,d,<annotation encoding="application/x-tex">a, b, c, d, \ldots</annotation></semantics>. But any alphabet will do, we could for example use the natural numbers up to some number, the edges of a finite graph or all subsets of <semantics>{1,2,3,4}<annotation encoding="application/x-tex">\{1,2,3,4\}</annotation></semantics> as letters, it doesn’t matter.

Let <semantics>l<annotation encoding="application/x-tex">l</annotation></semantics> be any letter of the alphabet <semantics>A<annotation encoding="application/x-tex">A</annotation></semantics>, then we can give the following recursive definition of the regular expressions <semantics>re<annotation encoding="application/x-tex">re</annotation></semantics> as follows:

<semantics>re,re1,re2::=|ϵ|l|(re1+re2)|(re1re2)|(re*)<annotation encoding="application/x-tex">re,re_1, re_2 ::= \emptyset | \epsilon | l | (re_1 + re_2) | (re1 \cdot re2) | (re^{*})</annotation></semantics>

Let’s go through this and decipher what it means.

  1. <semantics><annotation encoding="application/x-tex">\emptyset</annotation></semantics> this is simple. If we write nothing, it is a valid regular expression. And since we can’t leave blank space in a definition and think that everybody picks up that this is a significant syntactical element we write this as <semantics><annotation encoding="application/x-tex">\emptyset</annotation></semantics>.
  2. <semantics>ϵ<annotation encoding="application/x-tex">\epsilon</annotation></semantics> we need to construct a word that has no letters, to do that we use the symbol <semantics>ϵ<annotation encoding="application/x-tex">\epsilon</annotation></semantics>. You might ask what is the difference between nothing and a word of no letters. It is the same difference as between <semantics>0<annotation encoding="application/x-tex">{0}</annotation></semantics> and <semantics><annotation encoding="application/x-tex">\emptyset</annotation></semantics> one is a set containing something of no value, the other is simply empty, same goes here.
  3. If we have a letter <semantics>l<annotation encoding="application/x-tex">l</annotation></semantics>, writing just that letter is a valid regular expression.
  4. <semantics>re1+re2<annotation encoding="application/x-tex">re_1 + re_2</annotation></semantics> If we have two regular expressions already, we can either use the left or the right, appropriately this is usually called alternative or choice. The plus-sign is somewhat of a convention for regular expressions, but you might have already guessed what will make it’s way into our semiring in the end.
  5. <semantics>re1re2<annotation encoding="application/x-tex">re_1 \cdot re_2</annotation></semantics> this is called concatenation or sequential composition it simply states that we can look for something that matches the first regular expression followed by something that matches the second regular expression. If there is no danger of misreading it we usually omit the <semantics><annotation encoding="application/x-tex">\cdot</annotation></semantics> just like with multiplication.
  6. <semantics>re*<annotation encoding="application/x-tex">re^*</annotation></semantics> this finally is arbitrary iteration, if we have a regular expression we can match it an arbitrary amount of times.

Usually you define some form of rules that say we can omit some of the parens by saying <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> binds stronger than <semantics><annotation encoding="application/x-tex">\cdot</annotation></semantics> which in turn binds stronger than <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics>. Since this just looks like basic arithmetic I trust you can follow.


Let’s give an example, suppose we have this regular expression:

<semantics>reexample=a(bd+ce)<annotation encoding="application/x-tex">re_{example}=a (bd + ce)</annotation></semantics>

Then let’s first check that it is a valid regular expression for the alphabet <semantics>{a,b,c,d,e}<annotation encoding="application/x-tex">\{a,b,c,d,e\}</annotation></semantics>. After stating this, we know that the individual letters <semantics>a,b,c,d<annotation encoding="application/x-tex">a,b,c,d</annotation></semantics> are valid regular expressions. Next we combine <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and <semantics>d<annotation encoding="application/x-tex">d</annotation></semantics> with <semantics><annotation encoding="application/x-tex">\cdot</annotation></semantics> and get <semantics>(bd)<annotation encoding="application/x-tex">(b\cdot d)</annotation></semantics> same for <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> and <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics> now we can apply <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> and get <semantics>(bd+ce)<annotation encoding="application/x-tex">(b\cdot d+c\cdot e)</annotation></semantics>. As a last step we combine <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>(bd+ce)<annotation encoding="application/x-tex">(b\cdot d+c\cdot e)</annotation></semantics> and get <semantics>a(bd+ce)<annotation encoding="application/x-tex">a\cdot (bd+ce)</annotation></semantics>. Omitting the <semantics><annotation encoding="application/x-tex">\cdot</annotation></semantics>’s we get that the regular expression is valid.

Now what does it “mean”

Let’s assume we have a graph and the edges are labelled with letters so there is an edge between two nodes labelled with <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics>, one labelled <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and so on, like in this graph.

Then the regular expression above <semantics>a(bd+ce)<annotation encoding="application/x-tex">a(bd+ce)</annotation></semantics> describes all path’s from <semantics>N1<annotation encoding="application/x-tex">N1</annotation></semantics> to <semantics>N5<annotation encoding="application/x-tex">N5</annotation></semantics>. We first have to take the edge labelled <semantics>N1N2<annotation encoding="application/x-tex">N1\rightarrow N2</annotation></semantics> which is labelled <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> then either the edges labelled <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> followed by the edge labelled <semantics>d<annotation encoding="application/x-tex">d</annotation></semantics> or the edges labelled <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> and <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics>.

I think you see how this is useful for our case. So let’s go on and define a semiring.

The Regular Expression <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-Semiring

Actually regular expressions form a family of <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings, one for each underlying alphabet. So let’s call our alphabet <semantics>Σ<annotation encoding="application/x-tex">\Sigma</annotation></semantics>, which is the usual name for the alphabet in computer science. Then

<semantics>(Σ,+,,,ϵ)<annotation encoding="application/x-tex">(\Sigma, +, \cdot, \emptyset, \epsilon)</annotation></semantics> is a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring with the rules above and two corner cases which give rise to the following two (standard) definitions:

  1. <semantics>+x=x+=x<annotation encoding="application/x-tex">\emptyset + x = x + \emptyset = x</annotation></semantics>
  2. <semantics>x=x=<annotation encoding="application/x-tex">\emptyset \cdot x = x \cdot \emptyset = \emptyset</annotation></semantics>

Let’s do a quick check if our properties hold.

  1. <semantics>ab=ba<annotation encoding="application/x-tex">a\oplus b = b\oplus a</annotation></semantics> since <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> is the same as or this holds.
  2. <semantics>(ab)c=a(bc)<annotation encoding="application/x-tex">(a\oplus b)\oplus c = a\oplus (b\oplus c)</annotation></semantics>, by almost the same argument, if we first decide between <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> or <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and then between the result of that decision or <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> it’s the same as deciding the other way around.
  3. <semantics>a0=0a=a<annotation encoding="application/x-tex">a \oplus \mathbf{0}=\mathbf{0}\oplus a=a</annotation></semantics>, this is by the definition given above.
  4. <semantics>(ab)c=a(bc)<annotation encoding="application/x-tex">(a \otimes b)\otimes c = a \otimes (b \otimes c)</annotation></semantics> the concatenation of <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> yields <semantics>ab<annotation encoding="application/x-tex">ab</annotation></semantics> that concatenated with <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> yields <semantics>abc<annotation encoding="application/x-tex">abc</annotation></semantics> which is the same as first concatenating <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> to <semantics>bc<annotation encoding="application/x-tex">bc</annotation></semantics> and then prepending <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics>.
  5. <semantics>a1=1a=a<annotation encoding="application/x-tex">a \otimes \mathbf{1} = \mathbf{1} \otimes a = a</annotation></semantics> concatenating the empty word to anything will not change anything, so this is ok too.
  6. <semantics>a0=0a=0<annotation encoding="application/x-tex">a \otimes \mathbf{0} = \mathbf{0} \otimes a = \mathbf{0}</annotation></semantics> that’s by the definition above.
  7. <semantics>a(bc)=(ab)(ab)<annotation encoding="application/x-tex">a \otimes (b \oplus c) = (a\otimes b) \oplus (a\otimes b)</annotation></semantics>, this is simply either first doing <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and then deciding between <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> or <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> or first deciding to go <semantics>ab<annotation encoding="application/x-tex">ab</annotation></semantics> or <semantics>ac<annotation encoding="application/x-tex">ac</annotation></semantics> so this holds true to.
  8. <semantics>(ab)c=(ac)(bc)<annotation encoding="application/x-tex">(a \oplus b) \otimes c = (a\otimes c) \oplus (b\otimes c)</annotation></semantics>, almost the same as the one before, either decided between <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and then do <semantics>c<annotation encoding="application/x-tex">c</annotation></semantics> or deciding to do <semantics>ac<annotation encoding="application/x-tex">ac</annotation></semantics> or <semantics>bc<annotation encoding="application/x-tex">bc</annotation></semantics> should be the same.

Ok, we are satisfied, this is a semiring. Now for the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> part, which this time is a little more interesting than before.

If we want to describe all ways from one node to another, there might be loops on the way. For example let’s modify the graph from above slightly that it looks like this.

Now on a way from <semantics>N1<annotation encoding="application/x-tex">N1</annotation></semantics> to <semantics>N5<annotation encoding="application/x-tex">N5</annotation></semantics> we would be allowed to take the loop labelled <semantics>f<annotation encoding="application/x-tex">f</annotation></semantics> arbitrarily often, or writing it in the syntax of regular expression <semantics>a(bd+cf*e)<annotation encoding="application/x-tex">a(bd+cf*e)</annotation></semantics>. We have to take this into account for our <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring definition of regular expressions. So let’s do it.

Defining <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>s

I have a small problem since now we have two different <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operations, one from the semiring and one from the regular expressions. To keep those apart I will use <semantics>*sr<annotation encoding="application/x-tex">*_{sr}</annotation></semantics> for the semiring and <semantics>*re<annotation encoding="application/x-tex">*_{re}</annotation></semantics> for the regular expression star. I hope this isn’t to confusing for you.

Let us define a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>.

<semantics>xsr*={ϵfalls x=ϵfalls x=ϵy*srfalls x=y*rex*reotherwise<annotation encoding="application/x-tex">x^*_{sr}=\left\{\begin{array}{ll}\epsilon & \text{falls } x = \emptyset\\\epsilon & \text{falls } x = \epsilon\\y^{*_{sr}} & \text{falls } x = y^{*_{re}}\\x^{*_{re}} & \text{otherwise}\end{array}\right.</annotation></semantics>

Even though this is a bit tricky I think you are by now fully capable of checking that this will actually give us a valid <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring.


Now for a Haskell implementation. Since I don’t want to conflict with other operators I use Or, Concat and Star instead of <semantics>+,<annotation encoding="application/x-tex">+, \cdot</annotation></semantics> and <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>.

data StarSemiringExpression a = 
    Var a 
  | Or (StarSemiringExpression a) (StarSemiringExpression a)
  | Concat (StarSemiringExpression a) (StarSemiringExpression a)
  | Star (StarSemiringExpression a)
  | None 
  | Empty

newtype RE a = RE (StarSemiringExpression a)

re :: a -> RE a
re = RE . Var

instance Semiring (RE a) where
  zero = RE None
  one = RE Empty
  RE None <+> x = x
  x <+> RE None = x
  RE Empty <+> RE Empty = RE Empty
  RE Empty <+> RE (Star a) = RE (Star a)
  RE (Star a) <+> RE Empty = RE (Star a)
  RE x <+> RE y = RE (x `Or` y)
  RE Empty <.> x = x
  x <.> RE Empty = x
  RE None <.> _ = RE None
  _ <.> RE None = RE None
  RE x <.> RE y = RE (x `Concat` y)
instance StarSemiring (RE a) where
  star (RE None) = RE Empty
  star (RE Empty) = RE Empty
  star (RE (Star x)) = star (RE x)
  star (RE x) = RE (Star x)

The helper function re in combination with leaving out the actual alphabet for our regular expression allows us to use any type, as I’ve shown above, and implicitly creating the alphabet from the “letters” that are used in the regular expression. (For mathematically inclined readers: Yes, this is only ok, as long as we only use finite regular expression, but I would doubt that you can write an infinite one ;-) )

There is one thing left to do to put this to use, we need another small helper function:

reGraph :: (Ix i) => Matrix i (Maye a) -> Matrix (Re a) 
reGraph = fmap (maybe zero re)

This simply takes a matrix, where there might be an entry at any index and transforms that into a regular expression of one letter and takes the entry itself as letter, if there is no entry present at that point it just uses <semantics>ϵ<annotation encoding="application/x-tex">\epsilon</annotation></semantics>.

What about the Matrix

What remains is to clear up is what our <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation matrices does now. What we saw in the post from last week is that the algorithm minimised or maximised some property we calculated. This time it’s a little different. Operations like <semantics>max<annotation encoding="application/x-tex">max</annotation></semantics>, <semantics>min<annotation encoding="application/x-tex">min</annotation></semantics> and <semantics>||<annotation encoding="application/x-tex">||</annotation></semantics> “discard” one of their operands but the <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> operation from regular expressions doesn’t it creates an alternative. So for any node we can use as an intermediate what we get is “Either use the path we already know OR the path we can construct by using the intermediate node we are currently testing.” Now there might not be a path leading from our start to our target node using the specific intermediate node, then we get back a <semantics><annotation encoding="application/x-tex">\emptyset</annotation></semantics> as an alternative path, which is the only value that is actually discarded by <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics>. So what we get in the end is a regular expression specifying all path’s we can take to get from a start to a target node.

Oh by the way with this we implemented another well known algorithm with the same 7 lines of code I presented in the last blog post. It’s called the McNaughton-Yamada algorithm or the Kleene-Construction and is taught to probably every computer science major on the planet. (And forgotten about 5 minutes later ;-) )

Wrapping up

In the last blog post we started to put our <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring knowledge to use on graphs and found that the same 7 lines of code got us various properties, depending on which semiring we plugged in. This blog post showed how we can describe path between nodes and how we can get all path between two given nodes. Again with the very same 7 lines of code. What remains is to put both of those together to get all path exhibiting a given property and that is what we’ll do in the next instalment.

February 23, 2014 12:00 AM

February 15, 2014


Magic tricks

After in the last blog post I described some algebraic structures and already said I would like to show case how to solve some very different problems with those. I think it’s now time to go into that. I start with something which is more or less a reiteration of a fantastic blog post by Russell O’Conner on mostly graph problems. I will layout the problems a little differently and hope to convey the ideas behind the post to a wider audience. I will also omit some stuff and maybe come back to that in a later post. But now without further ado let’s get started.

First up, I had another blog post in mind at first, which in retrospect seemed a little to complicated for a first post. Since I changed the topic of this post slightly, I had to go back to the last post and add another algebraic structure the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring.

Square Matrixes

So after introducing the definition of a (<semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-)semiring in the last post, let’s now look at some examples. First let’s agree that any square matrix over a semiring is a semiring as well. To do that we first need to define the two operations <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> and <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> in terms of the operations on the underlying semiring. In other words given a semiring <semantics>(X,,,0,1)<annotation encoding="application/x-tex">(X, \oplus, \otimes, \mathbf{0}, \mathbf{1})</annotation></semantics> give a semiring <semantics>(X×,m,m,0m,1m)<annotation encoding="application/x-tex">(X^{\mathbb{N}\times\mathbb{N}}, \oplus_{m}, \otimes_{m}, \mathbf{0}_{m}, \mathbf{1}_{m})</annotation></semantics> such that this also forms a semiring. The second part is to select the elements <semantics>0m<annotation encoding="application/x-tex">\mathbf{0}_{m}</annotation></semantics> and <semantics>1m<annotation encoding="application/x-tex">\mathbf{1}_{m}</annotation></semantics>.

Actually this is simple for the <semantics>m<annotation encoding="application/x-tex">\oplus_m</annotation></semantics> Operation we just have to lift the <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> operation of our underlying semiring to matrices. Lifting simply means doing the operation <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> on every component of the matrix. So the first item in the first row of both matrices are connected with <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> then the second items of the first rows and so on and so on. Written mathematically:

<semantics>C=AmBcij=aijbij<annotation encoding="application/x-tex">C = A \oplus_{m} B \Leftrightarrow c_{ij} = a_{ij} \oplus b_{ij}</annotation></semantics>

here <semantics>aij<annotation encoding="application/x-tex">a_{ij}</annotation></semantics> simply means the element at the ith column in the jth row of matrix <semantics>A<annotation encoding="application/x-tex">A</annotation></semantics>.

Ok now for the second operation <semantics>m<annotation encoding="application/x-tex">\otimes_m</annotation></semantics> we simply use the same “trick” we usually us to multiply two matrices, we use the <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> operation component wise on the rows of the first matrix with the corresponding columns of the second matrix and than use the <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> operation over all of these results to get one result. Or mathematically put:

<semantics>C=AmBcij=k=0n(akjbik)<annotation encoding="application/x-tex">C = A \otimes_{m} B \Leftrightarrow c_{ij} = \oplus_{k=0}^{n} (a_{kj} \otimes b_{ik})</annotation></semantics>

where <semantics>n<annotation encoding="application/x-tex">n</annotation></semantics> is the size of the matrix.

What remains open are the neutral elements, but these both are easy. To do nothing to any component we can add <semantics>0<annotation encoding="application/x-tex">\mathbf{0}</annotation></semantics> from the underlying semiring, since we already know this doesn’t change anything, due to the rules of the underlying semiring, it wont change anything in the square matrices. So <semantics>0m<annotation encoding="application/x-tex">\mathbf{0}_m</annotation></semantics> is just a square matrix consisting of all components <semantics>0<annotation encoding="application/x-tex">\mathbf{0}</annotation></semantics>.

For the <semantics>1m<annotation encoding="application/x-tex">\mathbf{1}_{m}</annotation></semantics> we use the identity matrix so the matrix, where all elements on the main diagonal are 1, we only have to use the <semantics>1<annotation encoding="application/x-tex">\mathbf{1}</annotation></semantics> from our semiring, and everything works out perfectly.

Now you have only to suffer through the next section for an implementation, which is somewhat tailored to our application.


One application of square matrices is to describe the connections of graphs. Actually depending on your definition of a graph the matrix can be used as a complete definition of the graph, so let’s do so. First we need a type to hold the edges. Since we don’t want to specify what we can put in those edges, this will later help us to use one representation of graphs and edges for multiple purposes.

data Edge a = a :-> a deriving (Eq, Ord, Bounded, Ix) 

Here we have an Edge datatyp with a constructor :->. And we let the Haskell compiler figure out how we can check for Equality (Eq), that we can order edges (Ord), that there is a min and a maximum bound (Bounded) on all the types and that we can Index (Ix) especially the last two will be very useful later on.

Now we come to our matrix type. For a Matrix we need two types of input parameters, the type of index data, and the type of the content. The index data tells us how to address the components. In Haskell we could use any type for this as long as we have some mapping to the integers. This is a little more flexible in writing than always having to switch between your mental model and if it is [x][y] or [y][x].

In addition we say that Matrices are an instance of Applicative, which denotes that it is an applicative functor. I wont go into this in this post just think of it as it implements the container interface and we can apply functions to the individual components. This is not perfectly accurate but for the moment it will do.

Third we add two helper function, one which generates a list with one entry for every component of the resulting matrix, and one which takes a function then takes every component of our matrix and applies this function. These two functions simply do the following, whenever we want to create a new square matrix for a specific type we generate a dummy element for every entry and then apply a function to convert that dummy element into the final entry. In Java or C you would have a for loop iterating through the numbers 0 up to n (this is the dummy list) and then do something like x[i] = f(i) where f is some function in the body of the for loop.

Last but not least we say square matrices over edges where the content type is a semiring are as well a semiring, with the operations just like I told you before.

newtype Matrix i e = Matrix {unmatrix :: (Array (Edge i) e)}

instance (Ix i) => Functor (Matrix i) where
  fmap f (Matrix m) = Matrix (fmap f m)

instance (Ix i, Bounded i) => Applicative (Matrix i) where
  pure x = matrix (const x)
  Matrix f <*> Matrix x = matrix (\(i :-> j) -> (f!(i :-> j)) (x!(i :-> j)))
entireRange :: (Ix i, Bounded i) => [i]                                                                             
entireRange = range (minBound, maxBound)                                                                                            
matrix :: (Ix i, Bounded i) => (Edge i -> e) -> Matrix i e
matrix f = Matrix . listArray (minBound, maxBound) . map f $ entireRange
instance (Ix i, Bounded i, Semiring a) => Semiring (Matrix i a) where
  zero = pure zero
  one = matrix (\(i :-> j) -> if i == j then one else zero)
  (<+>) = liftA2 (<+>)
  (Matrix x) <.> (Matrix y) = matrix build
	      build (i :-> j) = foldr (<+>) zero [x!(i :-> k) <.> y!(k :-> j) | k <- entireRange]

So now we come to the heart and soul of this blog post, a mere 7 lines of code.

instance (Ix i, Bounded i, StarSemiring a) => StarSemiring (Matrix i a) where
  plus x = foldr f x entireRange
	  f k (Matrix m) = matrix build
		  build (i :-> j) = m!(i :-> j) <+>
                            m!(i :-> k) <.> star (m!(k :-> k)) <.> m!(k :-> j)

Ok so what does it do. It stipulates that matrices over a star semiring are also star semirings. For that we need to implement one of the two operations <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> or <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics>. Since <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> will lead us to a infinite recursion I opted for <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics>, but what does it do? First up a recap the operations of a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring are Fix point operators, that is the perform one or more operations until there is no more change (or ad infinitum if there is always progress). So how would we implement this.

Let’s formulate this in terms of graphs and their connectedness structure, we start with an initial setup, and then go through every node foldr f x entireRange and take a look at every component if either the current result doesn’t change (m!(i:->j)) or (<+>) if we can get a “better” result using the new node k ( m!(i :-> k) <.> star (m!(k :-> k)) <.> m!(k :-> j)).

I give you that sounds really vague, how can this be of any significance. This is where the fun starts, we use different underlying <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-Semirings. Let’s start with the most simple one.

Boolean <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-Semiring

The Boolean <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-Semiring is really simple, first the semiring-part, I will use the standard programming notation for and and or to make it a little easier. Than this <semantics>({0,1},||,&&,0,1)<annotation encoding="application/x-tex">(\{0,1\}, ||, \&\&, 0, 1)</annotation></semantics> is the Boolean semiring. For this one I will do a little sanity check for the later semirings I let you do that on your own. First if I take any Boolean (0 or 1) and do an or operation with 0 we will get the original value back. (0 || 0 = 0, 1 || 0 = 1, 0 || 1 = 1). Same goes for the and operation and 1 (0 && 1 = 0, 1 && 0 = 0, 1 && 1 = 1). These exhaustive examples also take care of the property that a || b = b || a. What remains to show is that the operations are distributing over one another, but this is what is called Rule of replacement. So we have established that Booleans form a semiring.

Now for the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> part, this is simple (and somewhat unceremoniously) too. Looking at the definition of <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> we have:

<semantics>x*=1xx*<annotation encoding="application/x-tex">x^{*}=1\oplus x\otimes x^*</annotation></semantics>

So let’s put the operators from our Boolean semiring into place. Then this becomes:

<semantics>x*=1||x&&x*<annotation encoding="application/x-tex">x^{*}=1 || x \&\& x^*</annotation></semantics>

now we simply use short circuit evaluation the result of 1 || anything will always be 1 so we can simply say <semantics>x*=1<annotation encoding="application/x-tex">x^*=1</annotation></semantics> for any <semantics>x<annotation encoding="application/x-tex">x</annotation></semantics> and now we have a star semiring.


In Haskell this is equally simple

instance Semiring Bool where
  zero = False
  one = True 
  (<+>) = (||)
  (<.>) = (&&)

instance StarSemiring Bool where
  star x = one


So now let’s put this to a good use. Since we now have a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring we know every square matrix over this also forms a <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semirings. For an example take the following graph as an example

We can represent this as a matrix, we have a row and column for every node in the graph and whenever there is an edge from one node to another, we have a 1 in the row of the origin at the column of the target node. This looks as follows

<semantics>C=(011000000100010100000010000001101000)<annotation encoding="application/x-tex">C=\left (\begin{array}{cccccc} 0 & 1 & 1 & 0 & 0 & 0\\ 0 & 0 & 0 & 1 & 0 & 0\\ 0 & 1 & 0 & 1 & 0 & 0\\ 0 & 0 & 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 0 & 0 & 1\\ 1 & 0 & 1 & 0 & 0 & 0\\ \end{array}\right)</annotation></semantics>

In Haskell we can put like this.

type Graph i = Matrix i Bool

graph :: (Ix i, Bounded i) => [Edge i] -> Graph i
graph edgeList = matrix build
      build i = i `elem` edgeList
data Nodes = N1 | N2 | N3 | N4 | N5 | N6 deriving (Eq, Ord, Bounded, Ix, Show)

exampleGraph1 = graph [N1 :-> N2, N1 :-> N3, N2 :-> N4, N3 :-> N2, N3 :-> N4, N4 :-> N5, N5 :-> N6, N6 :-> N1, N6 :-> N3]

So ok, now we have this in Haskell, the question is what does our <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation for Matrixes do in this case. Let’s review that:

For every entry component of the matrix we go through every node of the matrix and check if we can get a “better” result by taking that node.

Let’s do this in an example. Take the entry in the first row of at the fourth column. m!(N1 :-> N4) in our initial matrix it is 0. Now let’s go trough every node and do

m!(i :-> j) <+> m!(i :-> k) <.> star (m!(k :-> k)) <.> m!(k :-> j).

We first rewrite this to use our semiring then we get

m!(i :-> j) || m!(i :-> k) && star (m!(k :-> k)) && m!(k :-> j).

So when we go through every node N1 up to N6 the following happens:
  1. m!(N1 :-> N4) || m!(N1 :-> N1) && star (m!(N1 :-> N1)) && m!(N1 :-> N4)= 0 || 0 && star (0) && 0=0|| 0 && 1 && 0=0
  2. m!(N1 :-> N4) || m!(N1 :-> N2) && star (m!(N2 :-> N2)) && m!(N2 :-> N4)= 0 || 1 && star (0) && 1=0|| 1 && 1 && 1=1
  3. m!(N1 :-> N4) || m!(N1 :-> N3) && star (m!(N3 :-> N3)) && m!(N3 :-> N4)= 1 || 1 && star (0) && 1=1|| 1 && 1 && 1=1
  4. m!(N1 :-> N4) || m!(N1 :-> N4) && star (m!(N4 :-> N4)) && m!(N4 :-> N4)= 1 || 1 && star (0) && 0=1|| 1 && 1 && 0=1
  5. m!(N1 :-> N4) || m!(N1 :-> N5) && star (m!(N5 :-> N5)) && m!(N5 :-> N4)= 1 || 0 && star (0) && 0=1 || 0 && 1 && 0=1
  6. m!(N1 :-> N4) || m!(N1 :-> N6) && star (m!(N6 :-> N6)) && m!(N6 :-> N4)= 1 || 0 && star (0) && 0=1|| 0 && 1 && 0=1

Now what happened here? As soon as we hit the second iteration we found a path from N1 to N4 via N2 and the entry in the matrix changed from 0 to 1. If we do this for all entries what will happen is, we calculate the transitive connection relation, in other words we calculate which node we can reach from which other node via any path.

Without all the fuzz, what we did here is implementing the so called Warshall-Algorithm in Haskell, in a somewhat complicated way I give you that. But the nice part is, we are not done here.

Tropical <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring

In the last post I already introduced the Tropical <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-Semiring <semantics>({},min(x,y),+,,0)<annotation encoding="application/x-tex">(\mathbb{N}\cup \{\infty\}, min(x,y), +, \infty, 0)</annotation></semantics>, the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> is in the update.


Let’s update our example slightly, we now make the edges go both ways and attach weights to them. You can think of those as distances.

Or as a matrix we can represent this like this.

<semantics>C=(79147101591011215116691429)<annotation encoding="application/x-tex">C=\left (\begin{array}{cccccc} \infty & 7 & 9 & \infty & \infty & 14\\ 7 & \infty & 10 & 15 & \infty & \infty\\ 9 & 10 & \infty & 11 & \infty & 2\\ \infty & 15 & 11 & \infty & 6 & \infty\\ \infty & \infty & \infty & 6 & \infty & 9\\ 14 & \infty & 2 & \infty & 9 & \infty\\ \end{array}\right)</annotation></semantics>

Or in Haskell

exampleEdgeList2 :: (Edge Node2) -> Maybe Integer
exampleEdgeList2 (i :-> j) = (lookup (i :-> j) edges) `mplus` (lookup (j :-> i) edges)
      edges = [(N1 :-> N2, 7), (N1 :-> N3, 9), (N1 :-> N6, 14),
	           (N2 :-> N3,10), (N2 :-> N4,15),
			   (N3 :-> N4,11), (N3 :-> N6, 2),
			   (N4 :-> N5, 6),
			   (N5 :-> N6, 9)]

Now what does our <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation do now? Let’s go with the same example we did above, the first row, fourth column.

We once again go through N1 to N6 in search for what happens to N1 :-> N4

  1. min(m!(N1 :-> N4), m!(N1 :-> N1) + star (m!(N1 :-> N1)) + m!(N1 :-> N4)= min(∞, ∞ + star (∞) + ∞)= min(∞, ∞ + 0 + ∞)=∞
  2. min(m!(N1 :-> N4), m!(N1 :-> N2) + star (m!(N2 :-> N2)) + m!(N2 :-> N4)= min(∞, 7 + star (∞) + 15)= min(0, 7 + 0 + 15)=22
  3. min(m!(N1 :-> N4), m!(N1 :-> N3) + star (m!(N3 :-> N3)) + m!(N3 :-> N4)= min(22, 9 + star (∞) + 11)= min(22, 9 + 0 + 11)=20
  4. min(m!(N1 :-> N4), m!(N1 :-> N4) + star (m!(N4 :-> N4)) + m!(N4 :-> N4)= min(20, 20 + star (∞) + ∞)= min(20, 20 + 0 + ∞)=20
  5. min(m!(N1 :-> N4), m!(N1 :-> N5) + star (m!(N5 :-> N5)) + m!(N5 :-> N4)= min(20, ∞ + star (∞) + ∞)= min(20, ∞ + 0 + ∞)=20
  6. min(m!(N1 :-> N4), m!(N1 :-> N6) + star (m!(N6 :-> N6)) + m!(N6 :-> N4)= min(20, 14; + star (∞) + ∞)= min(20, 14 + 0 + ∞)=20

So what happened here, on step 2 we got a new value for our entry in the matrix, which at step three was again changed. What you can see here, is the same algorithm instantiated with another semiring calculates the shortest distance between the nodes.

Oh this algorithm by the way is known as the Floyd- or Floyd-Warshall-Algorithm. I doubt that at it’s conception the semiring property of bool and the tropical semiring was properly observed. You can obviously come from the Warshall- to the Floyd-Warshall-Algorithm by just looking long enough at the original code I believe.

Let’s do two more semirings.

MaxMin <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring

Another semiring we could think up is this <semantics>({},max(x,y),min(x,y),0,)<annotation encoding="application/x-tex">(\mathbb{N}\cup\{\infty\}, max(x,y), min(x,y), 0, \infty)</annotation></semantics>. I have trust in you that you can check that this ins indeed a semiring on your own. For the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation I give you some help, even though this is easy too. Once again the defining property is:

<semantics>x*=1xx*<annotation encoding="application/x-tex">x^*=\mathbf{1}\oplus x\otimes x^*</annotation></semantics>

which in this case means:

<semantics>x*=max(,min(x,x*))<annotation encoding="application/x-tex">x^*=max(\infty, min(x,x^*))</annotation></semantics>

and once again short circuit evaluation yields simply that <semantics>x*=<annotation encoding="application/x-tex">x^*=\infty</annotation></semantics> since the maximum of <semantics><annotation encoding="application/x-tex">\infty</annotation></semantics> and anything else will be <semantics><annotation encoding="application/x-tex">\infty</annotation></semantics>.


I wont go through the algorithm again, but just go through it on a more thought experimental way.

max (m!(i :-> j), min (min (m!(i :-> k), star (m!(k :-> k)), m!(k :-> j))

This is the line of our algorithm with the operations from the semiring given above. Let’s examine what this does. For every connection from one node to another we take the maximum of all possible path’s connecting two nodes, but take the minimum of all the connections in between. So if we have two paths leading from one node to another we take the one where the smallest edge weight is larger than the smallest edge weight on the other path.

Assume that the weights now represent throughput through some channel, than this algorithm gives us the channel to choose to send the most data in the shortest time. In our example graph from above for example we would take the path <semantics>N1N3N4<annotation encoding="application/x-tex">N1 \rightarrow N3 \rightarrow N4</annotation></semantics> over <semantics>N1N2N4<annotation encoding="application/x-tex">N1\rightarrow N2\rightarrow N4</annotation></semantics> because the minimum edge weight on the first path is 9 while on the second path it is 7.

I will only give you the semiring for MaxMin here and will give a full Haskell file with everything implemented later.

data MinMax = Infty | MinMax Integer deriving (Eq, Ord)

instance Semiring MinMax where
  zero = MinMax 0
  one = Infty
  _ <+> Infty = Infty
  Infty <+> _ = Infty
  (MinMax a) <+> (MinMax b) = MinMax $ max a b
  Infty <.> x = x
  x <.> Infty = x
  (MinMax a) <.> (MinMax b) = MinMax $ min a b
instance StarSemiring MinMax where
  star _ = one

MaxMult <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring

So final example for this blog post. Another semiring, this time <semantics>([0,1],max(x,y),,0,1)<annotation encoding="application/x-tex">([0,1], max(x,y), \cdot, 0, 1)</annotation></semantics>. This time I fully trust you that you can check that this is a semiring and that you can find a suitable <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation.


Let’s assume we have a graph like the one above but this time the edge weights are real values between 0 and 1. We interpret these as reliabilities. So the higher the number the more reliable the path. Should you want to send a data package from one node to another you would obviously like to have it go the most reliable path. And that is exactly what the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> operation will now do.

Once again taking the significant line from our algorithm and substituting the operations in we get this.

max (m!(i :-> j), (m!(i :-> k) * star (m!(k :-> k)) * m!(k :-> j))

So on every path we multiply the weights, giving us the overall reliability of that path, and then take the path with the highest such value.

What follows is the Haskell implementation of the Semiring, I will give you a Haskell file containing everything a little later.

data Reliability = Reliability Double deriving (Eq, Ord)

instance Semiring Reliability where
  zero = Reliability 0
  one = Reliability 1
  (Reliability a) <+> (Reliability b) = Reliability $ max a b
  (Reliability a) <.> (Reliability b) = Reliability $ a * b
instance StarSemiring Reliability where
  star _ = one

Wrapping up

What I showed you are 7 very powerful lines of code, implementing a very general algorithm. Just from this blog post they implement the transitive connection relation, length of the shortest path between two nodes, the maximum throughput between two nodes and the highest possible reliability for a path. Currently they don’t give you the actual path’s achieving those properties, but, probably not much to your surprise, we can actually do that with our newest best friend the <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>-semiring too. But since this blog post is long enough already I will leave that for the next blog post. What remains is this link to the file containing a working implementation and some examples.

February 15, 2014 12:00 AM

February 09, 2014


Sucker for generality

Lately, for reasons which slip my mind right now, I had to review some old library code I wrote. And as always when you review code you wrote a while ago, you think “How could I have ever thought this was good code?” Usually this is because the code contains more hacks than clean code or because you can’t even understand what that piece of code does. In this case I was quite ok with that, but could have hit myself hard for not recognising a general pattern of all distinct cases I programmed back then. This prompted me to go to:

  1. Rewrite the code in the more general way, reducing the code size by 30% and increasing the speed on two cases and
  2. Go into research mode for finding even better patterns of generalisation.

I can’t really show you the difference in 1. because I wrote the code for a project I was hired for and it’s not really open source but I decided to make a series of blog post about 2. I hope you like it.


Since I am a theoretical computer scientist and really like Haskell, probably much of these will take the form of “Applied Abstract Algebra” or “Applied Category Theory” in Haskell. Therefore I decided to do the following: Every part in this series will be divided into (at least) blog posts, the first explaining the theoretical foundations, like which algebraic/categorical structure or concept we will use, introducing some examples and some code in Haskell to use these. Subsequent blog posts will make use of the implementation and give general algorithms to solve different problems.

As this is the first blog post in the series we will start with theory. In this case Sets, Magmas, Semigroups, Monoids and Semirings.


Actually a Set in the mathematical sense is not that easy to define, there are several alternatives to do so, because the naive definition “A collection containing everything satisfying a given property” is flawed. I won’t go into that (right now). For the moment let us say a Set is a collection of things which we can consider as an object of it’s own. We dodge the question of how to form a Set and only say someone made one for us and we can work with that.


I think everybody knows some examples of Sets, let me give some anyways

  • <semantics>={0,1,2,3,}<annotation encoding="application/x-tex">\mathbb{N}=\{0,1,2,3, \ldots\}</annotation></semantics> The set of natural numbers is a set.
  • <semantics>={0,1,1,2,2,}<annotation encoding="application/x-tex">\mathbb{Z}=\{0, -1, 1, -2, 2, \ldots\}</annotation></semantics> The set of integers is a set.
  • All vertices in a Graph form set, as do all edges
  • <semantics><annotation encoding="application/x-tex">\ldots</annotation></semantics>


In the code we will present later, we can usually assume that collection of every member of a type forms a Set, so I don’t give code for Sets here. If we really need to use Sets we can use Data.Set from the Standard Haskell Library.


A Magma or a Groupoid is probably one of the algebraic structures, almost nobody knows. A Magma is a Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> equipped with on binary operation <semantics>:X×XX<annotation encoding="application/x-tex">\oplus:X\times X\rightarrow X</annotation></semantics> which is closed in that Set, with no further restrictions. This is so simple that everybody who has ever written a program must have seen a Magma without noticing it and probably has written something which is a Magma themself. Let’s go over this with an example:


Take the natural numbers <semantics>X=<annotation encoding="application/x-tex">X=\mathbb{N}</annotation></semantics> and the operation <semantics>=+<annotation encoding="application/x-tex">\oplus=+</annotation></semantics> as the usual addition we all know from school. This forms a Magma because:

  1. We have a Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> in this case the natural numbers <semantics><annotation encoding="application/x-tex">\mathbb{N}</annotation></semantics>.
  2. We have a binary operation <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics>, that is a operation that takes two inputs and returns one output, in this case <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics>, and
  3. This operation is closed in the Set, which means, whichever two elements we select as inputs we get a element of the same Set as output.

Let’s do another example: We take the natural numbers as our Set <semantics>X=<annotation encoding="application/x-tex">X=\mathbb{N}</annotation></semantics> again and as the operation <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> we take the minimum this time <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics>. This also forms a Magma.

  1. We have a Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics>, again the natural numbers <semantics><annotation encoding="application/x-tex">\mathbb{N}</annotation></semantics>.
  2. We have a binary operation <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics>.
  3. Independent of our choice of <semantics>x<annotation encoding="application/x-tex">x</annotation></semantics> and <semantics>y<annotation encoding="application/x-tex">y</annotation></semantics> <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics> will always return a natural number.

And a third example: We take the integers as our Set <semantics>X=<annotation encoding="application/x-tex">X=\mathbb{Z}</annotation></semantics>, as binary operation we take <semantics>=<annotation encoding="application/x-tex">\oplus=-</annotation></semantics> the usual subtraction. This also forms a Magma.

  1. Again we have a Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> this time the Integers <semantics><annotation encoding="application/x-tex">\mathbb{Z}</annotation></semantics>.
  2. We have a binary operation <semantics><annotation encoding="application/x-tex">-</annotation></semantics>.
  3. Independent of our choice of elements from <semantics><annotation encoding="application/x-tex">\mathbb{Z}</annotation></semantics> <semantics><annotation encoding="application/x-tex">-</annotation></semantics> returns an element of the Integers.


In Haskell we can make a type class for Magma by the following snippet and define the examples above as instances.

class Magma a where
  (<+>) :: a -> a -> a
data AddMagma = AddMagma Integer
data MinMagma = MinMagma Integer
data SubMagma = SubMagma Integer

instance Magma AddMagma where
  AddMagma a (<+>) AddMagma b = AddMagma $ a + b 
instance Magma MinMagma where
  MinMagma a (<+>) MinMagma b = MinMagma $ a min b 

instance Magma MinMagma where
  SubMagma a (<+>) SubMagma b = SubMagma $ a - b 


Now a little more than a Magma is a Semigroup it’s again a Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> with a binary operation <semantics><annotation encoding="application/x-tex">\oplus</annotation></semantics> closed in the set. But we now require a little more of the binary operation, it needs to be associative, that means whenever we take three (not necessarily distinct) elements <semantics>a,b,c<annotation encoding="application/x-tex">a,b,c</annotation></semantics> of the Set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> the following must hold <semantics>(ab)c=a(bc)<annotation encoding="application/x-tex">(a\oplus b)\oplus c=a\oplus (b\oplus c)</annotation></semantics>.


Let’s check our three examples from above if this holds.

For the Magama <semantics>(,+)<annotation encoding="application/x-tex">(\mathbb{N}, +)</annotation></semantics> we have already checked that we have a Set and a binary operation closed in the set what remains is to check for associativity. I won’t formally proof that and hope you see that <semantics>(a+b)+c=a+(b+c)<annotation encoding="application/x-tex">(a + b) + c = a + (b + c) </annotation></semantics> holds for natural numbers. So <semantics>(,+)<annotation encoding="application/x-tex">(\mathbb{N}, +)</annotation></semantics> is also a Semigroup.

For the Magama <semantics>(,min(x,y))<annotation encoding="application/x-tex">(\mathbb{N}, min(x,y))</annotation></semantics> we have also already checked that we have a Set and a binary operation closed in the set and have to check for associativity. Again no formal proof but a more detailed look at <semantics>min(min(a,b),c)=min(a,min(b+c))<annotation encoding="application/x-tex">min(min(a, b), c) = min (a, min (b + c)) </annotation></semantics>. On the left side we first take the smaller number of <semantics>a<annotation encoding="application/x-tex">a</annotation></semantics> and <semantics>b<annotation encoding="application/x-tex">b</annotation></semantics> and than compare that with c to find the smaller number among those on the right side we first find the smaller of b and c and than compare that to a to find the smallest of those two. Let’s assume the numbers are related in the following way <semantics>a<b<c<annotation encoding="application/x-tex">a<b<c</annotation></semantics> than <semantics>min(a,b)=a<annotation encoding="application/x-tex">min(a,b) = a</annotation></semantics> and therefore <semantics>min(min(a,b),c)=min(a,c)=a<annotation encoding="application/x-tex">min( min (a, b), c) = min (a, c) = a</annotation></semantics> which is the same as <semantics>min(a,min(b,c))=min(a,b)=a<annotation encoding="application/x-tex">min(a, min (b, c))=min(a, b)=a</annotation></semantics>. You can go through the result with other relations to finally come to the conclusion that <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics> is also associative. Which is to say <semantics>(,min(x,y))<annotation encoding="application/x-tex">(\mathbb{N}, min(x,y))</annotation></semantics> is also a Semigroup.

Now for our third example from above, <semantics>(,)<annotation encoding="application/x-tex">(\mathbb{Z},-)</annotation></semantics>. This doesn’t form a Semigroup which we can see by taking <semantics>a=7,b=6,c=5<annotation encoding="application/x-tex">a=7,b=6,c=5</annotation></semantics> and put it in $(7-6)-5=1-5=-4 \not= 7-(6-5)=7-1=-6$ so obviously this is not associative. As a result <semantics>,)<annotation encoding="application/x-tex">\mathbb{Z},-)</annotation></semantics> is a Magma, but not a Semigroup.


In Haskell we can’t state the property of associativity, so we can’t really give a formulation for that. In a case where we need it we would have to proof it by hand. But what we can state is the property that every Semigroup is already a Magma. This is easy to see from what we required of a Magma and a Semigroup above.

class Magma a => Semigroup a where 


We come to a third structure the Monoid, which is, again, a little more than a Semigroup in this case we don’t add further restrictions to the binary operation but, require to have one distinct element from the Set which is called a neutral element <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics> or <semantics>1<annotation encoding="application/x-tex">\mathbf{1}</annotation></semantics> (which can be quite confusing, see below). The neutral element has the property that it does nothing if the operation is applied to it an any other element. That is to say a Monoid is a structure <semantics>(X,,e)<annotation encoding="application/x-tex">(X, \oplus, e)</annotation></semantics> where <semantics>(X,)<annotation encoding="application/x-tex">(X, \oplus)</annotation></semantics> is a Semigroup and for every <semantics>xX<annotation encoding="application/x-tex">x\in X</annotation></semantics> <semantics>ex=xe=x<annotation encoding="application/x-tex"> e \oplus x = x \oplus e = x </annotation></semantics> holds.


Let’s see if we can find such an element for our remaining two examples of semigroups.

We already established that <semantics>(,+)<annotation encoding="application/x-tex">(\mathbb{N},+)</annotation></semantics> is a semigroup, so now we need to find an element which doesn’t change anything if it is added to any other number. It shouldn’t be too hard to see that <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics> satisfies exactly that. If you take any natural number and add <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics> to it you get exactly the same number back. So we have found our element <semantics>e=0<annotation encoding="application/x-tex">e=0</annotation></semantics> of <semantics><annotation encoding="application/x-tex">\mathbb{N}</annotation></semantics> and have that <semantics>(,+,0)<annotation encoding="application/x-tex">(\mathbb{N},+,0)</annotation></semantics> forms a Monoid.

As I already said above often times the neutral element is called <semantics>1<annotation encoding="application/x-tex">\mathbf{1}</annotation></semantics>, this is because most of the time natural numbers with multiplication so <semantics>(,,1)<annotation encoding="application/x-tex">(\mathbb{N}, \cdot, 1)</annotation></semantics> is used as an example for a Monoid. In this case <semantics>e=1=1<annotation encoding="application/x-tex">e=\mathbf{1}=1</annotation></semantics> where it is not that irritating. But this throws you off as soon as you take any other combination like <semantics>(,+,0)<annotation encoding="application/x-tex">(\mathbb{N},+,0)</annotation></semantics> in which case <semantics>e=1=0<annotation encoding="application/x-tex">e=\mathbf{1}=0</annotation></semantics>.

Now for our second example <semantics>(,min(x,y))<annotation encoding="application/x-tex">(\mathbb{N}, min(x,y))</annotation></semantics> again we already established this to be a semigroup, but now we are stuck we can’t find any element which won’t interfere with our <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics> operation, because if we select any element of <semantics><annotation encoding="application/x-tex">\mathbb{N}</annotation></semantics> to be our neutral element <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics> we can find one element <semantics>x<annotation encoding="application/x-tex">x</annotation></semantics> which is larger then <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics>, in which case applying <semantics>min<annotation encoding="application/x-tex">min</annotation></semantics> won’t yield <semantics>x<annotation encoding="application/x-tex">x</annotation></semantics> as it would have to, but <semantics>e<annotation encoding="application/x-tex">e</annotation></semantics>. So <semantics>,min(x,y))<annotation encoding="application/x-tex">\mathbb{N}, min(x,y))</annotation></semantics> can’t be made into a Monoid.

Actually we often want something with <semantics>min<annotation encoding="application/x-tex">min</annotation></semantics> to be a Monoid. For that we use a little trick, we add an element that by definition satisfies the property of the neutral element. We call it <semantics><annotation encoding="application/x-tex">\infty</annotation></semantics> and than say <semantics>({},min(x,y),)<annotation encoding="application/x-tex">(\mathbb{N}\cup \{\infty\}, min(x,y), \infty)</annotation></semantics> is a Monoid. Before you ask: Yes that is cheating ;-).


Like before we can’t state the property that one or e is a neutral element in Haskell, we will have to proof that by hand, but we can at least give the structure.

class Semigroup a => Monoid a where
  one :: a 
instance Monoid AddMagma where
  one = 0

Disclaimer: We won’t use this code as there is already a Monoid class in the standard Haskell library in Data.Monoid.


So now for the last structure I need to introduce for the next blog post, the Semiring this time we don’t only add another restriction but we combine things we have found above. A Semiring is structure, consisting of set <semantics>X<annotation encoding="application/x-tex">X</annotation></semantics> with two binary operations <semantics>,<annotation encoding="application/x-tex">\oplus, \otimes</annotation></semantics> and two neutral elements <semantics>0,1<annotation encoding="application/x-tex">\mathbf{0}, \mathbf{1}</annotation></semantics> such that <semantics>X,,0<annotation encoding="application/x-tex">X, \oplus, \mathbf{0}</annotation></semantics> and <semantics>X,,1<annotation encoding="application/x-tex">X, \otimes, \mathbf{1}</annotation></semantics> are Monoids and the following hold: <semantics>ab=ba<annotation encoding="application/x-tex">a \oplus b = b \oplus a</annotation></semantics> <semantics>a0=0a=0<annotation encoding="application/x-tex">a \otimes \mathbf{0}=\mathbf{0}\otimes a=\mathbf{0}</annotation></semantics> <semantics>a(bc)=(ab)(ac)<annotation encoding="application/x-tex">a \otimes (b \oplus c) = (a\otimes b) \oplus (a\otimes c)</annotation></semantics> <semantics>(ab)c=(ac)(bc)<annotation encoding="application/x-tex">(a \oplus b) \otimes c = (a\otimes c) \oplus (b \otimes c)</annotation></semantics>

Ok, I see that looks complicated at first let’s try to see what it means. We already know what these Monoid thingys are, now we just have two of them that work on the same Set. That should not be to complicated. But what about these properties. You actually have encountered one example of a Semiring in school, without explicitly stated as such. The Semiring <semantics>(,+,,0,1<annotation encoding="application/x-tex">(\mathbb{N}, +, \cdot, 0, 1</annotation></semantics>).

Where <semantics>(,+,0)<annotation encoding="application/x-tex">(\mathbb{N}, +, 0)</annotation></semantics> is a Monoid, we already know that, I think you can check that <semantics>,,1<annotation encoding="application/x-tex">\mathbb{N}, \cdot, 1</annotation></semantics> is also a Monoid on your own. Now for the remaining properties:

  1. <semantics>ab=ba<annotation encoding="application/x-tex">a \oplus b=b\oplus a</annotation></semantics> this simply states that I can switch the operands of the first operation which is called commutativity, you can check that this is the case with <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> <semantics>a+b<annotation encoding="application/x-tex">a + b</annotation></semantics> is always the same as <semantics>b+a<annotation encoding="application/x-tex">b + a</annotation></semantics>
  2. <semantics>a0=0a=0<annotation encoding="application/x-tex">a \otimes \mathbf{0}=\mathbf{0}\otimes a=\mathbf{0}</annotation></semantics> in this case <semantics>=<annotation encoding="application/x-tex">\otimes=\cdot</annotation></semantics> and <semantics>0<annotation encoding="application/x-tex">\mathbf{0}</annotation></semantics> is simply <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics>, so this property holds too, just check <semantics>a0=0a=0<annotation encoding="application/x-tex">a \cdot 0 = 0 \cdot a = 0</annotation></semantics>
  3. <semantics>a(bc)=(ab)(ac)<annotation encoding="application/x-tex">a \otimes (b \oplus c) = (a\otimes b) \oplus (a\otimes c)</annotation></semantics> and <semantics>(ab)c=(ac)(bc)<annotation encoding="application/x-tex">(a \oplus b) \otimes c = (a\otimes c) \oplus (b \otimes c)</annotation></semantics> you can check these with basic arithmetic, if you add two numbers and multiply them with a third number it is the same as if you first multiply the individual numbers both with third number and add the results of these multiplications.

But why are these two properties you might ask. This is simple, up to this point I never required that <semantics>ab<annotation encoding="application/x-tex">a \otimes b</annotation></semantics> is the same as <semantics>ba<annotation encoding="application/x-tex">b \otimes a</annotation></semantics>, so I can’t simply switch the operands around. This allows me to use more operations for the <semantics><annotation encoding="application/x-tex">\otimes</annotation></semantics> operation above. Just as an example of an operation where I can’t switch around the operands think of subtraction <semantics>75=2<annotation encoding="application/x-tex">7-5=2</annotation></semantics> is obviously not the same as <semantics>57=2<annotation encoding="application/x-tex">5-7=-2</annotation></semantics>.

So what we just did is give a generalisation of this <semantics>(,+,,0,1<annotation encoding="application/x-tex">(\mathbb{N}, +, \cdot, 0, 1</annotation></semantics>) thingy and allow to use other operations than <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> and <semantics><annotation encoding="application/x-tex">\cdot</annotation></semantics> and other Sets than <semantics><annotation encoding="application/x-tex">\mathbb{N}</annotation></semantics>. Let’s for example start by the following example


<semantics>({},min(x,y),+,,0)<annotation encoding="application/x-tex">(\mathbb{N}\cup \{\infty\}, min(x,y), +, \infty, 0)</annotation></semantics> now this seems completely ridiculous, but will be very helpful in the next instalment of this series. Ok now let’s have a closer look. As already established above <semantics>({},min(x,y),)<annotation encoding="application/x-tex">(\mathbb{N}\cup \{\infty\}, min(x,y), \infty)</annotation></semantics> is a Monoid, as is <semantics>({},+,0<annotation encoding="application/x-tex">(\mathbb{N}\cup\{\infty\}, +, 0</annotation></semantics>) (you just have to say adding <semantics><annotation encoding="application/x-tex">\infty</annotation></semantics> to anything is <semantics><annotation encoding="application/x-tex">\infty</annotation></semantics>, as you might have expected). Now we need to check the other properties

  1. <semantics>ab=ba<annotation encoding="application/x-tex">a \oplus b=b\oplus a</annotation></semantics> check above again <semantics>=min(x,y)<annotation encoding="application/x-tex">\oplus=min(x,y)</annotation></semantics>, so we need to check that <semantics>min(x,y)=min(y,x)<annotation encoding="application/x-tex">min(x,y)=min(y,x)</annotation></semantics> but that is easy to see, I hope.
  2. <semantics>a0=0a=0<annotation encoding="application/x-tex">a \otimes \mathbf{0}= \mathbf{0}\otimes a=\mathbf{0}</annotation></semantics>, again attention <semantics>=+<annotation encoding="application/x-tex">\otimes=+</annotation></semantics> and <semantics>0=<annotation encoding="application/x-tex">\mathbf{0}=\infty</annotation></semantics> so we have to check <semantics>a+=+a=<annotation encoding="application/x-tex">a+\infty=\infty+a=\infty</annotation></semantics>, I think this you will agree this is correct, especially since I stated this to be the case above.
  3. <semantics>a(bc)=(ab)(ac)<annotation encoding="application/x-tex">a \otimes (b \oplus c) = (a\otimes b) \oplus (a\otimes c)</annotation></semantics> and <semantics>(ab)c=(ac)(bc)<annotation encoding="application/x-tex">(a \oplus b) \otimes c = (a\otimes c) \oplus (b \otimes c)</annotation></semantics> this is to say <semantics>a+min(b,c)=min(a+b,a+c)<annotation encoding="application/x-tex">a + min(b,c) = min(a+b, a+c)</annotation></semantics> and <semantics>min(a,b)+c=min(a+c,b+c)<annotation encoding="application/x-tex">min(a,b)+c = min(a+c, b+c)</annotation></semantics> I think we agree on that too. So <semantics>({},min(x,y),+,,0)<annotation encoding="application/x-tex">(\mathbb{N}\cup \{\infty\}, min(x,y), +, \infty, 0)</annotation></semantics> also forms a Semring. Actually Semirings using <semantics>min(x,y)<annotation encoding="application/x-tex">min(x,y)</annotation></semantics> and <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> as operations have a name they are called Tropical Semirings and as I already said we will put this one to good use in the next instalment.


Again we can’t state the properties but we can write out what we basically need

class Semiring a where
  zero :: a
  one :: a
  (<+>) :: a -> a -> a
  (<.>) :: a -> a -> a

data SchoolArithmatic = SchoolArithmatic Integer
data Tropical = Tropical Integer | Ininity

instance Semiring SchoolArithmatic where
  zero = 0
  one = 1
  (SchoolArithmatic a) <+> (SchoolArithmatic b) = SchoolArithmatic $ a + b
  (SchoolArithmatic a) <.> (SchoolArithmatic b) = SchoolArithmatic $ a * b

instance Semiring Tropical where
  zero = Infinity
  one = 0
  Infinity <+> x = x
  x <+> Infinity = x
  (Tropical a) <+> (Tropical b) = Tropical $ min a b
  Infinity <.> _ = Infinity
  _ <.> Infinity = Infinity
  (Tropical a) <+> (Tropical b) = Tropical $ a + b

Wrapping up

So now I hope I haven’t confused you to much, if I have, try reading it again. If it is still unclear and you want to understand it or if you think I might have made a mistake, which is very well in the realm of possible, the comment section is your friend. If necessary I’ll update this post accordingly. Next time (not necessarily next blog post) I’ll try to put the above to good use, especially the Semiring stuff.

Update: *-semiring

I have to make small addition to this post, I forgot to explain one algebraic structure the *-semiring. It is actually a just a small addition to a Semring. We add another operation which we call asteration or star (<semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>) this operation has to satisfy the following property for any <semantics>xX<annotation encoding="application/x-tex">x\in X</annotation></semantics> <semantics>x*=1(xx*)=1(x*x)<annotation encoding="application/x-tex">x^* = \mathbf{1}\oplus (x\otimes x^*) = \mathbf{1}\oplus (x^*\otimes x)</annotation></semantics> It is whats called a fix point operator. Depending on the setting it might e.g. work as repetition or simple be instantiated to a specific value. From this star operation we can derive another which is called plus. Plus simply omits the base case and can be defined by: <semantics>x+=xx*<annotation encoding="application/x-tex">x^+=x\otimes x*</annotation></semantics>

One detail we will need for the next blog post is that these operators can be defined in terms of each other. We defined <semantics>+<annotation encoding="application/x-tex">+</annotation></semantics> in terms of <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics>. The reverse direction works as follows.

<semantics>x*=1x+<annotation encoding="application/x-tex">x^*=1\oplus x^+</annotation></semantics>


In our remaining two examples of a semiring we could define the following asteration operations:

In the <semantics>(N,+,,0,1)<annotation encoding="application/x-tex">(N, +, \cdot, 0, 1)</annotation></semantics> semiring <semantics>*<annotation encoding="application/x-tex">*</annotation></semantics> could be defined of the infinite sum <semantics>x*=1+ix<annotation encoding="application/x-tex">x*=1+\sum_{i}^{\infty}x</annotation></semantics> this is not very helpful and we wont use it later on.

In the <semantics>(N{},min,+,,0)<annotation encoding="application/x-tex">(N\cup \{\infty\}, min, +, \infty, 0)</annotation></semantics> semiring on the other hand <semantics>x*=0<annotation encoding="application/x-tex">x* = 0</annotation></semantics> satisfies our property perfectly. Just by the simple fact that <semantics>=min(x,y)<annotation encoding="application/x-tex">\oplus=min(x,y)</annotation></semantics> and that the minimum of <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics> and any other number in <semantics>N{}<annotation encoding="application/x-tex">N\cup \{\infty\}</annotation></semantics> will always be <semantics>0<annotation encoding="application/x-tex">0</annotation></semantics>. This is actually more useful and find it’s way into the next blog post.


In Haskell we can write a semiring as follows, obviously for any instance we would have to override one of the both to not fall into the trap of an infinite recursion. For the same reason I will omit a definition of the school arithmetic semiring, it simply wont finish computing anyway. However you will find the definition for the Tropical Semiring below.

class Semiring a => StarSemiring a where
  star :: a -> a
  star x = one <+> (plus x)
  plus :: a -> a
  plus x = x <.> (star x)

class Starsemiring Tropical where 
  star _ = one

February 09, 2014 12:00 AM

January 19, 2014


Reduce to the max

For the last 10 years now I am a Apple user. Nevertheless I really like Linux and that’s not only on servers and in embedded devices but for the Desktop. I actually don’t see Linux fitting on the Desktop of anybody who is not tech savvy even though Ubuntu is not that bad. But for so called power users Linux actually is a very valid Desktop environment. So as a second Workspace I have VMWare Linux instance running on my machine almost 24-7. And since I have been asked now at least one to many times how my “strange” Desktop Environment is configured. I’d like to share that with you.

Tiling Window Manager

I’ve long been a fan of tiling window managers, especially since they work very well for most of the task I do most of the day. For writing papers or exams for students I need three windows one editor, one pdf viewer, and a terminal for compiling and vcs. For programming editor, documentation and a terminal for compiling and vcs. You get the point I think. What really helps is having them all side by side and not have to move one window out of the way of the others all the time to see, and this is were tiling window managers comes in. All windows are layed out side by side, actually in my setup that is not completely true, but we come to that.


As you can guess by the side generator I use for this side (Hakyll) I really like Haskell. So deciding to use XMonad some years ago was more or less a given. Xmonad feels more like a window manager construction kit and is highly configurable, which is probably the reason why there are several example configurations on the XMonad Wiki. And since I could convince a student to do his bachelor thesis on usability enhancements for tiling window managers in XMonad and let him implement some of the features I was missing, and these enhancements even found their way into XMonad core XMonad is now more or less the Window Manager of my dreams. Thanks again Jan for Bluetile!


Obviously my configurations are attached nevertheless I walk you through some of what I did. For layouts I like following four very much. A main window the filling the left 70% of the screen and all the other windows lined up right to it top to bottom with 30% screen width and height depending on their number. Almost the same goes for the second layout which is the top 70% one window the rest sharing the bottom 30%. For these two I have obviously set up to have more than one window in the 70% area and shortcuts to change the ration. The third Layout I use is just one full screen app where I can only change which one that should be if I have more than one on the workspace. And the last one is Accordion where the focused window takes up most of the screen estate. All other applications share about 10% of the space only showing maybe one line of text. If I change the focused window that one goes bigger and all other retains their positions but shrink. This is useful especially for writing papers where I usually only need to see the result while I’m not editing, so I can switch focus the editor minimises and the pdf viewer maximises.

Topic Spaces

The absolute killer feature of XMonad for me are the Topic Spaces. You can think of them as Multiple Workspaces on steroids. A Topic Space is a workspace plus a default directory plus a configuration of applications to start on that workspace. Maybe this get’s easier to understand with an example. As I already wrote in the introduction my day job often consists of writing papers, the usual workflow for that is:

  1. I open a terminal
  2. I set up a directory for the Tex Sources.
  3. I initialise some vcs in that directory
  4. I open a editor to work on the source files
  5. I compile the source
  6. I open a pdf viewer to look at the result

this window configuration of a pdf viewer (that auto updates with every compilation) the terminal and the editor stay open in the directory the whole time. So after the initial creation of the directory I can configure a new topic space with the directory I write the paper in and the application configuration “Start a Terminal (in the specified directory), Start an editor and start a pdf view. Now every time I change to my paper writing workspace the three apps spawn in the directory and I can start working in an instance. Same goes for my blog post writing, programming, xmonad configuration, mail, irc, … workspace.

Some gimmicks

In addition to these I added some features to speed up specific workflows. One is having a new named workspace, I hit Meta-+ get a prompt asking for a name and after hitting Return I got a new workspace. Hitting Meta-s gives me a prompt I can use for web searches or opening an url, I either type “http://…” for an url (yes that’s like in the stone ages, but that’s the price I have to pay) or just a word to search in google or prefix the search with one of several keywords like “amazon:” “imdb:”, … and search there. Last but not least GridSelect on pressing Meta-t I get 2D Grid with all workspaces I have configured (or later created). The ones I created earlier, i.e., further to the top in the configuration are more to the centre and reachable with fewer keystrokes of the arrow keys. Same goes for Meta-g for all open applications. And last but not least I have Meta-Space giving me a dmenu to launch any application by typing an infix (most of the time I go with a prefix).

As a little visual gimmick I also added is FadeInactive, which makes windows not having the focus 25% transparent. For me this helps with distractions. I fine tuned the value so that if I am concentrated on the focused window I don’t even notice movement in those windows, like new messages on irc, but if I look specifically at that window I can still make out what is written there so that I know if I have to react.

Here are the files

As always I hope this proves useful for someone so I give you the files: The main file xmonad.hs and the Topics.hs which generates the topic space configuration. You will obviously want to change the configuration to your needs, but I think it should be obvious how to do that.

And before I get asked where to put these files, the xmonad.hs goes in your .xmonad directory the Topic.hs in .xmonad/lib/Topics/ and than everything should work out fine after a xmonad –recompile.

And just for the reference here are some screenshots of the Desktop

Desktop Screenshot

and the creation of this blog post.

Blogpost Screenshot

Happy tiling.

January 19, 2014 12:00 AM

January 12, 2014


Challenges ahead

Every year I set out to learn something new, and just to keep a memory of that and maybe for you to hold me to what I “promised” I’d like to post it here.

Last year’s challenge

Last year saw an end to a tradition at least in some sense. Usually one of the challenges I set myself is to learn an new language. Which in the past meant a new programming language, see below. For the last 27 years that meant that I sit down in the beginning of the year select one language and go through with learning it. Since the first programming language I ever learnt was Common Lisp with the age of 6 years, it most of the time took only have a year to do that. There is some merit to learning something bizarrely abstract first and seeing everything as a concretasation of that. This year that somewhat went south with python.


You probably would have guessed I would have Python under my belt long ago, but it never seemed to be the right choice. Can’t really say why. Last year it seemed like every new topic with a technical solution had Python as any part of it may it be data visualisation, data journalism or type design. I thought it might be a good idea to learn it myself.

Actually this failed miserably for me and I think it’s due to the same reason Python is a perfect language as a first programming language. There are no surprises, there was no new concept I didn’t have encountered in a language I learned before. This might be due to me not digging deep enough, but I think/hope this is deliberate. There are some quirks with Unicode, but which programming language doesn’t have those. The next problem for me was, there seems to be no book “Python as your 27th programming language” every book and resource, tried to explain to me how to program and on the side explain Python to me. This is perfect if this is your first programming language, but if you just want to learn syntax and semantics it bares the danger of boring you out of your mind, as it did with me. So after about 3 weeks I quit, which is unfortunate, I will have to make another attempt later.

Nevertheless I still managed to learn a new programming language.


I had obviously copied javascript snippets for some “cool” website effects before and had used it for map-reduce in CouchDB. What I hadn’t done was bother to learn the language by heart. But after Node.js gained traction in my surrounding last year, I saw there is more to it than just little effects on website. So I set out to learn Javascript and what better than a real challenge to begin with it. I volunteered to hold a AngularJS Talk within 8 weeks of starting to understand what Javascript was. Basically a Scheme with a C like syntax, but don’t tell anyone they might get scared off. So after 14 weeks I held a talk where I could write complex code within AngularJS, 10 weeks later I was able to write and optimise code in Node.JS and by now I know another reason to dislike Internet Explorer. So in the end it worked out to learn a new language, I’m only dissatisfied that it wasn’t the one I was originally aiming for.

This year’s Challenge

For this year’s challenge I thought I switch the theme, or at least change the direction a little. For the last 27 years I tried to learn a new language every year. And for the last 27 years these challenges where always to learn a new programming language, as this somewhat failed this year at least in the sense I’d like to have had it, I this time try to learn a natural language instead.


I’d like to learn Norwegian, and before anyone says anything, I already now that it’s not Norwegian but Bookmal. I have no explanation why I choose this except maybe to be somewhat original and not learn Japanese like all the other Nerds. I have almost no connection to Norway what so ever, have never seen Norwegian television and have probably never been exposed to more than a few sentences. But I’m somehow under the impression that there is a familiarity to German. Actually while writing this I already have some course material and have had a look into some television. So this is not only a impression anymore. Let’s see what I will post in one years time about this topic.


The other challenge I thought I give myself, is to learn UX or User Experience Design, I deem it a skill anybody who is involved with programming anything should know at least a little about. I actually knew almost nothing about that two days ago by now I have read half a book on it and slowly getting a grip on it. So I can’t really say much more but this will obviously be a topic to post about in this blog in the future.

January 12, 2014 12:00 AM

December 25, 2013


A highlighting plugin for PDF files

In my last post, I used ikiwiki‘s highlight plugin to highlight PDF files. But since the underlying highlight library did not support highlighting for PDF files yet, I had to write my own highlighting definition. Due to limitiations in the library, it's not perfect; for example, it does not highlight things inside streams, but in case you’re interested, you can get the source:

December 25, 2013 08:47 PM

December 16, 2013


Weiße cis-hetero-Männer erklären die Welt

Weiße cis-hetero-Männer erklären gerne die Welt. Sie haben nämlich gelernt, dass das ihr Platz in der Gesellschaft ist, dass sie die Definitionshoheit haben und dass ihnen Gehör geschenkt wird. Von anderen weißen cis-hetero-Männern. Und das ist ja schließlich die relevante Zielgruppe, die erreicht und angesprochen werden muss, denn sie haben die Definitionshoheit, ihnen wird Gehör geschenkt und sie können uns dann besser die Welt erklären, wie es ihre angestammte Rolle ist.

Menschen aus marginalisierten Gruppen hingegen sind marginalisiert. Das heißt, sie haben keine Definitionshoheit, ihr Platz in der Gesellschaft ist auf den Zuschauerbänken. Wenn sie dort schön brav sitzen bleiben und den weisen (oh, Verzeihung, Tippfehler) cis-hetero-Männern lauschen und applaudieren, dann werden sie geduldet, denn unsere Gesellschaft ist schließlich tolerant! Wenn sie aber wagen, sich das Wort zu nehmen, einen eigenen Standpunkt zu haben und die eigenen Belange zu vertreten, dann werden sie niedergebrüllt von einem Sturm der Entrüstung. Denn dann nehmen sie Platz ein, der ihnen angestammtermaßen nicht zusteht: den Platz der weißen cis-hetero-Männer.

Die klare Schlussfolgerung aus diesen Überlegungen: weiße cis-hetero-Männer müssen anderen weißen cis-hetero-Männern erklären, dass diese Strukturen diskriminierend sind und wie man sie ändern kann. Denn den Marginalisierten wird ja nicht zugehört. Also müssen die weißen cis-hetero-Männer wieder das tun, was sie so gerne tun und daher auch so gut können: anderen weißen cis-hetero-Männern die Welt erklären.

Und was lernen wir daraus? Unsere Rettung besteht darin, dass weiße cis-hetero-Männer sich gegenseitig die Welt erklären. Vielen Dank für die Aufmerksamkeit.

by felis at December 16, 2013 01:47 PM

December 15, 2013


You say potato …

One of the very few traditions I hold dear is my/our families Christmas dinner, which is potato salad and wieners. Actually this is one of the Christmas dinners that is tradition all over Germany, independent of social status and wealth. I actually don’t know how it developed but I would assume that if you ask three Germans what they eat on Christmas eve, at least one would answer potato salad.

Another “tradition”, at least in my family, is that we don’t have a recipe handed down the generations, but each generation makes up their own. So after the click you will find my attempt at an recipe.

Oh, one more thing, in Germany there is a big divide, in the south potato salad is usually eaten with a stock and vinegar “dressing” in the north with mayonnaise. It’s basically a religious war (don’t ask), so what I tried to do is to anger both parties alike in creating a recipe using both.

Shopping List

  • 2kg (4,4092452 lb) Potatoes
  • 150g (5,2910943 oz) Onions
  • 1/2 l Stock
  • Vinegar
  • Mustard
  • 5 Eggs
  • Baloney
  • Gherkins
  • 250g (8,8184905 oz) Mayonnaise
  • Salt
  • Pepper
  • Sugar

should you make your own mayonnaise you will also have to get

  • Oil (best use a flavourless one)
  • Crème Fraîche
  • 2 (extra) Eggs


For the mayonnaise

  1. Blend two egg yolks
  2. Add pepper and salt
  3. Add about a tablespoon of mustard
  4. While blending pour a steady stream of oil (about 250 ml (0,5283441 pt)) into the mix
  5. Add about a table spoon of Crème Fraîche

For the potato salad

  1. Cook potatoes, best a day before making the salad.
  2. Chop potatoes, either in slices or bite size.
  3. Chop Onions
  4. Cook eggs, about 6 minutes, they should be liquid anymore but not cooked hard.
  5. Chop gherkins, baloney and eggs, fine, you can already mix these.
  6. Mix potatoes and onions.
  7. Prepare vinegar and stock
    1. Mix Stock with 5 tablespoons of vinegar, a tablespoon of mustard, salt, pepper and a little sugar
    2. Cook Stock
    3. Let the mix cool down so that it is only lukewarm
  8. Mix vinegar-stock with potato-onions and wait about 5-10 Minutes
  9. Mix with chopped gherkins, baloney, eggs.
  10. Mix with Mayonnaise.
  11. Wait at least 1h.

Bon appetite.

In anticipation of me not being able to blog, due to me having little time the next two weeks, have a nice holiday and a happy new year.

December 15, 2013 12:00 AM

December 08, 2013


Everybody gets one

In the recent past I started working on a document management system for our department at the university again. And since I like CouchDB very much and it is perfect for the job due to it’s superb replication abilities I opted for using it. As part of that is a quite involved replication scheme, someone going to a conference and only having restricted or flunky internet access, like I had three month ago while on a conference in Shanghai, is a common case in academia. In search of some examples on replication setups I touched on per-user databases, which are commonly tossed around for restricting read access in CouchDB. What I couldn’t find actually was an example on how to set those up. So this is an attempt to explain per-user databases in a modestly complex example.


Let’s say part of your application is a (private) messaging system. Since from time to time someone is going on the road, and has only limited access to the internet, you want to allow them to replicate their messages to their local machine to have offline access to them.


Since CouchDB restricts read access on a per-database level, i.e., if you have read access to a database you can read the whole of it, anybody who has a look at the replication endpoints you set up now has access to all private messages. This is done simply by setting up their own replication, independent of your application.

The solution

The solutions are per-user databases. They work basically as follows: Every user, at least for the messages, get’s their own database, which due to filtered replication only contains those messages where the specified user is sender or recipient. Since this filtered replication is done on the server that user can’t change the replication scheme. If you now replicate the data for offline usage, you only replicate the user’s database. Even if that user is savvy enough to find out the replication endpoints he can’t get to the private messages of the other users, since they aren’t actually in the database.

The setup

Now let us set up such a system. Let’s assume that we have an admin set up on the central CouchDB instance called “admin” with password “password”, that the database in question is called “messages” and that a message contain one field sender, and one recipient field, like this:

	'sender': 'sender',
	'recipient': ['recipient1', 'recipient2'],

We can now write a simple filter function and put it in a design document:

	'_id': '_design/filters'
	'filters': {
		'userMessageFilter': 'function (doc, req) { return doc.sender === req.params.user || doc.recipient.indexOf(req.params.user) !== -1; }'

this will filter out all documents where the user given as a parameters is neither sender nor receiver.

We now restrict access to the messages database to only the admin user simply by setting the “_security" property.

curl -X POST http://admin:password@localhost:5984/messages/_security -d '{"admins": { "names": ["admin"], "roles": [] }, "members":{ "names": ["admin"], "roles": [] } }' -H "Content-Type: application/json"

Next we can create a user

curl -X POST http://admin:password@localhost:5984/_users -d '{"_id": "org.couchdb.user:user1", "type": "user", "name": "user1", "roles": [], "password": "123"}' -H "Content-Type: application/json"

and a matching database

curl -X PUT http://admin:password@localhost:5984/user1messages'

and set it to be only readable by that user

curl -X POST http://admin:password@localhost:5984/user1messages/_security -d '{"admins": { "names": [""], "roles": [] }, "members":{ "names": ["user1"], "roles": [] } }' -H "Content-Type: application/json"

Let’s review: So far we have two databases “messages” and “user1messages”. The “messages” database can only be accessed by admin, the user1message only by user1. The “messages” database contains all messages from and to all users in the system. To now let user1 read their messages we need to set up replication.


What we want is that if someone writes a message to user1 it get’s into the “messages” database is replicated to “user1messages” where user1 can then read it. As well as the other way around user1 writes a message to someone put’s it into “user1messages” this get’s replicated to “messages” and on the other side back down into the recipients respective databases.

First the direction “messages” to “user1messages” we have to put the following document into the _replicate database:

	'source': 'http://admin:password@localhost:5984/messages', 
	'target': 'http://admin:password@localhost:5984/user1messages'
	'filter': 'filters/userMessageFilter'
	'query_params': '{"user": "user1"}',
	'continuous': true

For the other direction it is equally simple we just have to switch source and target and remove the filter.

	'source': 'http://admin:password@localhost:5984/user1messages'
	'target': 'http://admin:password@localhost:5984/messages', 
	'continuous': true

If we do that for all users we get the behaviour we wanted, that all users get their messages via replication to and from the central database.


The last remaining step is to give user1 their access token and their database and you are done. At least for the read access part. What I showed above still allows user1 to write arbitrary documents to user1messages which will be replicated to the central database. This can be handled with validat_update functions, but that is topic for another blog post, I hope I get to next week.

December 08, 2013 12:00 AM

December 01, 2013


Late to the party

Since I bought my first iPad this week, the new iPad Air to be precise, this weeks post basically wrote itself. Actually two blog post would be rather foreseeable. One which has me raving about how much I like my newest gadget. This I’d like to postpone a little to have a fair chance of disliking something. And one about what applications made their way into my daily workflow within one week (3 days actually) and could therefor very well be must haves. To be fair I like to postpone the first of these a bit, to give myself the fair chance to dislike something, at the moment the “New-Gadget-High” is still present, so it wouldn’t be a very good review.

Let’s go with what made it into my workflow within a week.


I presume everybody has heard of Evernote. If not, it’s basically your long term memory in the cloud. Thanks to ifttt, browser extensions and several applications, I use, almost every text I produce or consume finds its way into Evernote for later recollection. I am by now probably way to dependent on it and wouldn’t be able to work without it. So at least for me the iPad version was a must have. The larger screen, compared to the iPhone, makes it much easier to work on notes.

Minor dent, I think the iPad version is not as well thought out as the iPhone version, which was specially designed to cope with the limited space on the device. Most annoying for me: To be able to read some of the clippings I took of websites, I have to tab once for the notebook, once for the note and once more to put the note in full screen mode. But I thinks future updates will fix such things.


Since annotating PDF, for example for students theses or for my own research was part of the reason to finally get an iPad, I had to get an Annotation software. Lucky for me in the last episode of the Raummaschine iAnnotate was mentioned so I thought I give it a spin. And it seems that this was the right decision. Even if I would just use it as a PDF viewer it would be a recommendation, one that is a little expensive but nevertheless. Annotating is easy and fast. What I like even more is that the Interface get’s out of your way and you can concentrate completely on the text. What I at least haven’t found yet and would really like is a read mode, where the current column is zoomed and by some gesture I scroll “along” the flow of the text.

Reeder 2

I have to admit I have somewhat of a problem with news readers the problem isn’t that much that I don’t like them, but since Reeder on the Mac has currently no syncing back end. Due to the demise of Google Reader, I have to go to Feedbin myself and to be honest I forgot to do so several times for a week. Coming back to 5000 unread articles leaves you only one choice, declaring defeat and marking everything as read.

My workflow was: In the morning, a little before my alarm rings my Mac wakes up from sleep mode automatically, opens several Applications like MailMate and Reeder and when I get to the Computer everything is preloaded. When I’m done I close the Applications and they open again when I open my Mac again, when I’m home. This still works for MailMate, but completely falls apart for Feedbin. The reason being, that I simply don’t close Safari all the time. There are usually some tabs I keep around for various reasons. So if I open Feedbin it opens on a random screens, which I’m not currently seeing and so I easyly forget about it.

Since Reeder on iOS already has support for Feedbin my routine changed. In the morning I grab the iPad start by opening Reeder which is on the first page of the iPad while I walk into the kitchen for breakfast. It’s almost like my father who was always reading the morning newspaper while preparing breakfast. So I can picture myself remaining with reading on the iPad even when Reeder on the Mac gets updated.


In the end I’m still a nerd and like the command line for it’s simplicity to add to that I really like EMACS on the command line. Which for some strange reason seems not be a standard use case for the iPad. Thankfully there is iSSH, which nomen est omen allows you to make SSH connections. This puts my tmux sessions on my Mac, my work machine and on my servers on my fingertips and not even just the proverbial ones. One nice feature of iSSH is that it supports mosh which allows faster re-connection and keeps a session even if it is disconnected due to you losing reception for some time.

Minor dent: The mosh support is hidden a little to good for my taste, I actually couldn’t tell you where to find it off the top of my head.

AirVideo HD

Now to some relaxing stuff. For me the iPad is perfect for sitting around watching videos and AirVideo allows me to do just that. After downloading the server to my Mac and telling it which folder to publish on my home network I can select and watch videos anywhere I go. Actually with a little more configuration I could even do that from outside of my home given that the internet connection is fast enough. As an added bonus if your video is not in h264 format you can selects to convert it (on the fly) directly from the iPad. And as I just found out there is a Linux version of the server too. Working installations on an Raspberry Pi have also been spotted in the wild google tells me, so I will probably set this up later. As I said: I am a Nerd.


Last but not least: iAWriter. Contrary to popular believe you are very well able to produce content on your iPad even without having a bluetooth keyboard paired with it. This whole blog post, for example, was written with the split on screen keyboard of the iPad in iAWriter. Despite some getting use to the keyboard positions of the return key which is a little unusual for the German keyboard, I was not that much slower than I could have been. Especially since I like to do this thinking in between typing random characters into my keyboard. The need for thinking makes the iPad with iAWriter perfect. iAWriter is a distraction free writing tool, which is to say while you are writing there is nothing more than your text and the keyboard on screen. If you switch to the integrated focus mode even just the current sentence is highlighted and centred on the screen. No auto correction bubbles and no lines under supposedly misspelled words. And even though this is quite dangerous for a dyslexic it keeps me focused on the content. So if you like me write your blog posts in markdown this might be the tool for you.


I hope that I have suggested at last on application you didn’t know about or at least not use before. But actually this post for me is more interesting for the comments. Since if you have any suggestions on what I should definitely try, I would be very interested. So please leave me a comment with what you think are must have Apps on the iPad.

December 01, 2013 12:00 AM

November 19, 2013


Hasserfüllt und verbittert

Diesen Text haben @Literalschaden, @Tofutastisch und ich gemeinsam geschrieben. Er ist also auch hier und hier zu finden.

Ein Tweet am Dienstagabend und eine entstehende Diskussion über verbitterten und hasserfüllten Feminismus. Wir wollen den Tweet nicht verlinken; es geht uns nicht darum, die Person, von der er kam, bloßzustellen oder anzugreifen. Aber wir wollten uns mit den Begrifflichkeiten auseinandersetzen. Also heute: Warum sind wir manchmal verbittert und hasserfüllt?

An jedem Tag, an dem wir das Haus verlassen, begegnen uns Street Harassment, Diskriminierung und Sexismus. Wir können nichts dagegen tun. Wenn wir uns wehren sind wir „die Wilde“. Die „Eigensinnige“. Die „Überemotionale“. Wenn wir es ignorieren? „Die Kühle“. „Die Ignorante“. „Die Überhebliche“. „Die Schüchterne“. Letztlich gibt es nichts, was wir ausrichten könnten. Und das ist auch nicht unsere Aufgabe. Es sollte nicht unsere Verantwortung sein uns zu schützen, sondern die der Übergriffigen, Diskrimierenden, nicht übergriffig, sexistisch, diskriminierend zu sein; zu handeln.

Das frustriert uns. Macht uns wütend. Macht uns traurig. Macht uns hasserfüllt und verbittert.

Wir finden es auch toll, wenn es Feministinnen gibt, die aufopferungsvoll erklären. Die lieb und nett sagen, warum sie denn bitte nicht diskriminiert werden wollen. Machen wir sogar selbst ganz oft. Oder bemühen uns zumindest. Aber das heißt noch lange nicht, dass irgendjemand* von uns erwarten darf, dass wir lieb und nett erklären. Wir sind nämlich nicht immer lieb und nett. Wir sind Menschen, die diskriminiert, verletzt, eingeschüchtert werden. Und das darf uns wütend machen. Unsere Wut, unser Hass, unsere Verbitterung. Das ist kein Entschluss gewesen, dass wir jetzt verbittert sind. Das war dann plötzlich so. Dumm gelaufen. Da haben diskriminierende Strukturen, sexistische Bemerkungen und übergriffiges Verhalten und der ständige Kampf gegen ein übermächtiges System uns verbittert.

Und dann kommt es: Ich darf aber nicht verbittert sein. Denn dann bin ich nicht mehr die Gute, die Liebe. Die Guten, die was Gutes wollen, die sind nicht verbittert. Oder?

Gerne heißt es dann, wir würden damit „der Sache“ schaden. „Dem Feminismus ist nicht geholfen, wenn ihr so unfreundlich seid!“ Als wäre „der Feminismus“ dafür da, sich bei möglichst vielen Leuten anzubiedern und Absolution zu bekommen. Wir sind aber nicht Feministinnen, weil es uns so viel Spaß macht, heroisch für irgendein abstraktes Ideal zu kämpfen. Sondern um uns zu empowern; um mit der Einschüchterung, dem Harrassment, der Diskriminierung klarzukommen. Und zum Empowerment gehört auch unsere Wut. Sie runterzuschlucken ist nicht empowernd. Es ist eine erneute Verletzung, ein erneutes Kleingemacht werden. Menschen, die von struktureller Diskriminierung betroffen sind, erleben im Alltag ständig Situationen, die sie verletzen, ängstigen und_oder wütend machen. Das liegt in der Natur von Diskriminierung. Diesen Menschen ihre Wut und ihren Hass auf die Unterdrückenden und das von diesem geprägte System abzusprechen oder diese Gefühle als schlecht/falsch zu bewerten, reproduziert das System und relativiert die erfahrene Ungerechtigkeit.

Wir wollen unsere Gefühle nicht in uns hineinfressen, um den schönen Schein zu wahren. Vor allem nicht in einer Bewegung, die für uns da ist. Es geht nicht darum, den Vertretern* der Machtstukturen irgendetwas zu erklären und das möglichst freundlich. Es geht nicht darum, sich möglichst gut dem diskriminierenden System anzupassen, damit die Machthabenden sich möglichst wohl fühlen. Es geht darum, an dem System zu rütteln und sich die Macht zu erobern, die einer zusteht. Das bedeutet aber, dass aktuell Machthabende etwas von ihrer Macht, die sie als selbstverständlich erachten, weil sie sie nicht reflektieren, abgeben müssten. Und da die meisten das nicht freiwillig tun, bleibt denen, die in der benachteiligten Position sind, oft nichts anderes übrig, als die Machthabenden zu bekämpfen. And guess what: Wut, Ärger und Hass können ein guter Motivator sein gegen das lähmende, allgegenwärtige Gefühl, dass dieses System stärker ist als wir.

Das Argument, dass ein Kommunizieren von Diskriminierung/… nicht akzeptabel ist, weil es nicht nett rübergebracht wird, nennt sich auch Tone Argument. Eine gute Erklärung dazu, was ein Tone Argument ist, gibt es hier von @baum_glueck.

Die Aufforderung, nett zu sein ist ein klassisches „Argument“ von Concern Trolls.

by felis at November 19, 2013 10:23 PM

November 18, 2013


Starting to minecraft – a woman’s perspective

A couple weeks ago I was infected with a kind of virus that seems to be circulating in this online world in general and in my immediate peergroup in particular. My infection happened to coincide with a „real“ bodily illness, that prevented me1 from leaving my bed but not from using my hands and thus operating my computer. And, as I had read about this highly enjoyable and versatile game in some blog posts recently (here and here – disclaimer: these posts are written in German), I decided to try it out just to kill a bit of time. Well… the time killing seemed to work all too well. I had barely even started to manage without beeing converted into a zombie’s breakfast or being blown to bits and pieces by a creeper when I realised it was getting dark out (and by out I mean outside in that other world that is not minecraft) and I had not eaten breakfast nor lunch. That realisation however did not, as you might expect, induce me to put aside my dedicated minecraft device and find some „real“ food in the „real“ world. Instead I „just wanted to finish up my project…“ before getting something to eat. A few hours later… had not my heartsperson brought me some food and forced me to eat up, I probably would have gone without nourishment that day.

To cut a long and obviously not unheard of story short: I have been spending a lot of time playing minecraft since and I have enjoyed it tremendously2. I have however been bothered by one thing: For some reason that eludes me the game seemed to assume, that I was a dude or at least, that I didn’t mind running around the world as a dude. And since I didn’t have much of a choice3 that’s what I did for the first few days. But, well, I actually did mind. I am not a dude nor do I usually choose to be percieved as such, so having this male appearance (and identity, since the default player’s name is „Steve“) forced upon me kinda annoyed me. I would have preferred having a neutral name and a more neutral appearence when starting out.

As it was, I was forced to customize my player skin and since I’m not much of an artist, I tried to find a suitable skin online, that I could utilize. I was not looking for anything fancy, just a very basic skin, much like „Steve“ but without the beard and maybe with a bit more feminine hair. Boy, was I dissapointed. Every female skin I found was „prettied up“ with make-up and „sexy“ clothes, meaning short pants and lowcut tops or even just some kind of weird squarekini. Some didn’t wear any clothes at all. So, this was to be my choice? Run around as dude or be the „sexy lady“? Thanks, but no thanks. So, I went ahead and tried to create my own skin by mashing up Steve with a naked lady (nope, no kinky stuff!) and doing a little tweaking here and there. This is the result:

Front and Back View
front view back view

I don’t know if I want to keep this look indefinitely4, but for now it works fine. Only took me a few hours, that I could have spent playing, if I had been what seems to be the default: a dude. We do, after all, live in a dude’s world.

If anyone should want to use this skin, feel free. Here you go:

EDIT: As soon as I had published this post, I began to be unsatisfied with this version, so I kept tweaking and fiddling and now there is a revised Verson:

Front and Back View
front view back view

And here’s the new skin file:

EDIT II: This post by Minecraft’s original developer Notch states, that he regrets having „named“ the character Steve and thereby creating_encouraging it’s percepion as the „Mincraft Guy“. (While I appreciate this statement, it still doesn’t change the above described experience though.)

  1. well, almost prevented me…
  2. of course not so much the creeper attacks, but… eh, they just want a hug, whatcha gonna do? Gotta love the sneaky, green, volatile buggers
  3. in the beginning, remember? I was just learning how to open doors and didn’t concern myself with skins and the likes
  4. before you laugh, because it looks stupid, please remember, I’m just starting out

by felis at November 18, 2013 08:02 PM

November 17, 2013


Optimizing XSane's scanned PDFs (also: PDF internals)


I use XSane to scan documents for my digital archive. I want them to be in PDF format and have a reasonable resolution (better than 200 dpi, so I can try OCRing them afterwards). However, the PDFs created by XSane’s multipage mode are too large, about 250 MB for a 20-page document scanned at 200 dpi.

XSane’s Multipage mode

First (non-optimal) solution

At first, I tried to optimize the PDF using GhostScript. I already wrote about how GhostScript’s -dPDFSETTINGS option can be used to minimize PDFs by redering the pictures to a smaller resolution. In fact, there are multiple rendering modes (screen for 96 dpi, ebook for 150 dpi, printer for 300 dpi, and prepress for color-preserving 300 dpi), but they are pre-defined, and for my 200 dpi images, ebook was not enough (I would lose resolution), while printer was too high and would only enlarge the PDF.

Interlude: PDF Internals

The best thing to do was to find out how the images were embedded in the PDF. Since most PDF files are also partly human-readable, I opened my file with vim. (Also, I was surprised that vim has syntax highlighting for PDF.) Before we continue, I'll give a short introduction to the PDF file format (for the long version, see Adobe’s PDF reference).

Building Blocks

Every PDF file starts with the magic string that identifies the version of the standard which the document conforms to, like %PDF-1.4. After that, a PDF document is made up of the following objects:

Boolean values
true and false
Integers and floating-point numbers
for example, 1337, -23.42 and .1415
  • interpreted as literal characters when enclosed in parentheses: (This is a string.) These can contain escaped characters, particularly escaped closing braces and control characters: (This string contains a literal \) and some\n newlines.\n).
  • interpreted as hexadecimal data when enclosed in angled brackets: <53 61 6D 70 6C 65> equals (Sample).
starting with a forward slash, like /Type. You can think of them like identifiers in programming languages.
enclosed in square brackets: [ -1 4 6 (A String) /AName [ (strings in arrays in arrays!) ] ]
key-value stores, which are enclosed in double angled brackets. The key must be a name, the value can be any object. Keys and values are given in turns, beginning with the first key: << /FirstKey (First Value) /SecondKey 3.14 /ThirdKey /ANameAsValue >> Usually, the first key is /Type and defines what the dictionary actually describes.
Stream Objects
a collection of bytes. In contrast to strings, stream objects are usually used for large amount of data which may not be read entirely, while strings are always read as a whole. For example, streams can be used to embed images or metadata.
Streams consist of a dictionary, followed by the keyword stream, the raw content of the stream, and the keyword endstream. The dictionary describes the stream’s length and the filters that have been applied to it, which basically define the encoding the data is stored in. For example, data streams can be compressed with various algorithms.
The Null Object
Represented by the literal string null.
Indirect Objects
Every object in a PDF document can also be stored as a indirect object, which means that it is given a label and can be used multiple times in the document. The label consists of two numbers, a positive object number (which makes the object unique) and a non-negative generation number (which allows to incrementally update objects by appending to the file).
Indirect objects are defined by their object number, followed by their generation number, the keyword obj, the contents of the object, and the keyword endobj. Example: 1 0 obj (I'm an object!) endobj defines the indirect object with object number 1 and generation number 0, which consists only of the string “I'm an object!”. Likewise, more complex data structures can be labeled with indirect objects.
Referencing an indirect object works by giving the object and generation number, followed by an uppercase R: 1 0 R references the object created above. References can be used everywhere where a (direct) object could be used instead.

Using these object, a PDF document builds up a tree structure, starting from the root object, which has the object number 1 and is a dictionary with the value /Catalog assigned to the key /Type. The other values of this dictionary point to the objects describing the outlines and pages of the document, which in turn reference other objects describing single pages, which point to objects describing drawing operations or text blocks, etc.

Dissecting the PDFs created by XSane

Now that we know how a PDF document looks like, we can go back to out initial problem and try to find out why my PDF file was so huge. I will walk you through the PDF object by object.


1 0 obj
   << /Type /Catalog
      /Outlines 2 0 R
      /Pages 3 0 R

This is just the magic string declaring the document as PDF-1.4, and the root object with object number 1, which references objects number 2 for Outlines and number 3 for Pages. We're not interested in outlines, let's look at the pages.

3 0 obj
   << /Type /Pages
      /Kids [
             6 0 R
             8 0 R
             10 0 R
             12 0 R
      /Count 4

OK, apparently this document has four pages, which are referenced by objects number 6, 8, 10 and 12. This makes sense, since I scanned four pages ;-)

Let's start with object number 6:

6 0 obj
    << /Type /Page
       /Parent 3 0 R
       /MediaBox [0 0 596 842]
       /Contents 7 0 R
       /Resources << /ProcSet 8 0 R >>

We see that object number 6 is a page object, and the actual content is in object number 7. More redirection, yay!

7 0 obj
    << /Length 2678332     >>
1 0 0 1 0 0 cm
1.000000 0.000000 -0.000000 1.000000 0 0 cm
595.080017 0 0 841.679993 0 0 cm
  /W 1653
  /H 2338
  /CS /G
  /BPC 8
  /F /FlateDecode
x$¼[$;¾åù!fú¥¡aæátq.4§ [ ...byte stream shortened... ]

Aha, here is where the magic happens. Object number 7 is a stream object of 2,678,332 bytes (about 2 MB) and contains drawing operations! After skipping around a bit in Adobe’s PDF reference (chapters 3 and 4), here is the annotated version of the stream content:

q                 % Save drawing context
1 0 0 1 0 0 cm    % Set up coordinate space for image
1.000000 0.000000 -0.000000 1.000000 0 0 cm
595.080017 0 0 841.679993 0 0 cm
BI                % Begin Image
  /W 1653           % Image width is 1653 pixel
  /H 2338           % Image height is 2338 pixel
  /CS /G            % Color space is Gray
  /BPC 8            % 8 bits per pixel
  /F /FlateDecode   % Filters: data is Deflate-compressed
ID                % Image Data follows:
x$¼[$;¾åù!fú¥¡aæátq.4§ [ ...byte stream shortened... ]
EI                % End Image
Q                 % Restore drawing context

So now we know why the PDF was so huge: the line /F /FlateDecode tells us that the image data is stored losslessly with Deflate compression (this is basically what PNG uses). However, scanned images, as well as photographed pictures, have the tendency to become very big when stored losslessly, due to te fact that image sensors always add noise from the universe and lossless compression also has to take account of this noise. In contrast, lossy compression like JPEG, which uses discrete cosine transform, only has to approximate the image (and therefore the noise from the sensor) to a certain degree, therefore reducing the space needed to save the image. And the PDF standard also allows image data to be DCT-compressed, by adding /DCTDecode to the filters.

Second solution: use a (better) compression algorithm

Now that I knew where the problem was, I could try to create PDFs with DCT compression. I still had the original, uncompressed PNM files that fell out of XSane’ multipage mode (just look in the multipage project folder), so I started to play around a bit with ImageMagick’s convert tool, which can also convert images to PDF.

Converting PNM to PDF

First, I tried converting the umcompressed PNM to PDF:

$ convert image*.pnm document.pdf

convert generally takes parameters of the form inputfile outputfile, but it also allows us to specify more than one input file (which is somehow undocumented in the man page). In that case it tries to create multi-page documents, if possible. With PDF as output format, this results in one input file per page.

The embedded image objects looked somewhat like the following:

8 0 obj
    /Type /XObject
    /Subtype /Image
    /Name /Im0
    /Filter [ /RunLengthDecode ]
    /Width 1653
    /Height 2338
    /ColorSpace 10 0 R
    /BitsPerComponent 8
    /Length 9 0 R
% [ raw byte data ]

The filter /RunLengthDecode indicates that the stream data is compressed with Run-length encoding, another simple lossless compression. Not what I wanted. (Apart from that, convert embeds images as XObjects, but there is not much difference to the inline images described above.)

Converting PNM to JPG, then to PDF

Next, I converted the PNMs to JPG, then to PDF.

$ convert image*.pnm image.jpg
$ convert image*jpg document.pdf

(The first command creates the output files image-1.jpg, image-2.jpg, etc., since JPG does not support multiple pages in one file.)

When looking at the PDF, we see that we now have DCT-compressed images inside the PDF:

8 0 obj
    /Type /XObject
    /Subtype /Image
    /Name /Im0
    /Filter [ /DCTDecode ]
    /Width 1653
    /Height 2338
    /ColorSpace 10 0 R
    /BitsPerComponent 8
    /Length 9 0 R
% [ raw byte data ]

Converting PNM to JPG, then to PDF, and fix page size

However, the pages in document.pdf are 82.47×58.31 cm, which results in about 72 dpi in respect to the size of the original images. But convert also allows us to specify the pixel density, so we'll set that to 200 dpi in X and Y direction, which was the resolution at which the images were scanned:

$ convert image*jpg -density 200x200 document.pdf

Update: You can also use the -page parameter to set the page size directly. It takes a multitude of predefined paper formats (see link) and will do the pixel density calculation for you, as well as adding any neccessary offset if the image ratio is not quite exact:

$ convert image*jpg -page A4 document.pdf

With that approach, I could reduce the size of my PDF from 250 MB with losslessly compressed images to 38 MB with DCT compression.

Too long, didn’t read

Here’s the gist for you:

  • Read the article above, it’s very comprehensive :P
  • Use convert on XSane’s multipage images and specify your scanning resolution:

    $ convert image*.pnm image.jpg
    $ convert image*jpg -density 200x200 document.pdf

Further reading

There is probably software out there which does those thing for you, with a shiny user interface, but I could not find one quickly. What I did find though, was this detailed article, which describes how to get high-resolution scans wihh OCR information in PDF/A and DjVu format, using scantailor and unpaper.

Also, Didier Stevens helped me understand stream objects in in his illustrated blogpost. He seems to write about PDF more often, and it was fun to poke around in his blog. There is also a nice script, pdf-parser, which helps you visualize the structure of a PDF document.

November 17, 2013 10:58 PM

Sash42 (englisch)

Feminism and sexism

What is feminism? I like the definition “Feminism is the radical idea that women are people”.

Feminism can also be defined via its antagonist, by what it tries to fight: sexism. So what is sexism?

Sexism is the systematic structural society-wide oppression, disadvantaging and devaluing of women and devaluing of everything feminine, i.e. everything that is considered typically female in the society.

On a more abstract level it is the discrimination and domination of one gender (in societies with three or more traditional genders usually: of all genders but one) by the other one. In the few remaining matriarchic societies sexism is indeed the discrimination of men, and there there could be masculist movements that fight the discrimination of men.

In most societies that currently exist on this planet, e.g. in all of those in Europe and North America (as far as I am aware including Native Americans) men are the privileged and dominant, i.e. systematically advantaged group.

Feminism fights for equality between women and men. As women are the marginalized group, it fights for women. This is why it’s called feminism, and there is no reason to rename it to e.g. equalism.

by Sash at November 17, 2013 10:42 PM

Sash42 (deutsch)

Feminismus und Sexismus

Was ist Feminismus? Mir gefällt die Definition „Feminism is the radical idea that women are people“, „Feminismus ist die radikale Idee, dass Frauen Personen sind“.

Feminismus kann auch gut über seinen Antagonisten definiert werden, darüber, was er versucht zu bekämpfen: Sexismus. Was ist also Sexismus?

Sexismus ist die systematische strukturelle gesellschaftsweite Unterdrückung, Benachteiligung und Abwertung von Frauen und Abwertung von allem Femininem, also allem, was in der jeweiligen Gesellschaft als typisch weiblich betrachtet wird.

Abstrakter gesagt ist es die Diskriminierung und Dominierung eines Geschlechts (in Gesellschaften mit traditionell drei oder mehr Geschlechtern meist: aller Geschlechter bis auf einem) durch das andere. In den wenigen verbleibenden matriarchalischen Gesellschaften ist Sexismus also tatsächlich die Diskriminierung von Männern, und dort könnte es maskulistische Bewegungen geben, die gegen die Diskriminierung von Männern kämpfen.

In den allermeisten Gesellschaften die aktuell auf diesem Planeten existieren, z.B. in allen in Europa und Nordamerika (soweit mir bekannt ist einschließlich der Ureinwohner), sind jedoch die Männer die privilegierte und dominante, also systematisch bevorteilte Gruppe.

Feminismus kämpft für die Gleichstellung von Frauen und Männern. Da Frauen die marginalisierte Gruppe sind, kämpft er also für die Frauen. Deswegen heißt er Feminismus und es gibt keinen Grund, ihn etwa in Equalismus umzubenennen.

by Sash at November 17, 2013 10:33 PM

November 10, 2013


das was ich anhabe. anfangstext.

kleidung. was sagt sie über mich? warum ziehe ich das an was ich anziehe.

es gibt so ein paar fixpunkte, sachen die ich so oder so ähnlich ständig tragen könnte. in einer kette wäre das: schwarz, kapuzen, glitzerhaarclips, mützen, viele mützen, cargoshorts. relativ kurz. relativ kurz, weil ich mich mit mode or whatever you want to call it, nie wirklich auseinandergesetzt habe. ja, ich interessiere mich für mode, mein tumblr bestetht zu einem großen teil aus irgendwie mode dingen, aber bei mir selbst fand ich mode eher lästig. hatte keine lust, ständig darüber nachzudenken. wie ich aussehe und was ich wie aussehen lassen soll und kaufte das was mir gefällt und ganz oft auch sachen, die ich mich dann doch nicht traute anzuziehen.

in letzter zeit wurde kleidung dann wichtiger oder trat mehr ins zentrum. weil an kleidung auch viel an genderperformance hängt. was menschen alles in mich hineinlesen, wenn ich das und das anhabe. wie verwirrt menschen sind, wenn ich nicht das anhabe was ich „sollte“.

das was ich anhabe habe ich an, weil bequem/praktisch/wohlfühl. in letzter zeit vor allem, weil wohlfühl. ich setze mich mehr mit meinem gender auseinander, und damit irgendwie auch mit kleidung. und merke wie wenig von meinen sachen übrig bleibt, wenn ich mich oke damit fühlen will. da ist viel schwarz, diese eine cargoshorts, viel kapuzen. und die erkenntnis, dass ich nicht feminin gelesen werden möchte. mit dem was ich anhabe. nichts mit rock, kleid, verspielten details, pastellfarben oder überhaupt farben. was auch wieder unsinn ist, weil das ist ungleich weiblich. und da ist dieser körper.


apropos. lest mal bäumchen mit brüste und weiblichkeit. the struggle. und fem*me*inität und ihre abwertung., außerdem sarah mit hosen, kleider, ich.. das sind auch wichtige texte, die mich beschäftigt haben.

das hier ist ein fragment.

by grimegrrrl at November 10, 2013 11:27 PM

November 08, 2013


A Lesser-Known Feature of kill(1)


I was debugging a program, which suddenly died with

QFATAL : TestEdge::testSaveRemove() Received signal 11

For better understanding of the problem, it would be nice to know what the meaning of “signal 11” is.


I was not so fluent in signal numbers (maybe I should take a course). Of course, I could dig in the signal(7) man page, or in the respective C header (signal.h). However, while digging in the manpages, I noticed that kill(1) does not only kill processes, but also does exactly what I want.1 Citing from the man page:

-l, --list [signal]
  List  signal  names.   This  option has optional argument, which
  will convert signal number to signal name, or other way round.

So I could just say:

$ kill -l 11

Ah, segmentation fault. Nice to know :-)

In addition, the man page also mentions a useful parameter -L, which prints a nice table of signal numbers and mnemonics:

$ /bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT  7 BUS
 8 FPE      9 KILL    10 USR1    11 SEGV    12 USR2    13 PIPE 14 ALRM
15 TERM    16 STKFLT  17 CHLD    18 CONT    19 STOP    20 TSTP 21 TTIN
22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF 28 WINCH
29 POLL    30 PWR     31 SYS

(Also, the man page also warns about kill probably being a shell built-in. At least the Bash and zsh built-ins also know -l, but not -L, so you have to call /bin/kill explicitly.)

  1. At least the version in Debian, which is from procps ↩

November 08, 2013 11:14 PM

November 07, 2013

Sash42 (deutsch)

Was ist Geschlecht?

This text is available in English: What is sex? What is gender? Der englische Text ist das Original, der deutsche die Übersetzung. | Bitte akzeptiere meine (Semi-)Anonymität.

Dies ist ein Einführungstext über die verschiedenen Bedeutungen des Wortes Geschlecht. Es ist für cissexuelle (= nicht-transsexuelle) dyadische (= nicht-intersexuelle) Leser_innen geschrieben, da die meisten Transmenschen und intersexuellen Menschen sich damit schon auskennen. Ich habe die meisten Dinge, über die ich hier schreibe, von Transfrauen und Transmännern gelernt, und ein paar von genderqueeren (= nicht-binären) und intersexuellen Menschen.

[Der kulturelle Kontext dieses Posts ist, größtenteils, Europa, Nordamerika und ähnliche Regionen/Länder.]

Ich dachte lange, dass es ziemlich toll ist, dass es im englischen zwei separate Wörter für Geschlecht gibt, sex und gender. Aber inzwischen bin ich der Meinung, dass das mehr Probleme erzeugt, als es löst, denn Leute verwenden das eine oder das andere und gehen davon aus, dass die Zuhörer_innen das gleiche verstehen werden, wie sie beabsichtigt haben, obwohl jedes dieser Worte mindestens 2 bis 4 verschiedene Sachen bedeutet. Auf Deutsch ist man ohnehin gezwungen, klar zu machen, was man mit Geschlecht meint / welches Geschlecht man meint, das ist eigentlich ein Vorteil. Welches sind die Bedeutungen?

(0) Grammatisches Geschlecht

[Auf Englisch: Gender.]

Manche Sprachen haben drei Geschlechter: Maskulinum (männliches Geschlecht), Femininum (weibliches Geschlecht) und Neutrum. Manche haben zwei, männlich und weiblich. Andere haben zwei andere, ein gemeinsames für männlich und weiblich und eines für neutral. (Das ist ein bisschen gemogelt, zumindest für die Personalpronomen gibt es bei ihnen normalerweise dennoch drei.) Manche Sprachen haben gar kein Geschlecht. In einigen Sprachen werden Pronomen, Substantive, Artikel und Adjektive dem Geschlecht angepasst (z.B. im Deutschen und Französischen), in anderen nur einige dieser Wortarten, z.B. nur die Personalpronomen (z.B. im Englischen).

Es gibt sehr viele interessante Dinge, die ich über das grammatikalische Geschlecht schreiben könnte, besonders über das (pseudo)generische Maskulinum, aber nicht in diesem Artikel, sonst käme ich zu nichts anderem mehr.

Nur so viel: Die Leute, die sagen „Words have genders, people have sexes.“ kommen offenbar aus dem Jahr 1954, denn mindestens seit dem Jahr 1955 wird gender auch auf Menschen angewendet (in der „WHO-Bedeutung“, siehe (7) in diesem Text).

(1) Rechtliches Geschlecht

[Auf Englisch sowohl als legal sex als auch als legal gender bezeichnet.]

Die meisten oder vielleicht alle Länder registrieren das Geschlecht von Menschen auf der Geburtsurkunde und auf manchen anderen Dokumenten, z.B. Ausweisen. (Deutsche Personalausweise und Führerscheine haben jedoch keine solche Eintragung.)

Einige Länder erlauben es Transmenschen und/oder intersexuellen Menschen, ihr rechtliches Geschlecht zu ändern, andere, konservativere Länder gestatten dies leider nicht. Nur wenige Länder erlauben bis jetzt die Änderung des rechtlichen Geschlechts auf den einfachen Wunsch hin (z.B. Argentinien), einige haben relativ einfache Voraussetzungen (etwa ein Brief von dem_der Ärzt_in oder Therapeut_in, z.B. in mehreren US-Staaten), andere haben sehr umfangreiche Voraussetzungen (spezifische medizinische Behandlungen, z.B. Operationen oder Unfruchtbarkeit [in mehreren Ländern wie Deutschland und Schweden von den Gerichten inzwischen als menschenrechtswidrig aufgehoben] und/oder Psychotherapie und/oder ein oder zwei umfangreiche und teure psychische Bewertungen [z.B. in Deutschland 2] – wie irgendjemand außer der Person selbst ihre Geschlechtsidentität bewerten können soll ist ein Mysterium).

Viele Transmenschen und manche intersexuellen Menschen mit mehreren Staatsbürgerschaften oder die nicht in dem Land leben, in dem sie geboren sind (in stark föderalistischen Staaten wie den USA sogar wenn sie in einem anderen Staat leben, als sie geboren sind) haben eine Zeit lang oder für immer mehrere rechtliche Geschlechter. Das kann ziemlich beschissene Auswirkungen für sie haben, z.B. kann es passieren, dass sie sich nicht scheiden lassen können (weil sie dort, wo sie leben, nicht heiraten könnten) oder dass ihr_e Ehepartner_in stirbt und sie nichts erben, weil die Ehe plötzlich als null und nichtig betrachtet wird. (Nur eine der vielen Arten, wie Transmenschen und intersexuelle Menschen auf die widerwärtigste Weise diskriminiert werden, selbst in den angeblich fortschrittlichsten Ländern.)

In den meisten Ländern gibt es zwei rechtliche Geschlechter, männlich und weiblich. Ein paar Länder haben ein drittes rechtliches Geschlecht, z.B. Indien – siehe z.B. den India Visa Application Form. Das dritte Geschlecht ist dort als „transgender“ ins Englische übersetzt worden (in diesem Fall wäre das auf Deutsch am ehesten „transident“, in der übergreifenden Bedeutung, die Transsexuelle mit einbezieht). Das ist ein bisschen problematisch, denn viele, möglicherweise sogar die meisten Transmenschen identifizieren sich als Mann oder als Frau und nicht als drittes Geschlecht – es ist unklar ob eine Transfrau weiblich oder transgender auswählen müsste, ein Transmann männlich oder transgender. [Okay, in diesem konkreten Fall eines Einreiseformulars ist es nicht unklar, hier muss jede_r eintragen, was im Pass eingetragen ist.] Da jedoch der Community-interne Begriff „genderqueer“ noch nicht im Mainstream-Englisch angekommen ist, ist transgender als dritte Option zumindest besser als gar keine dritte Option. Dazu kommt dass in Fällen wie Indien und anderen Kulturen mit einem traditionellen dritten Geschlecht „genderqueer“ (meistens) auch keine zutreffende Übersetzung wäre – beispielsweise umfasst das indische dritte Geschlecht intersexuelle Menschen (deren Intersexualität bei der Geburt sichtbar war), (einige oder alle?) Transfrauen und (vor allem in der Vergangenheit) kastrierte Männer („Eunuchen“). Manche Kulturen (z.B. einige amerikanische Ureinwohner) haben vier traditionelle Geschlechter, aber ich kenne noch kein Land mit vier rechtlichen Geschlechtern.

Um zum kulturellen Kontext von Europa, Nordamerika und co. zurückzukommen, für den ich diesen Artikel schreibe: Deutschland hat dieses Jahr ein drittes rechtliches Geschlecht eingeführt, intersexuelle Kinder werden nun ohne Geschlechtseintrag registriert. Das ist nicht so gut, wie es zuerst klingen mag, intersexuelle Organisationen sind dagegen, da es zu Zwangsoutings führen kann und Eltern eventuell erst Recht dazu bewegt, ihr Kind früh geschlechtsangleichenden Operationen auszusetzen, damit sie es als männlich oder weiblich registrieren können. (Der Schutz von intersexuellen Kindern vor geschlechtsangleichenden und anderen Genital-Operationen bevor das Kind alt genug ist, um  zu verstehen und zuzustimmen oder abzulehnen, ist das Ziel mit der höchsten Priorität aller Intersexuellen-Organisationen weltweit; in Deutschland und vielen anderen Ländern ist die Erreichung noch in weiter Ferne.)

Schauen wir uns noch einmal Pässe an: Obwohl Pässe in vielen Ländern für viele Zwecke als Ausweis dienen können (ggf. ist zusätzlich ein Adressnachweis nötig), so sind sie doch in erster Linie internationale Reisedokumente und müssen somit internationalen Vereinbarungen genügen. Sie können nur folgende drei Geschlechtseinträge führen: M, F oder X (wobei die meisten Länder keine Reisepässe mit X ausstellen). Ein leerer Geschlechtseintrag oder ein anderer (z.B. IS-F und IS-M, wie von manchen deutschen Intersexuellen-Organisationen vorgeschlagen) ist in Pässen nicht möglich. (Bis vor etwa 10 Jahren hat z.B. Deutschland Pässe mit leerem Geschlechtseintrag an Transpersonen ausgestellt, die sich in ihrer medizinischen und gesellschaftlichen Transition befanden. Inzwischen sind die Regeln strenger geworden und das ist nicht mehr möglich; die strengeren Regeln hast du sicherlich vor allem an den strengeren Anforderungen an biometrische Fotos bemerkt.) Reisepässe müssen nicht notwendigerweise das rechtliche Geschlecht der Person zeigen (abhängig von den Landesgesetzen), z.B. in Großbritannien sind die Anforderungen zur Änderung des Geschlechts im Pass geringer als die zur Änderung des Geschlechts auf der Geburtsurkunde (also des rechtlichen Geschlechts). Neuseeland erlaubt die Ausstellung von Pässen mit dem X-Merkmal an Personen, die die Diagnose Transsexualität/Geschlechtsidentitäts“störung“/Geschlechtsdysphorie nachweisen können, wofür ein Brief des_der Ärzt_in oder Therapeut_in genügt. (Intersexuelle neuseeländische Personen dürfen bis jetzt noch keine Pässe mit X bekommen, soweit ich die Nachrichten verfolgt habe.)  Optimalerweise sollten alle Personen das Recht auf Pässe mit den Merkmalen M, F oder X nach ihren Wünschen haben – ggf. auch mehrere Pässe mit verschiedenen Merkmalen, da das Outing als trans (in einigen Ländern vielleicht sogar als intersexuell?) in manchen Ländern gefährlich sein kann. (Mehr als einen Pass zu haben ist nicht ungewöhnlich, z.B. wenn man in seinem Pass israelische Stempel hat, benötigt man einen zweiten für die Einreise in viele muslimische Ländern.)

Was sind die rechtlichen Folgen davon, rechtlich männlich, weiblich oder „sonstige“ zu sein? Sehr viele gibt es nicht mehr, vor allem in den fortschrittlicheren Ländern.

  1. Vorwiegend beeinflusst es, ob eine Person ihren geliebten Menschen heiraten darf oder nur eine eingetragene Partnerschaft mit geringeren Rechten eingehen darf (in Ländern, wo es noch solche Unterscheidungen gibt).
  2. Es kann beeinflussen, ob jefrau in die Armee eintreten darf und welche Rollen sie dort ausführen darf – Frauen haben evtl. nur die Berechtigung für medizinische und musikalische Dienste (wie in Deutschland bis zum Jahr 2000, als deutsche Soldatinnen dagegen vor dem Europäischen Gerichtshof erfolgreich klagten), oder aber sie dürfen vielleicht die meisten Rollen ausführen, aber nicht direkt an der Front kämpfen. Nicht einmal die USA schicken Frauen direkt an die Kampflinie (aber die Soldatinnen haben unterstützende Rollen im Kampfgebiet und tragen Waffen, von denen sie manchmal auch Gebrauch machen müssen). Zudem können in vielen Ländern Männer zum Militärdienst eingezogen werden, Frauen nicht. In Israel werden Männer für 3, Frauen für 2 Jahre eingezogen.
  3. Bis 2009 durften in Deutschland – und allen anderen Ländern, die an die internationale Arbeitsschutzvereinbarung aus dem Jahr 1935 gebunden waren, – Frauen nicht unter Tage arbeiten. Der Europäische Gerichtshof hat das für die EU aufgehoben, aber andere Länder könnten noch daran gebunden sein.
  4. In den meisten Ländern entscheidet das rechtliche Geschlecht darüber, in welchem Gefängnis, welcher geschlechtsgetrennten Notunterkunft für Obdachlose und welcher geschlechtsgetrennten Massenunterkunft für Flüchtlinge eine Person untergebracht wird. Wie eins sich vorstellen kann, das ist oft eine Katastrophe für Transmenschen, die bis jetzt noch nicht die Möglichkeit hatten, ihr rechtliches Geschlecht zu ändern. (Zudem sind Transmänner aber auch in Männereinrichtungen oft in Gefahr.) Es besteht eine hohe Gefahr, vergewaltigt zu werden. Sie werden auch oft von anderen Insass_innen/Mitbewohner_innen, von der Polizei, Gefängniswärter_innen und Verwalter_innen körperlich, seelisch und sexuell misshandelt. Obdachlose Transmenschen können oft weder in der Frauen- noch in der Männernotunterkunft unterkommen, selbst wenn ihr rechtliches Geschlecht bereits geändert wurde. Allgemein werden auch Transmenschen mit geändertem rechtlichen Geschlecht häufig von der Polizei misshandelt, z.B. „misgendered“ = als Mitglieder ihres bei der Geburt zugeordneten Geschlechts behandelt (etwa wurden Transfrauen schon gezwungen, sich vor männlichen Polizisten aus- oder anzuziehen oder wurden von ihnen durchsucht, obwohl sie Dokumente mit dem Geschlechtseintrag F vorweisen konnten).
  5. In den meisten nicht-angelsächsischen Ländern muss der Vorname zum rechtlichen Geschlecht passen. Die Auslegung, was das für Transmenschen bedeutet, variiert je nach Land. Z.B. war es in Deutschland ursprünglich so, dass die Person relativ am Anfang ihres Transitionsprozesses ihren Vornamen geändert hat, dann eine Weile der Name nicht zum aktuellen rechtlichen Geschlecht passte (wobei der neue Name bei verschiedenen Ereignissen wie Heirat oder Geburt wieder verloren gehen konnte – Paragraphen, die das Bundesverfassungsgericht inzwischen einkassiert hat) und nach dem „Abschluss“ der geschlechtsangleichenden Maßnahmen das rechtliche Geschlecht geändert wurde. Nachdem die Gerichte auch die Erfordernis der Operation für Transfrauen 2009 für nichtig erklärt haben (für Transmänner war sie es schon ungefähr seit 2000), ist es nun so, dass Name und Geschlecht bereits relativ am Anfang zusammen geändert werden können (nach, wie erwähnt, zwei langen teuren psychologischen Evaluationen).

In konservativeren Ländern sind die rechtlichen Konsequenzen natürlich zahlreicher (ähnlich wie sie es in Europa und Nordamerika vor 100 Jahren waren – oder teilweise noch bis in die 1960er). Frauen dürfen ggf. nicht wählen, arbeiten (ohne Erlaubnis des Ehemannes), Auto fahren, ein Konto eröffnen (ohne dass der Mann mit unterschreibt) oder evtl. gar keine Verträge schließen. Männer dürfen evtl. keine „Frauenkleider“ tragen und umgekehrt. Übrigens, bis ins 19. Jahrhundert wurden intersexuelle Kinder (deren Intersexualität bei der Geburt sichtbar war) im Allgemeinen als Jungen aufgezogen, damit man einem Knaben nicht versehentlich die Rechte von Männern vorenthielt. (Heutzutage werden intersexuelle Kinder meistens als Mädchen aufgezogen, da Operationen zur Konstruktion von Vagina und Vulva einfacher sind als solche zur Konstruktion eines Penis – Operationen, die oft durchgeführt werden, ohne abzuwarten, ob das Kind eine weibliche oder männliche oder andere Geschlechtsidentität entwickelt oder ob, selbst wenn es einn Mädchen [= Kind oder Jugendliche mit weiblicher Identität] ist, sich überhaupt eine Änderung ihrer Genitalien wünscht.)

Da nun in den fortgeschritteneren Ländern kaum noch rechtliche Unterschiede zwischen Männern und Frauen bestehen und die Diskriminierung von Ehen zwischen Partner_innen desselben rechtlichen Geschlechts bereits oder bald abgeschafft wird, ist das rechtliche Geschlecht weitgehend unnötig und könnte abgeschafft werden. Aber wie können wir die Rechte von Transmenschen auf geschlechtsentsprechende Gefängnisse und Gruppenunterkünfte schützen, wenn es kein rechtliches Geschlecht mehr gibt? Ich bin nicht sicher. Vielleicht sollten wir das Besitzen eines rechtlichen Geschlechts optional machen.

Verdammt, jetzt ist schon der Abschnitt über das rechtliche Geschlecht so lang geworden, dass er ein eigener Blogpost sein könnte, dabei sollten das nur ein oder zwei kurze Absätze werden. Nicht verzweifeln, auf zur nächsten Bedeutung/Definition von Geschlecht.

(2) Das bei der Geburt zugewiesene Geschlecht

[Englisch: sex/gender assigned at birth]

Transfrauen sind Personen mit weiblicher Geschlechtsidentität, denen bei der Geburt das männliche Geschlecht zugewiesen wurde. Cisfrauen sind Personen mit weiblicher Geschlechtsidentität, denen bei der Geburt das weibliche Geschlecht zugewiesen wurde. Transmänner sind Personen mit männlicher Geschlechtsidentität, denen bei der Geburt das weibliche Geschlecht zugewiesen wurde. Cismänner sind Personen mit männlicher Geschlechtsidentität, denen bei der Geburt das männliche Geschlecht zugewiesen wurde. Genderqueere (= nicht-binäre) Personen identifizieren sich nicht (oder nicht nur) als Mann und nicht (oder nicht nur) als Frau; ihnen kann bei der Geburt das männliche oder das weibliche Geschlecht zugewiesen worden sein. „Person mit weiblicher Geschlechtsidentität“, „weibliche Person“ und „Frau“ sind Synonyme; ebenso sind „Person mit männlicher Geschlechtsidentität“, „männliche Person“ und „Mann“ Synonyme. Wir können also kürzer schreiben: Transfrauen sind Frauen, denen bei der Geburt das männliche Geschlecht zugewiesen wurde. Cisfrauen sind Frauen, denen bei der Geburt das weibliche Geschlecht zugewiesen wurde. Transmänner sind Männer, denen bei der Geburt das weibliche Geschlecht zugewiesen wurde. Cismänner sind Männer, denen bei der Geburt das männliche Geschlecht zugewiesen wurde. (Bei jungen Menschen ist Frau durch Mädchen und Mann durch Junge zu ersetzen.)

Häufig verwendete englische Abkürzungen sind: FAAB (female assigned at birth), AFAB (assigned female at birth) und CAFAB (coercively assigned female at birth, d.h. zwangsweise, ohne das Kind zu fragen). MAAB (male assigned at birth), AMAB (assigned male at birth), CAMAB (coercively assigned male at birth).

Zuweisung meint die nicht-chirurgische Geschlechtszuweisung, also einige oder alle der folgenden Aspekte (teilweise abhängig von den Eltern): Bei der Geburt „Es ist ein Mädchen“ oder „Es ist ein Junge“ verkünden und den Verwandten und Freunden mitteilen. Es auf die Geburtsurkunde schreiben. Dem Kind einen weiblichen oder männlichen Vornamen geben. Das Kind mit „sie“ oder „er“ benennen. Möglicherweise dem Kind „Mädchenspielzeug“ oder „Jungenspielzeug“ geben oder gar das jeweils andere Spielzeug wegnehmen. Möglicherweise das Kind in „Mädchenkleidung“ oder „Jungenkleidung“ stecken und ihm ggf. das Tragen der anderen Kleidung verwehren. Das Kind in Kita oder Schule als Mädchen oder Junge anmelden. Und so weiter und so fort.

Was ist mit intersexuellen Kindern (deren Intersexualität bei der Geburt in Form von uneindeutigen Geschlechtsmerkmalen sichtbar ist)? In den meisten Ländern wird ihnen auch das weibliche oder das männliche Geschlecht zugeordnet. (Wie erwähnt wird Deutschland sie bald ohne Geschlecht registrieren, dennoch werden sicherlich weiterhin die meisten von ihnen von ihren Eltern als Mädchen oder Jungen aufgezogen werden, d.h. ihnen wird dennoch ein Geschlecht zugewiesen.) Einige der intersexuellen Menschen, die im Laufe ihres Lebens ihr gelebtes/ausgedrücktes Geschlecht und/oder ihr rechtliches Geschlecht ändern identifizieren sich mit dem Begriff „trans“ (transident, transsexuell oder transgender), andere tun es nicht. (Nach der medizinischen Definition können nur dyadische = nicht-intersexuelle Menschen als transsexuell diagnostiziert werden, aber natürlich sind die Trans- und Intersexcommunitys und -Menschen nicht daran gebunden, was sich Dyadische Cismenschen in ihren medizinischen Katalogen für sie ausgedacht haben.)

Warum sollten wir nicht biologisch weiblich bzw. biologisch männlich sagen? Wie wir weiter unten sehen werden, sind auch das neurologische Geschlecht und die Geschlechtsidentität ganz oder teilweise biologisch oder können es zumindest sein. Außerdem: Transfrauen sind weiblich, also sind sie nicht männlich, also sind sie auch nicht biologisch männlich, und umgekehrt für Transmänner. Genderqueere Menschen sind nicht oder nicht nur männlich und nicht oder nicht nur weiblich, also sind sie auch nicht biologisch männlich oder weiblich.  (Einige Transmänner und Transfrauen und relativ viele genderqueere Menschen, vor allem nicht-transsexuelle („nur“ transidente) genderqueere Menschen, haben ggf. überhaupt nichts dagegen, dass sie als biologisch weiblich oder männlich bezeichnet werden – natürlich können sie sich so nennen, wie sie wollen; das gibt Cismenschen nicht das Recht diese Begriffe auf andere Transmenschen anzuwenden, nicht einmal auf andere Transmenschen mit der gleichen Geschlechtsidentität und den gleichen Geschlechtsmerkmalen.) Andere Gründe gegen biologisch weiblich/männlich siehe anatomisch/körperlich männlich/weiblich.

Warum sollten wir nicht genetisch weiblich oder männlich sagen? Hast du schon bei dir einen Chromosomentest machen lassen? Bist du sicher, dass du genau zwei Geschlechtschromosomen hast? Bist du sicher, dass es die sind, von denen du schätzt, dass es sie sind? Vielleicht hast du ja X, XXX, XXXX, XXXXX? XXY, XXXY, XYY? Oder Mosaik, einige Zellen haben einen Chromosomensatz, andere Zellen einen anderen? (Genau genommen wissen die meisten Personen mit Turner-Syndrom (X) oder Klinefelter-Syndrom (XXY, XXXY oder XXXXY) Bescheid über ihren Chromosomensatz, da es andere äußerlich sichtbare Auswirkungen gibt.) Davon abgesehen: Transfrauen sind weiblich, also sind sie nicht männlich, also sind sie auch nicht genetisch männlich, und umgekehrt für Transmänner. Für genderqueere Personen bekommst du es schon selbst raus, oder? (Manche Transmenschen benutzen die Formulieren genetischer Mann für Cismann oder genetische Frau für Cisfrau. Manche nennen sich auch selbst genetisch männlich oder weiblich. Natürlich können sich Transmenschen selbst bezeichnen wie sie wollen – das gibt Cismenschen nicht das Recht, diese Begriffe zu verwenden.)

Warum sollte niemand sagen „Mann in einem Frauenkörper“ oder „Frau in einem Männerkörper“? Hören wir uns an, was ein (generischer) Transmann dazu zu sagen hätte: „Ich bin in ein Mann. Das ist mein Körper. Also ist es offensichtlich der Körper eines Mannes und nicht der Körper einer Frau. Von welcher Frau soll es denn der Körper sein, welcher Frau hab ich ihn gestohlen?“ Analog für Transfrauen.

Warum sollten wir nicht anatomisch oder körperlich männlich oder weiblich sagen? Erst einmal weißt du nicht in welcher Phase der geschlechtsangleichenden Maßnahmen, also der medizinischen Transition sich die Transperson befindet bzw. wie ihr Körper unter der Kleidung aktuell aussieht – und in den allermeisten Fällen geht dich das auch überhaupt nichts an (und es wäre sehr unverschämt, zu fragen). Also, ist eine Transfrau deiner Meinung nach anatomisch/körperlich männlich, auch wenn sie eine Vagina und eine Vulva hat und keinen Penis und keine Hoden und Hodensack mehr? Nur weil sie ein Y-Chromosom hat, ihr der Uterus fehlt (was im Übrigen auch auf 1/3 aller Cisfrauen am Ende ihres Lebens zutrifft) und, falls sie während der ersten Pubertät keinen Zugang zu Hormonblockern hatte, wahrscheinlich eine eher maskuline Knochenstruktur? Ich denke, die meisten Leute würden eine post-operative Transfrau nicht als anatomisch oder körperlich männlich bezeichnen, außer aus Boshaftigkeit (dabei denke ich an euch, TERFs [= trans-exclusionary [ausschließende] radical fauxminists). Wie sieht es mit vor- oder nichtoperativen Transfrauen aus? In Anbetracht der in Anbetung ausartenden Wertschätzung für den Penis in unserer Gesellschaft kann ich zumindest verstehen, dass einige Cismenschen sagen würden, alle Personen mit Penis seien anatomisch/körperlich männlich. Aber schau dir einmal eine Transfrau an, nachdem sie eine Weile Östrogen und Spiro (oder einen anderen Androgen-Blocker) genommen hat: Ist eine Frau mit Brüsten, mit einer femininen Fettverteilung an Hüften und Po statt am Bauch, der dünneren/weicheren/feineren Haut, die typisch für Frauen ist immer noch „körperlich männlich“, nur weil sie einen Penis hat, den du unter ihrer Kleidung meistens nicht einmal sehen kannst? Das Gleiche gilt für Transmänner: Die meisten Transmänner durchlaufen eine Brust-OP (Mastektomie + Formung einer maskulinen Brust), viele eine  Hysterektomie (Entfernung von Gebärmutter und Eierstöcken) und nur eine relativ kleine Anzahl entscheiden sich für Genitaloperationen. Ist ein bärtiger Mann mit tiefer Stimme, evtl. Geheimratsecken oder beginnender Glatze, maskulinen Gesichtszügen und/oder der typisch männlichen Fettverteilung um den Bauch herum (statt Hüften und Po) anatomisch/körperlich weiblich? Wo fängt es an, wo hört es auf, wo ist die Grenze für angeblich biologisch/anatomisch/körperlich männlich/weiblich sein? Okay, sagst du jetzt vielleicht, aber was ist mit Transmenschen vor dem Beginn der geschlechtsangleichenden Maßnahmen? (Oder denjenigen, die keine wünschen.) Es variiert. Manche Transmänner und weiblich-zugewiesenen genderqueeren Personen betrachten ihre Körper vor der Transition als weiblich und manche Transfrauen und männlich-zugewiesenen genderqueeren Personen betrachten ihre Körper vor der Transition als männlich. Aber manche Transmänner sagen auch: So ein Scheiß, ich bin männlich, ich war schon immer männlich – und mein Körper auch! Analog für die anderen Gruppen. Die Tendenz scheint zu dem zweiten Ansatz zu gehen (insbesondere bei Transmenschen auf dem weiblich-zu-männlich-Spektrum [FTM-Spektrum]). Natürlich ist jede Form der Selbstbeschreibung/Selbstverortung korrekt und jede_r kann seinen_ihren Körper nennen, wie auch immer er_sie will.

Warum sollt man nicht „männlich sozialisiert“ oder „weiblich sozialisiert“ sagen? Erst einmal weißt du das gar nicht, ob eine Transfrau männlich, ein Transmann weiblich sozialisiert wurde. Manche Transmenschen erkennen bereits sehr sehr früh in ihrem Leben ihre wahre Geschlechtsidentität, manchmal schon im Alter von etwa 3 Jahren, wenn die Kinder gerade anfangen zu verstehen, was die Worte sie und er, Mädchen und Junge heißen sollen. Einige Eltern unterstützen ihre Transkinder sehr gut und lassen sie bereits in ihrem Geschlecht leben, melden sie so zur Schule an. Somit sind ein Teil der Transjungen/-männer – nach den ersten drei oder wie viel auch immer Jahren – männlich sozialisiert worden, ein Teil der Transmädchen/-frauen entsprechend weiblich. Zweitens: Mädchen, oder genauer gesagt weiblich-zugewiesene Kinder werden bei ihrer Geburt nicht in eine rosa Blase gepackt, die sie von allen maskulinen Einflüssen schützt; Jungen, oder korrekterweise männlich-zugewiesene Kinder wachsen auch nicht in einer hellblauen Blase auf. Geschlechtliche soziale Einflüsse kommen aus allen Richtungen, nicht nur von den Eltern, sondern auch Geschwistern, Freund_innen, Lehrer_innen, Büchern und Fernsehen. Kleine „Mädchen“ lernen auch, wie Jungen und Männer sich angeblich verhalten (sollen) und kleine „Jungen“ lernen auch, wie Mädchen und Frauen sich angeblich verhalten (sollen). Denk darüber nach: Den meisten kleinen „Jungen“ wird heutzutage nicht mehr gesagt, dass Jungen angeblich nicht weinen, sondern die Zähne zusammenbeißen – aber es reicht völlig, wenn sie einen fremden Erwachsenen es zu einem anderen kleinen „Jungen“ auf dem Spielplatz sagen sehen. So gelangt der Gedanke, dass Weinen unmännlich sei, in die Köpfe der Kinder egal welches Geschlechts (= welcher Geschlechtsidentität) und welcher Geschlechtszuweisung. Wie viel der Sozialisation für Kinder ihres tatsächlichen Geschlechts Transkinder für sich auf- oder annehmen kann man schlecht sagen, wahrscheinlich variiert es von Kind zu Kind und danach, wie bewusst es sich seiner Geschlechtsidentität schon ist und wie tolerant die Eltern gegenüber geschlechtsvariablem (geschlechts“unpassendem“) Verhalten sind. Nichtsdestotrotz, ich muss es kaum erwähnen, kann sich natürlich eine Transperson als männlich oder weiblich sozialisiert selbst beschreiben und es steht niemandem zu, ihr das zu verwehren. Wasauchimmer für Wörter sie wählt um sich selbst zu beschrieben, sie sind korrekt.

Ein Kommentar zum Englischen: Es gibt Argumente für und wider „sex assigned at birth“ und „gender assigned at birth“. Einerseits erfolgt die Zuordnung aufgrund des Anblicks der Genitalien des Neugeborenen (bei uneindeutigem Aussehen wird manchmal ein Chromosomentest oder ein Test der Zellen in den Gonaden [= Keimdrüsen, also Hoden oder Eierstöcke] hinzugezogen), was für sex spricht, andererseits ist es das (soziale) Geschlecht, indem die Eltern beabsichtigen, das Kind zu erziehen, oder die Geschlechtsidentität, die ihm aufgedrückt wird. Die Unterscheidung ist hier aber nicht so wichtig.

(3) Anatomisches oder körperliches Geschlecht, manchmal auch biologisches Geschlecht

[Englisch: sex]

Wow, sind wir „schon“ bei Definition 3? Das ging aber schnell *hust hust*.

Diese wird sicher ganz einfach, nicht wahr? „Hat einen Penis“ = anatomisch/körperlich/biologisch männlich, „kein Penis“ = anatomisch/körperlich/biologisch weiblich, oder? Pure Biologie, keine Schwierigkeiten? Oder auch nicht.

Erst einmal, auch das körperliche Geschlecht ist ein soziales Konstrukt. Halt, werden viele Leser_innen sagen, es ist biologisch, es ist kein soziales Konstrukt! Ist es aber doch. Die einzelnen Geschlechtsmerkmale sind biologisch. Die Interpretation einer Zusammenfassung mehrerer Geschlechtsmerkmale als männliches oder weibliches Geschlecht ist gesellschaftlich.

Schauen wir uns die Geschlechtsmerkmale an.

Primäre (bei der Geburt, vor der Pubertät vorhandene) Geschlechtsmerkmale, die als weiblich betrachtet werden: Eierstöcke, Gebärmutter, Vagina, Vulva, XX-Geschlechtschromosomen (obwohl wir bereits gesehen haben, dass sie variieren können).

Sekundäre (in der Pubertät entwickelte) Geschlechtsmerkmale, die als weiblich betrachtet werden: Brüste, keine Gesichtsbehaarung, hohe Stimme, kein sichtbarer Adamsapfel, wenige, hellere, weiche Haare an den Armen, Beinen, Brust, Bauch und Rücken, Monatsblutungen, Östrogen und Progesteron, die durch die Blutgefäße fließen.

Primäre Geschlechtsmerkmale, die als männlich betrachtet werden: Hoden und Hodensack, Penis, XY-Geschlechtschromosomen (wobei wir bereits gesehen haben, dass sie variieren können).

Sekundäre Geschlechtsmerkmale, die als männlich betrachtet werden: Gesichtsbehaarung, keine Brüste, tiefe Stimme, sichtbarer Adamsapfel, viele, dunklere, gröbere Haare mindestens an den Armen und Beinen, oft auch an Brust, Bauch und Rücken, im der Lage Spermien zu produzieren, Testosteron im Blutkreislauf.

Primäre Geschlechtsmerkmale, die als Indikatoren für Intersexualität betrachtet werden oder werden können: vergrößerte Klitoris, Mikropenis (beachte, dass Klitoris und Penis im Prinzip dasselbe Organ sind; ob es sich um eine vergrößerte Klitoris oder einen Mikropenis handelt, kann eine Frage der Interpretation sein), teilweise oder vollständig miteinander verwachsene Schamlippen, an der Unterseite teilweise offener Penis, Hypospadie (Harnröhre endet an der Unterseite des Penis), Epispadie (Harnröhre endet an der Oberseite des Penis), eine blind endende Scheide, lebensbedrohliche Störungen im Salzhaushalt (AGS = Adrenogenitales Syndrom), Streak-Gonaden (die Zellen in den Keimdrüsen haben sich weder zu Eierstockzellen noch zu Hodenzellen ausgebildet; beide Arten Zellen im selben Menschen können nur bei Mosaiken auftreten), XY-Chromosomen und weiblich aussehende primäre Geschlechtsmerkmale (z.B. teilweise oder vollständige Androgenresistenz), XX-Chromosomen und männlich aussehende primäre Geschlechtsmerkmale.

X, XXX, XXXX bei weiblichem Phänotyp (Erscheinungsbild) und XXY, XXXY, XYY bei männlichem Phänotyp werden meistens nicht als Intersexualität betrachtet; jedoch können bei Gentests X-Frauen das Ergebnis „männlich“, XXY- und XXXY-Männer das Ergebnis „weiblich“ erhalten, denn oft wird auf den Barr-Körper (Geschlechts-Chromatin) getestet, das inaktive X (bei XX-Menschen ist ein X aktiv, das andere inaktiv; bei XY-Menschen ist das X aktiv; in typischen Fällen ist also ein inaktives X ein Zeichen für Weiblichkeit).

Sekunde Geschlechtsmerkmale, die als Indikatoren für Intersexualität betrachtet werden oder werden können: fehlende Brustentwicklung, fehlendes Wachstum von Penis und/oder Hoden, fehlende Entwicklung der Schambehaarung, kein Einsetzen der Menstruation oder von Ejakulationen, keine Spermien im Ejakulat, Unfruchtbarkeit, sekundäre Geschlechtsmerkmale entgegen denen, die erwartet wurden.

Ignorieren wir intersexuelle Menschen für den Rest dieses Abschnittes, um es etwas einfacher und übersichtlicher zu halten.

Stell dir eine Frau mit sehr haarigen Beinen vor. Würdest du sie als Mann bezeichnen? Sicherlich nicht. Wie ist es mit einem Mann, der – außer Schamhaaren – kaum Haare am Körper hat und auch während der Pubertät nur sehr wenige Barthaare entwickelt hat? Es würde dir vermutlich überhaupt nicht auffallen. Ein Typ ohne sichtbaren Adamsapfel? Immer noch ein Mann. Eine Frau, die wegen einem Hormon- oder Jodungleichgewicht einen sichtbaren Adamsapfel hat? Immer noch eine Frau. Was ist mit einem Mann, der seinen Penis und/oder seine Hoden bei einem Unfall oder im Krieg verloren hat? Immer noch ein mannhafter Mann. Was wäre mit einem Mann, der schon bei der Geburt keinen Penis hatte, z.B. weil sich die Blase außerhalb des Körpers gebildet hat? Vielleicht wird er noch nicht einmal als intersexuell eingestuft, falls sich seine Hoden normal entwickelt haben. Was ist mit einer Frau mit Körbchengröße A oder darunter? Mit einer Frau, deren Gebärmutter entfernt wurde (was bei etwa einem Drittel aller Cisfrauen gemacht wird, denn es ist nach dem Klimakterium [Wechseljahren] oft die beste Behandlungen bei Erkrankungen der Gebärmutter), hört sie auf, eine Frau zu sein? Wohl kaum. Was ist mit dem Klimakterium selbst, wenn die Frau keine Regelblutungen mehr bekommt und sich nur noch sehr wenig Östrogen und Progesteron im Körper befindet – sind ältere Frauen Neutrums? Was ist mit Männern mit Moobs (Men-Boobs, Männerbrüsten) in Körbchengröße A, B oder C? Du siehst, die Weiblichkeit oder Männlichkeit von Geschlechtsmerkmalen ist nicht in Stein gemeißelt.

Und, wie bereits weiter oben angerissen: Auch ein Transmann, dessen Geschlechtsmerkmale noch zu 100% dem entsprechen, was traditionell als anatomisch weiblich betrachtet wird, bezeichnet seinen Körper ggf. als männlich, da er nun mal ein Mann ist. Ebenso bezeichnen auch manche Transfrauen, deren Geschlechtsmerkmale noch 100%ig das sind, was  traditionell als anatomisch männlich angesehen wird, ihren Körper als weiblich, da sie nun mal eine Frau ist. Und daran ist genau gar nichts falsch. Und es ist auch nichts falsch daran, dass andere Transmänner und Transfrauen es – für ihren Körper – ggf. genau umgekehrt sehen und bezeichnen.

Ein letztes Wort über Chromosomen (wir hören jetzt auf, intersexuelle Menschen zu ignorieren): Selbst wenn wir XY-Frauen mit kompletter Androgenresistenz ignorieren und sogar den Fall außen vor lassen, dass das SRY-Gen (Sex-determining region of Y) from Y-Chromosom abbricht und sich auf dem X-Chromosom ansiedelt, haben wir immer noch ungefähr 30 weitere bekannte Gene (3 auf dem X, das eine erwähnte auf dem Y, die andere auf Autosomen = Nicht-Geschlechts-Chromosomen), die zu XY-Frauen mit einem typisch weiblichen Phänotyp (Vuvla etc.) oder XX-Männern mit einem typisch männlichen Phänotyp (Penis etc.) führen können. In extrem seltenen Fällen haben XY-Frauen sogar Babys zur Welt gebracht! Falls du also jemals das Bedürfnis hast Dinge zu sagen wie „Aber $Person wird immer ein Mann sein, denn er hat ein Y-Chromosom!“ oder „Aber $Person wird immer eine Frau sein, denn sie hat kein Y-Chromosom“, dann sag einfach überhaupt nichts, kthxbye. Das trifft auf intersexuelle Menschen jedweder äußeren Erscheinung und auf Transmenschen zu.

Und ein allerletztes Wort über grundlegende Höflichkeit: Wie die Genitalien einer anderen Person aussehen geht dich nichts an. Daran ändert sich nichts, wenn diese Person trans* oder intersexuell ist. Also frag nicht danach!

(4) Neurologisches Geschlecht

[Englisch: neurological sex]

Schon bei der Geburt weiß unser Hirn einige Dinge über unseren Körper. Ja, es gibt eine Menge zu lernen, z.B. wie man sich nicht in die Hosen macht und wie man auf zwei Beinen läuft, aber einige Dinge sind bereits da. Zum Beispiel, welche Sexualorgane wir haben und was man so ganz grob mit ihnen anstellen kann. Das ist offensichtlich ein großer evolutionärer Vorteil, Tierarten, die das nicht wissen, sterben ziemlich schnell wieder aus. Du glaubst, dieses Wissen ist komplett erlernt und kommt erst wenn in der Pubertät die Geschlechtshormone rapide ansteigen? Da liegst du falsch. Wenn dich der Gedanke verstört, dass dreijährige Kinder bereits masturbieren, solltest du nie einen Blick in Bücher und Broschüren über die Entwicklung von Kleinkindern werfen. Geschlechtshormone gibt es bereits vor der Geburt in unserem Körper. Die falsche Menge davon, vom falschen Hormon oder zur falschen Zeit – ich sollte besser untypisch schreiben, falsch trifft es nicht – können zu (manchen Arten von) Intersexualität führen, das ist gut erforscht. (Dafür wird auch der Begriff DSD = Disorders of Sex Development verwendet. Es gibt Argumente für und gegen die Verwendung von DSD anstelle von oder zusätzlich zu Intersexualität, einige intersexuelle Menschen verwenden den Begriff, andere lehnen ihn ab. ISNA, der Nordamerikanische Intersexuellen-Verband, hat zwei Artikel dazu geschrieben: DSD But Intersex Too: Shifting Paradigms Without Abandoning Roots and Why is ISNA using “DSD”?. Kurz zusammengefasst empfehlen sie die Verwendung von DSD,. wenn es um die medizinische Behandlung von Kleinkindern geht – einschließlich ihres Schutzes vor unerwünschten Operationen – und die weitere Verwendung des Begriffes intersexuell, wenn es um Organisationen von Erwachsenen geht, um Selbstbeschreibung und gegebenenfalls um Geschlechtsidentität.) Andere untypische Hormonmengen oder Zeitpunkte, wann sie ausgeschüttet wurden, führen möglicherweise zu Homo-, Bi- und Asexualität, was aber noch nicht wissenschaftlich nachgewiesen ist. Ähnlich wahrscheinlich, aber auch noch nicht bewiesen, ist, dass bestimmte untypische Hormonmengen oder Zeitpunkte vor der Geburt auch die Ursache für Transsexualität / Geschlechtsdysphorie ist.

Wie fühlt sich Geschlechtsdysphorie an? [Triggerwarnung für den Rest des Absatzes für Transmenschen, die von anschaulichen Beschreibungen von Geschlechtsdysphorie getriggert werden könnten.] Geschlechtsdysphorie ist zu wissen, dass du einfach keinen Penis haben dürftest, aber da ist trotzdem einer. Geschlechtsdysphorie ist, nicht ins Bad gehen zu können, weil da ein Spiegel ist und du darin dein feminines oder maskulines Gesicht sehen könntest. Geschlechtsdysphorie ist, wenn ein kleines Transmädchen nachts weinend und schreiend aufwacht, weil sie wieder mal einen Alptraum hatte, dass sie älter wird und ihr Körper überall von Haaren bedeckt sein wird. Geschlechtsdysphorie ist, deinen Penis so sehr zu hassen, dass die Gefahr besteht, dass du dich selbst verletzt, wenn die Krankenkasse die geschlechtsangleichende Operation nicht bezahlt. Geschlechtsdysphorie sind Depressionen, verursacht durch die falschen Hormone in deinem Körper. Geschlechtsdysphorie ist beim Rasieren weinen, weil aus deinem Gesicht keine Haare wachsen dürften. Geschlechtsdysphorie ist, deine Brüste aus ganzem Herzen zu hassen. Geschlechtsdysphorie ist, ein Foto von dir zu sehen oder dein Spiegelbild und zu denken: „Oh mein Gott, ich sehe aus wie eine Frau|ein Mann, ich muss mich übergeben!“, während alle anderen nur mit den Schultern zucken und sagen: „Aber du bist doch eine Frau|ein Mann.“ Geschlechtsdysphorie ist, wenn du deine Erektionen psychisch unerträglich findest, auch wenn kein Mensch in der Nähe ist, der sie sehen könnte. Geschlechtsdysphorie ist, deine Periode zu hassen, nicht nur für die Unannehmlichkeiten und körperlichen Schmerzen, die sie vielleicht auslöst, sondern weil du weißt, dass aus dir kein Blut raus fließen dürfte. Geschlechtsdysphorie ist, wenn sich Selbstbefriedigung und Sex falsch anfühlen, und das was falsch ist, ist dein Körper. Geschlechtsdysphorie sind viele Arten von unerträglichen seelischen Qualen.

Nicht alle Transmenschen erleben alle Formen von Geschlechtsdysphorie, die ich hier beschrieben haben. Es gibt zahlreiche Transfrauen, die kein Problem mit ihrem Penis haben (und manche auch keine mit Erektionen) – deshalb war/ist es ein schreckliches Verbrechen, geschlechtsangleichende Operationen vorzuschreiben, um das rechtliche Geschlecht ändern zu dürfen! Manchen Transfrauen macht es nicht besonders viel aus, sich täglich rasieren zu müssen, einige würden es sogar bleiben lassen, wenn ihnen dann nicht Cismenschen (und sogar manche andere Transmenschen) das Frausein absprechen würden. Während ein Teil der Transmänner ihren Uterus so schnell wie möglich loswerden will, wollen einige sogar schwanger werden (laut informeller Umfragen um die 5% … was vielleicht nicht mal so viel höher liegt als bei Cismännern, nur dass die es nicht können?) – Gesetze, die verlang(t)en, dass Transmenschen unfruchtbar sein müssen (und in manchen Ländern wie Schweden sogar gelagerte Eizellen und Spermien zerstört sein müssen!) um das rechtliche Geschlecht ändern zu können, waren/sind auch Menschenrechtsverletzungen. Auch für alle anderen im vorhergehenden Absatz aufgeführten Beispiele von (Auslösern für) Geschlechtsdysphorie gilt: Nicht alle Transmenschen erleben alle davon – das macht sie nicht weniger trans und nicht weniger weiblich oder männlich! Sogar Menschen, die überhaupt keine Geschlechtsdysphorie erleben und keinerlei geschlechtsangleichende Maßnahmen wünschen, können Transmänner, Transfrauen oder genderqueer (= nicht-binär) sein, denn das hängt nur von der Geschlechtsidentität ab, zu der wir als nächstes kommen. Außerdem brauchen einige Transmenschen bestimmte medizinische Maßnahmen schlichtweg nicht: Manche Transmänner haben sehr kleine Brüste und es stört sie nicht, sie einfach nur als Moobs zu bezeichnen; einige Transfrauen hatten noch nie besonders viele Haare im Gesicht; einige sehen (für ihren eigenen Geschmack oder um der Gesellschaft zu „paßen“ (passen, als ihr richtiges Geschlecht gelesen werden) hinreichend maskulin, feminin oder androgyn aus, ohne dass sie Hormone nehmen.

Aber die Mehrheit der binären Transmenschen (also Transmänner und Transfrauen) und vielleicht die Hälfte (keiner weiß das so genau) der genderqueeren (= nicht-binären) Transmenschen erlebt und leidet unter Geschlechtsdysphorie und wünscht den Körper zu modifizieren, so dass die Anatomie dem entspricht, was das Gehirn vorgibt, wie ihr Körper hätte sein sollen – und ihnen diese medizinischen geschlechtsangleichenden Maßnahmen zu verwehren oder sie aus dem Katalog der Leistungen von Krankenkassen auszuschließen ist ebenfalls eine monströse Verletzung der Menschenrechte! Beachte, dass die meisten Veränderungen durch Hormone und Hormonblocker erreicht werden, die allmählich über einen längeren Zeitraum von Monaten oder Jahren wirken (die zweite Pubertät), es gibt keine einmalige „Geschlechtsumwandlung“ an einem Tag, dieses Wort sollten Cismenschen aus ihrem Vokabular streichen. Die Hormongaben werden teilweise als HRT = Hormon Replacement Therapy (Hormonersatztherapie) bezeichnet (was aber auch der Begriff für Hormongaben an Cisfrauen in/nach den Wechseljahren ist), teilweise in der englischen Transcommunity inzwischen als EEI für Exogenous Endocrime Intervention, von außen kommender endokriner Eingriff.

Viele Transfrauen und einige bei der Geburt männlich zugewiesenen genderqueere Personen (wobei „einige“ hier heißt: ein unbekannter Prozentsatz) führen die folgenden medizinischen geschlechtsangleichenden Maßnahmen durch oder wünschen sie sich, bzw. einen Teil davon:

  • Testosteronblocker (Antiandrogene), um die – für sie – schrecklichen Auswirkungen des Testosterons aufzuhalten: Die Maskulinisierung des Körpers, Haarausfall und unmittelbar durch das Testosteron ausgelöste Depressionen/Dysphorie (es ist nicht hundertprozentig sicher, ob es das gibt, aber da einige Transfrauen sich schon ein oder zwei Wochen nach der ersten Einnahme von Testosteronblockern und/oder Östrogen besser fühlen, obwohl die körperlichen Auswirkungen von Hormonen und Hormonblockern erst ganz allmählich über einen längeren Zeitraum eintreten, gibt es einige Anzeichen, dass es für manche so ist). Wenn Testosteron blockiert wird, verliert der Körper schnell viel Muskelmasse (das kann teilweise durch Training verhindert werden, wenn gewünscht; Training kann auch nötig sein, um die Knochendichte aufrecht zu erhalten).
  • Östrogen (Tabletten oder Spritzen) um Brustwachstum auszulösen, die Haut weicher/dünner zu machen, die Körperbehaarung ein klein wenig zu reduzieren und die Haare weniger grob zu machen, und das Körperfett von einem maskulinen Muster (am Bauch) zu einem femininen Muster hin (an Po und Hüften) zu verteilen (und um die direkte Depression/Dysphorie zu stoppen, siehe Testosteronblocker).
  • In manchen Ländern scheint es verbreitet zu sein, Transfrauen (und männlich zugewiesenen genderqueeren Personen, die eine Feminisierung ihres Körpers wünschen) Progesteron zu geben, in anderen völlig unüblich. Möglicherweise führen Progesterongaben zu einem höheren Brustwachstum – oder auch nicht.
  • Manche nehmen zusätzliche Medikamente gegen Haarausfall.
  • Die meisten wünschen permanente Haarentfernung mit Laser- oder Elektrobehandlung, mindestens der Gesichtshaare und oft auch der Körperbehaarung.
  • Logopädische Behandlung (Stimm- und Sprachtraining) für eine höhere, femininere Stimme.
  • Orchiektomie (Entfernung der Hoden) – wird oft zusammen mit der geschlechtsangleichenden Operation (nächster Punkt) durchgeführt
  • Geschlechtsangleichende Operation oder Genitaloperation: Hodensack und Penis werden in (Neo-)Vagina, Klitoris und Schamlippen umgeformt, die Harnröhre gekürzt und verlegt. (Sehr wenig Gewebe wird tatsächlich entfernt, nur die Hoden und die Schwellkörper, also sprich bitte nicht von „Penisabschneiden“, das ist Unsinn.) Manchmal werden die Schamlippen in einer separaten Operation geformt. Während, wie erwähnt, nicht alle Transfrauen die geschlechtsangleichende Operation der Genitalien wünschen, die Mehrheit will sie (und ein unbekannter Anteil der männlich zugewiesenen genderqueeren Personen ebenfalls).
  • Einige haben/brauchen/wollen andere Operationen: FFS (facial feminization surgery = Feminisierung des Gesichtes), Brustvergrößerung, Reduzierung der Größe des Adamsapfels und/oder eine (relativ riskante) Operation an den Stimmbändern.

Viele Transmänner und einige (= ein unbekannter Prozentsatz) weiblich zugewiesene genderqueere Personen (ich werde für beide Gruppen zusammen „Transpersonen auf dem FTM-Spektrum“ verwenden, der Begriff scheint innerhalb der Community verbreitet zu sein) führen die folgenden medizinischen geschlechtsangleichenden Maßnahmen durch oder wünschen sie sich, bzw. einen Teil davon:

  • Testosteron (als Creme oder Spritzen) für eine tiefe Stimme, Gesichts- und Körperbehaarung, Vergrößerung der Klitoris bis zu einem Mikropenis (Erinnerung: Klitoris und Penis sind im Prinzip dasselbe Organ; auch Erektionen sind möglich), Umverteilung des Fettes weg von Hüften und Po hin zum Bauch, und mehr Muskeln, selbst mit wenig oder gar keinem Training.
  • Östrogen-Blocker sind, falls die erste Pubertät bereits abgeschlossen wurde, nicht notwendig, da sich durch die Östrogen-„Vergiftung“ ohnehin bereits Brüste ausgebildet haben.
  • In einigen Ländern scheinen Transpersonen auf dem FTM-Spektrum Progesteron zu bekommen, in anderen nicht. Progesteron kann genutzt werden, um die Monatsblutungen zu stoppen.
  • Mastektomie + Formung einer maskulinen Brust. Wird oft nur als Mastektomie oder Mastek bezeichnet (das wäre aber eigentlich nur die Entfernung der Brüste, wie bei einer Person mit Brustkrebs). Bevor sie endlich die Mastek haben, tragen die meisten sogenannte „Binder“, das sind enge, dicke, ärmellose Hemden, die die Brust eng an den Körper drücken. Das kann schmerzhaft sein und zu Atemnot führen, wenn der Binder den ganzen Tag getragen wird.
  • Viele, die Testosteron nehmen, lassen auch eine Hysterektomie durchführen (Entfernung von Gebärmutter, Muttermund = Gebärmutterhals, Eierstöcken und Eileitern). Ein Teil der Ärzt_innen empfehlen das, weil die Einnahme von Testosteron das Risiko für manche Erkrankungen der Gebärmutter erhöht. Aber nicht alle Transpersonen auf dem FTM-Spektrum lassen sich den Uterus herausnehmen, einige gehen auch einfach häufiger zu Vorsorgeuntersuchungen; andere jedoch finden solche Vorsorgeuntersuchungen nahezu unerträglich, [TW] da sie dazu ggf. zu einem_r Gynäkologen_in, also „Frauenarzt_ärztin“ gehen müssen, und diese_r zudem Finger oder Instrumente in eine Körperöffnung einführen müssen, die der Transmann oder die genderqueere Person gar nicht haben will.
  • Genitaloperationen: Bei Transpersonen auf dem FTM-Spektrum gibt es nicht die eine Genitaloperation, sondern eine ganze Reihe, manche Transmänner und weiblich zugewiesenen genderqueeren Personen haben überhaupt keine davon, manche eine, mehrere oder viele. Häufig sind mehrmonatige Heilungszeiten zwischen den Operationen nötig.  Einige lassen ihren durch Testosteron entstandenen Mikropenis verlängern auf ähnliche Weise wie manche Cismänner ihren Penis verlängern lassen (durch Durchtrennung der Haltebänder, was den sichtbaren Teil des Penis um 1-2 cm vergrößert; genannt Metoidioplastie, Metaoidioplastie oder Meta). Einige lassen aus den Schamlippen einen Hodensack formen, in den nach einiger Zeit der Dehnung Hodenprothesen eingefügt werden. Einige entscheiden sich dafür, den Vaginalkanal schließen oder entfernen zu lassen. Einige lassen ihre Harnröhre verlängern. Einige lassen eine Phalloplastie, also die Konstruktion eines Penisses durchführen – dafür wird Haut von anderen Körperteilen transplantiert. Einige lassen einen biegbaren Stab in den Penis einsetzen, der Erektionen ermöglicht oder unterstützt, oder andere technische/prosthetische  Hilfsmittel zu diesem Zweck. (Einige der genannten geschlechtsangleichenden Operationen können in eine Operation zusammengefasst werden.) Gegenwärtig lässt nur eine Minderheit der Transmänner (und weiblich zugewiesenen genderqueeren Personen) irgendeine Art von Genitaloperation durchführen. Ein Grund ist, dass bereits die Einnahme von Testosteron (durch Gel oder Spritzen) zu einem Penis von mehreren Zentimetern Länge führt, der auch für PIV-Sex (Penis-in-Vagina-Sex) genutzt werden kann. Ein anderer Grund ist, dass die FTM-Genitaloperationen noch nicht so zuverlässige Ergebnisse liefern wie die MTF-Genitaloperation. Sie sind riskanter, es gibt mehr Komplikationen und die Gefahr von Nervenschäden. Andererseits haben mir auch einige Transmänner gesagt, dass die Risiken gar nicht so hoch seien, und dass sie teilweise eine Art Großstadtlegenden innerhalb der FTM-Community sind. Ich kann nicht einschätzen, wie hoch die Risiken tatsächlich sind.

Zusätzlich hätten einige, aber nicht alle, Transpersonen gern begleitende Psychotherapie, um ihnen bei der Bewältigung der sozialen Änderungen während ihrer Transition zu helfen. Was sie nicht wünschen, sind Therapien, die versuchen sie zu überzeugen, dass sie „verwirrt“ sind bezüglich ihrer Geschlechtsidentität – sie sind nicht verwirrt! Erwachsene und ältere Teenager sind heutzutage nicht in sehr großer Gefahr, an eine_n Therapeuten_in zu geraten, die sie versucht zu überzeugen, dass sie in Wirklichkeit ihrem zugewiesenen Geschlecht zugehören, oder falls es so ist, können sie zu einer_m besseren Therapeuten_in wechseln Transkinder, jedoch, sind in extrem großer Gefahr, sogenannten „reparativen Therapien“ ausgesetzt zu sein! (Auch in Deutschland 😦 .) Reparative Therapien für bisexuelle, lesbische und schwule Teenager und Erwachsene (also, die versuchen sie heterosexuell zu machen) werden heutzutage nicht mehr von Ärzt_innen und ordentlichen Therapeut_innen angeboten, sondern nur noch von fundamentalistischen religiösen Organisationen. Reparative Therapien für Transkindern hingegen existieren weiterhin und werden von normalen Kliniken angeboten! Sie versuchen, Transkinder (und geschlechtsausdrucksvariable [gender variant, gender non-confirming] Kinder, die sich möglicherweise später als trans herausstellen könnten) zu Ciskindern zu machen, d.h. ihre Geschlechtsidentät (und üblicherweise auch ihre Geschlechtspräsentation und ihren Geschlechtsausdruck) auf das bei der Geburt zugewiesene Geschlecht auszurichten. Den Eltern wird gesagt, sie müssen dem Kind das „Crossdressen“ verbieten, ihnen die Spielzeuge wegnehmen, die angeblich nicht zu ihrem Geschlecht passen und das Kind dazu bringen/zwingen mit anderen (Cis-)Kindern des gleichen zugewiesenen Geschlechts zu spielen. Egal ob das Kind tatsächlich trans ist oder nur ein Ciskind, das gern die Kleidung des anderen Geschlechts trägt oder mit den dafür als typisch erachteten Spielsachen spielt – es ist sofort zu sehen, welcher riesige Schaden damit angerichtet wird! Nichtsdestotrotz werden Eltern dazu gedrängt. Eltern, die die medizinischen Entscheidungsrechte für ihr Kind verloren haben, z.B. nach einer Scheidung, werden ggf. nicht mal gefragt oder ihre Meinung ignoriert und ein Gericht oder ein_e Sozialarbeiter_in entscheidet. Die Lage ist nicht völlig hoffnungslos, es gibt auch Therapeut_innen und Kliniken, die Transkinder darin unterstützen, in ihrem wahren Geschlecht zu leben und rechtzeitig vor Beginn der Pubertät Hormonblocker zu erhalten.

Also, das war die Liste der medizinischen Behandlungen, die (einige) Transmenschen benötigen. Ich habe vorher erwähnt, dass diese notwendigen Behandlungen ihnen oft verwehrt werden. Das geschieht durch sogenanntes Gatekeeping. Ein Gatekeeper (Torwächter_in) ist jemand, der_die an einem Tor steht (in diesem Fall am Tor, hinter dem sich die gewünschten Hormone und Operationen befinden) und diejenigen, die hindurch gehen wollen, Fragen stellt, und die meisten aufhält oder stark verzögert. Transmenschen werden gezwungen, über alle möglichen künstlich geschaffenen Hürden zu springen, bevor es ihnen „erlaubt“ wird, Hormone zu nehmen. Sie müssen „beweisen“, dass sie wirklich trans sind / dass sie wirklich das Geschlecht haben, von dem sie sagen, dass sie es haben. („erlaubt“ in Anführungszeichen, weil niemand eine Erlaubnis braucht (brauchen sollte), um sein_ihr Menschenrecht auf medizinische Versorgung wahrzunehmen. „beweisen“ in Anführungszeichen, weil es nicht möglich ist, seine Geschlechtsidentität zu beweisen oder dass man unter Geschlechtsdysphorie leidet – die einfache Aussage muss genügen.) Je nach den Gesetzen im jeweiligen Land oder Bundesstaat, aber ggf. auch je nach Klinik, Arzt_Ärztin oder Therapeut_in können die Hürden stark variieren. Es kann sein, dass sie zuerst ihren Namen ändern müssen, so dass er zu ihrem Geschlecht passt, um Zugang zu transmedizinischer Versorgung zu erhalten – oder es kann sein, dass sie ihren Namen erst ändern können, nachdem sie bestimmte medizinische Behandlungen begonnen oder vollendet haben. (Du findest, es ist völlig widersinnig, dass es in einigen Ländern so ist und in anderen Ländern umgekehrt? Das ist es. So wie alle Formen von Gatekeeping.) Es kann sein, dass sie eine Mindestdauer an Psychotherapie nachweisen müssen – oder dass sie nur eine geringe Anzahl Therapiestunden genehmigt bekommen, obwohl sie mehr wollen. Es kann sein, dass sie gezwungen werden, erst einen „Reallifetest“ zu machen, was bedeutet, in ihrem „Zielgeschlecht“ / ihrer „Zielgeschlechtsrolle“ zu leben: das könnte 3 Monate dauern, oder 6 (so ist es meist in Deutschland), oder 1 Jahr (z.B. in Schottland) oder 2 Jahre (z.B. in England) oder der_die Therapeut_in ändert die Zeit immer mal wieder spontan (und ggf. müssen sie ein Familienmitglied oder eine_n Freund_in mitbringen, der_die bestätigt, dass die Transperson wirklich bereits in ihrem Zielgeschlecht lebt … und wehe diese Person benutzt einmal versehentlich das falsche Personalpronomen); für viele ist es zu unerträglich, das zu durchleben, ohne bereits Hormone einzunehmen und – wenigstens teilweise – das Erscheinungsbild ihres Körpers geändert zu haben. Es kann sein, dass sie zum_zur Therapeut_in in der Kleidung und ggf. dem Make-up gehen müssen, die ihrem Geschlecht entspricht – oder genauer gesagt, die den altmodischen Vorstellungen des_der Therapeuten_in entspricht. Es wurden Transfrauen Hormone und Hormonblocker verweigert, weil sie Hosen trugen. Es gibt Transmänner, die keine Hormone bekommen haben, weil sie noch auf ihrem alten Damenrad fuhren. Ich mache keine Witze. Wegen dieser schwer zu erfüllenden Kriterien, bestellen sich viele Transfrauen und männlich zugewiesene genderqueere Personen Testosteronblocker und Östrogen bei Internetapotheken (in Ländern, wo dies möglich ist, z.B. in den USA). Das ist riskant, denn hohe Dosen von Östrogen können zu Herzinfarkten führen (oder sogar relativ niedrige Dosen, wenn die Person eine Vorerkrankung hat). Testosteron kann man nicht ohne Rezept bekommen, da der Verkauf gesetzlich beschränkt ist. In Großbritannien lassen sich viele Transmenschen privat behandeln, was sie aus eigener Tasche bezahlen müssen, statt die kostenlose/steuerfinanzierte NHS-Versorgung zu nutzen, um um den Reallifetest herumzukommen oder ihn dramatisch abzukürzen.

Das Gatekeeping muss aufhören! Transmenschen dürfen nicht mehr dazu getrieben werden, sich ohne ärztliche Überwachung selbst zu behandeln oder für medizinische Behandlungen, die ihnen kostenfrei zu stehen, selbst zu bezahlen und sich dafür oft zu verschulden. Hormone und geschlechtsangleichende Operationen müssen auf Wunsch verfügbar sein, nur abhängig von medizinischer Beratung (Informationen über die zu erwartende Wirkung und Überprüfung, ob es medizinische Gründe gibt, eine Behandlung nicht zu machen).

Hinweis: Außer der Geschlechtsdysphorie, die sich auf den Körper bezieht, gibt es auch soziale Geschlechtsdysphorie, die Dysphorie (Traurigkeit, emotionalen Schmerzen) darüber/dadurch, als Mann oder als Frau behandelt zu werden, wenn man das nicht ist – den falschen Namen gerufen zu werden, mit den falschen Personalpronomen benannt werden, als Herr oder Frau soundso angesprochen zu werden, im Englischen mit sir oder mam tituliert werden, oder unmittelbar gesagt bekommen „Du bist ein Mann/eine Frau/mein Sohn/meine Tochter/…“. Beides ist schlimm, die körperliche und die soziale Geschlechtsdysphorie.

(5) Geschlechtsidentität

[Englisch: gender identity]

Personen, die sich als weiblich betrachten, weibliche Personalpronomen bevorzugen und es vorziehen, als Mädchen/Frau/Schwester/Tochter/… bezeichnet zu werden, haben eine weibliche Geschlechtsidentität. „Identifiziert sich als weiblich/Frau“ und „ist weiblich/eine Frau“ ist dasselbe.

Personen, die sich als männlich betrachten, männliche Personalpronomen bevorzugen und es vorziehen, als Junge/Mann/Bruder/Sohn/… bezeichnet zu werden, haben eine männliche Geschlechtsidentität. „Identifiziert sich als männlich/Mann“ und „ist männlich/ein Mann“ ist dasselbe.

[Die englischen Begriffe im folgenden Abschnitt sind im deutschen Sprachraum teilweise (noch) nicht etabliert.]

„Genderqueer“ ist eine Sammelbezeichnung für nicht-binäre Geschlechtsidentitäten, also Personen, die sich als zwischen männlich und weiblich, sowohl männlich als auch weiblich, weder männlich noch weiblich, geschlechtslos, drittes Geschlecht oder ohne Bezug auf das binäre Geschlechtssystem identifizieren. Man kann drei grobe Gruppen von genderqueeren / nicht-binären Identitäten unterscheiden, um das Verständnis zu erleichtern:

  1. Androgyn (was aber auch eine Form des Geschlechtsausdrucks ist, siehe weiter unten), intergender oder genderqueer im engeren Sinne (statt als Sammelbegriff) – Identitäten auf einem Spektrum zwischen männlich und weiblich. Personen relativ genau in der Mitte benutzen eher „androgyn“. Personen auf der weiblichen Seite des Spektrums benutzen oft den Begriff „genderqueere Frau“ und manchmal „female of center“ oder „auf dem MTF-Spektrum“ (letzteres, falls ihnen bei der Geburt das männliche Geschlecht zugewiesen wurde; „auf dem MTF-Spektrum“ scheint nicht sehr oft verwendet zu werden). Personen auf der männlichen Seite des Spektrums benutzen teilweise den Begriff „genderqueerer Mann“, „male of center“ oder häufig „auf dem FTM-Spektrum“ (falls ihnen bei der Geburt das weibliche Geschlecht zugewiesen wurde). [Welche Begriffe ich als häufig oder selten verwendet wahrnehme, ist davon beeinflusst, welchen US-amerikanischen, britischen und deutschen trans* Blogs, Forums, Tumblrs und Twitterern ich folge, ich könnte also falsch liegen.]
  2. Agender, neutrois, geschlechtsneutral, geschlechtslos: Manche Menschen haben keine Geschlechtsidentität, manche haben eine und sie ist agender/neutrois/neutral, für manche macht das keinen Unterschied (aber für andere schon, also nimm bitte nicht an, dass es egal ist – biete z.B. in Formularen, die das Geschlecht (= die Geschlechtsidentität) abfragen, auch die Option „keins“ an). Ich habe öfter gelesen, dass „neutrois“ impliziert, dass die Person medizinische geschlechtsangleichende Maßnahmen wünscht, während „agender“ der umfassendere Begriff ist, der sowohl transsexuelle (= körperlich genderdysphorische) als auch „nur“ transidente Menschen einschließt. Ich habe aber auch vehemente Ablehnungen dagegen gelesen, dass „neutrois“ die transsexuelle Variante von „agender“ sei. Also vielleicht ist das nicht der Unterschied, oder es gibt keinen. Manche agender Menschen bezeichnen sich nicht selbst als genderqueer (vielleicht als Abgrenzung zu genderqueer im engeren Sinne, siehe 1). Einige nicht-transsexuelle agender Personen bezeichnen sich auch nicht als trans/trans* (z.B. weil sie es vermeiden wollen, ein Wort für sich verwenden, das ihnen vielleicht nicht zustehe). Hinweis für Cismenschen über agender/Geschlechts(identitäts)losigkeit: Vielleicht denkst du gerade: „Hey, ich fühle mein(e) Geschlecht(sidentität) eigentlich auch nicht so wirklich, vielleicht bin ich ja agender?“ Einerseits ist das nicht völlig unmöglich. Andererseits schrieb jemand dazu mal: „Wenn Unterwäsche passt, bemerkt man sie nicht.“ So ist es auch mit Geschlechtsidentitäten, wenn du kein Problem mit dem Geschlecht hast, das dir zugewiesen wurde, wirst du es auch nicht großartig bemerken.
  3. Bigender (männlich+weiblich), bigender (zwei andere Geschlechter, z.B. männlich+genderqueer), multigender (drei oder mehr Geschlechter/Geschlechtsidentitäten, offensichtlich), genderfluid (die Geschlechtsidentität verändert sich im Verlauf von Minuten, Tagen oder Monaten, je nach Person), aber auch multiple, plural & median (Menschen mit mehreren Persönlichkeiten/Personas/head mates/Alters mit zwei oder mehr verschiedenen Geschlechtern; es könnte ein Mensch mit Dissoziativer Identitätsstörung durch Trauma sein oder aber auch ein gesundes System, bei dem es beim Wechsel zwischen den Persönlichkeiten nicht zu Gedächtnisverlusten kommt).

Nicht wirklich eine genderqueere Geschlechtsidentität, aber auch nicht binär: Manche intersexuellen Personen, die sich nicht als (nur) männlich oder (nur) weiblich identifizieren, sondern als beides, keins oder dazwischen, bezeichnen ihre Geschlechtsidentität als „intersexuell“. (Andere intersexuelle Personen betrachten „intersexuell“ als Teil ihrer Identität, aber nicht als ihre Geschlechtsidentität. Wieder andere sehen es nur als medizinischen Fakt, körperliche Variation, evtl. auch als Krankheit, Behinderung oder Störung, aber nicht als Teil ihrer Identität.)

In der englischsprachigen Transcommunity haben sich zwei geschlechtsneutrale Pronomen durchgesetzt, einerseits „singular they“ (mit their/them/themself – statt themselves) und andererseits das erfundene Pronomen ze (mit entweder zir/zir/zirself oder zir/zim/zimself oder einer Kombination oder Variation davon). Aber es gibt auch andere, etwa ey/eir/em/emself oder xe. Im Deutschen gibt es einige Versuche, etwa sier/sihr(e)/sihm/sihn oder andere Versuche, männliche und weibliche Pronomen miteinander zu verknüpfen, aber es hat sich noch keine weit verbreitet. Die Höflichkeit gebietet es, genau die Pronomen zu benutzen, um die eine Person gebeten hat. „Aber das ist erfunden“ ist kein Argument.

Hinweis: Im Englischen wird in einem Trans*-Kontext oft einfach „gender“ statt „gender identity“ gesagt. „gender“ hat aber auch die WHO-/feministische Bedeutung (siehe (7)), in der es im Deutschen verwendet wird. Verwechsle die beiden nicht. Verwechsle sie vor allem nicht absichtlich (das geht an die TERFs).

(5a) Angeborene Geschlechtsidentität

[Englisch: innate gender identity]

Manche (also ein nicht bekannter Prozentsatz) der Transmenschen empfindet ein starkes angeborenes (nicht-erlerntes) Wissen, dass sie männlich, weiblich oder genderqueer sind. Sie würden Behauptungen, dass sie ein Mann, eine Frau oder eine Person anderen Geschlechts „sein wollen“ vehement ablehnen. Manche von ihnen haben jahrzehntelang versucht, ihr wahres Geschlecht zu unterdrücken und abzulehnen, und haben es nur akzeptiert, weil das Unterdrücken unerträglich wurde. Die meisten würden sagen, dass ihre Geschlechtsidentität eigentlich immer da war und sie sie nur entdecken /  herausfinden mussten und aufhören, sie zu unterdrücken.

Andere Transmenschen empfinden so etwas nicht. „Ein Mann/eine Frau/genderqueer sein wollen“ und „ein Mann/eine Frau/genderqueer sein“ könnte für sie genau das gleiche sein. Oder ihre Geschlechtsidentität ist für sie eine stark körperliche Sache, also damit verbunden, wie ihr Körper hätte sein sollen / wie er durch Hormoneinnahme und Operationen entsprechend ihren Wünschen wird/geworden ist (also mit ihrem neurologischen Geschlecht). Oder für sie war es eine Entscheidung, eine Frau oder ein Mann oder ein anderes Geschlecht zu werden / darin zu leben (während viele keine Wahl haben).

Also vielleicht gibt es eine angeborene Geschlechtsidentität oder vielleicht gibt es sie nicht oder vielleicht für einige Leute und für andere nicht oder sie ist bei manchen Leuten schwächer ausgeprägt (so dass sie vielleicht mehr Wahlmöglichkeiten haben, oder es könnte sein, dass sie es nur schwerer haben, ihre Geschlechtsidentität herauszufinden) und stärker bei anderen. Und für einige ist eine angeborene Geschlechtsidentität eine unbestreitbare Wahrheit und für andere könnte es schädlich sein, wenn sie versuchen, ihre „wahre“ Geschlechtsidentität herausfinden zu wollen (z.B. möchte eine Person gern eine Frau sein und wäre als Frau am glücklichsten und zufriedensten, aber sie befürchtet, dass sie vielleicht „in Wirklichkeit“ „nur“ genderqueer ist … oder umgekehrt).

Die Unterscheidung, die ich zwischen der angeborenen internen Geschlechtsidentität und der externen/gelebten Geschlechtsidentität sehe ist ungefähr so: Sagen wir, einer Person wurde bei der Geburt das männliche Geschlecht zugewiesen, sie bevorzugt weibliche Personalpronomen und neutrale sind für sie okay, sie/sier benötigt einen Testosteronblocker und Östrogen und muss ihre/sihre Hoden und Gesichtsbehaarung loswerden, um die Dysphorie zu bekämpfen, sie/sier mag ihre/sihre Haare kurz, hasst Röcke und findet, auf sie/sihn passt am besten die Identität der butchen Transfrau. Und eine andere Person hat vielleicht das gleiche bei der Geburt zugewiesene Geschlecht, die gleichen oder ähnliche bevorzugte Pronomen, benötigt die gleichen medizinischen Maßnahmen, um glücklich sein zu können, und ihre/siehre Geschlechtspräsentation ist auch ähnlich bis identisch, aber sie/sier identifiziert sich als genderqueere Frau. Also ihre internen/angeborenen Geschlechtsidentitäten, falls sie der Meinung sind / das Gefühl haben, dass sie sowas haben, könnte so etwas sein wie „female of center, definitiv viel weiter auf der weiblichen Seite, als mir zugewiesen wurde“, ihr neurologisches Geschlecht ist sowas wie „deutlich auf der weiblichen Seite“ und ihrer präferierter Geschlechtsausdruck ist „masculine of center“, und all das und möglicherweise noch weitere Dinge (vielleicht sogar ihre sexuelle Orientierung) beeinflussen zusammen, was ihr externe/gelebte/vielleicht auch „gewählte“ Geschlechtsidentität wird.

Ich bin nicht sicher, ob das alles einen Sinn ergibt. Das ist nur der Eindruck, den ich bekommen habe beim Lesen von Transblogs, -chats und -forums, die sich zuerst zu widersprechen schienen („Es gibt keine Geschlechtsidentität!“ „Gibt es doch, ich hab eine!“).

Natürlich wäre eine interne/angeborene/biologische Geschlechtsidentität nicht etwas, was nur Transmenschen hätten. Vielleicht haben viele Leute, die als Cismenschen leben und herumlaufen „in Wirklichkeit“ eine angeborene genderqueere Geschlechtsidentität, z.B. agender, sie bemerken es nur nicht, weil sie kein großes Unbehagen mit ihrem zugewiesenen Geschlecht erleben.

(6a) Geschlechtsmarkierung/-darstellung/-präsentation/-aufmachung

[Englisch: gender presentation]

Gender presentation, die äußere Darstellung unseres Geschlechts ist: Unser Haarschnitt. Unsere Kleidung. Unser Zubehör wie Handtaschen. Unser Make-up und Nagellack oder dessen Fehlen. Unser Schmuck.

Diese „Geschlechtsaufmachung“ findet auf einem Spektrum statt: feminin|femme|effeminiert — androgyn und genderfuck — maskulin|butch|(macho).

„Effeminiert“ ist nur eine Bezeichnung für feminine Männer und Jungen. Manchmal wird es als abwertend betrachtet, deshalb benutzen einige Männer es nicht gern. Aber ein Teil der femininen  Transmänner bevorzugt es, weil es die Verwechslungsgefahr mit Lesben und Frauen allgemein verringert.

Femme und butch waren ursprünglich Begriffe der lesbischen Community, aber sie werden auch von schwulen Männern gebraucht. Und letztendlich hat die Geschlechtspräsentation nichts mit der sexuellen Orientierung zu tun, also können auch bi-, hetero- und asexuelle Menschen diese Begriffe verwenden. („Nichts damit zu tun“ ist vielleicht etwas zu stark, wahrscheinlich gibt es statistische Zusammenhänge. Es scheint mehr feminine schwule Männer als feminine Heteromänner zu geben und mehr butche Lesben als butche Heterofrauen … oder vielleicht trauen sie sich nur häufiger, die Geschlechtsnormen zu übertreten, wer weiß.)

Es ist nicht nur jede sexuelle Orientierung mit jeder Geschlechtspräsentation kombinierbar, offensichtlich passt auch jede Geschlechtsidentität mit jeder Geschlechtspräsentation zusammen. Frauen können femme, androgyn, genderfuck oder butch sein (oder irgendwas dazwischen oder außerhalb des Spektrums). Insbesondere, ich sollte es eigentlich nicht erwähnen müssen, können Transfrauen butch sein und das macht sie nicht zu Männern, genau so wenig wie es eine Cisfrau zu einem Mann machen würde. Männer können sich ebenso als femme/effeminiert, androgyn, genderfuck oder butch präsentieren (oder dazwischen oder außerhalb des Spektrums). Und muss ich extra sagen, dass auch Transmänner jede dieser Geschlechtspräsentationen wählen können, und dass feminine Transmänner nicht „ihre Transition bedauern“ oder irgendetwas in der Art? Natürlich gibt es wiederum statistische Zusammenhänge. Viele Frauen präsentieren sich feminin. Männer haben eine noch höhere Wahrscheinlichkeit, sich maskulin zu präsentieren (auch weil die Gesellschaft feminine Männer bestraft). Und viele genderqueere Personen streben einen androgynen Look an (aber es gibt auch femme und butch Menschen mit einer genderqueeren Geschlechtsidentität).

(6b) Geschlechtsausdruck (umfasst 6a, die geschlechtliche Aufmachung)

Der Geschlechtsausdruck umfasst einerseits Frisur, Kleidung und alles andere, was schon bei 6a genannt wurde, und darüber hinaus alle Verhaltensweisen, die als typisch männlich oder typisch weiblich betrachtet werden, in der Gesellschaft, in der die Person lebt. Unsere Auswahl an Beruf und Hobbys. Die Bücher, die wir lesen, die Fernsehsendungen, die wir uns ansehen und welche Spiele wir spielen. Wie wir mit anderen Sprechen. Wie wir unser Zimmer oder unsere Wohnung dekorieren. Ob wir Plüschtiere in unserem Bett haben. Bei Kindern: Mit welchen Spielzeugen sie spielen.

Um es mit den Worten von PFLAG, der Organisation der Eltern, Familienangehörigen, Freunde und Verbündeten von LGBT-Personen, zu sagen: Every gender expression is valid. Jeder Geschlechtsausdruck ist gleichermaßen zulässig und gültig. [Welcoming Our Trans Family and Friends]

(6c) Angeborener bevorzugter Geschlechtsausdruck

In ihrem Buch “Whipping Girl: A Transsexual Woman on Sexism and the Scapegoating of Femininity” [Eine transsexuelle Frau über Sexismus und das Zum-Sündenbock-Machen von Femininität] stellt Julia Serano eine interessante Frage (und beantwortet sie auch gleich): Warum haben einige Männer eine starke Präferenz für eine feminine Geschlechtspräsentation und einen femininen Geschlechtsausdruck, obwohl die meisten von ihnen strikt dagegen sozialisiert wurden und obwohl die Gesellschaft sie dafür bestraft, in Form von Spott, Weniger-ernst-genommen-Werden bis hin zu körperlicher Gewalt? Ebenso, warum haben einige Frauen eine starke Präferenz für eine maskuline Präsentation und einen maskulinen Ausdruck ihrer selbst, und warum gibt es das schon sehr lange, auch schon, als Mädchen und Frauen noch aktiv davon abgehalten wurden? Ihre Antwort: So wie sexuelle Orientierung, neurologisches Geschlecht und (interne) Geschlechtsidentität Dinge sind, mit denen wir wahrscheinlich geboren werden, werden wir wahrscheinlich auch mit einer Präferenz für Femininität oder Maskulinität geboren. Nicht in einem unmittelbaren Sinn wie eine Präferenz für Röcke, das wäre albern – schottische Männer sind im Durchschnitt nicht femininer als die in anderen Teilen der Welt. Eine Präferenz sich mit dem zu assoziieren, was in der jeweiligen Gesellschaft als feminin oder maskulin betrachtet wird.

(7) Gender, die WHO-Definition oder feministische Definition (wie sie auch in Gender-Studies-Vorlesungen verwendet wird)

[Englisch: gender; auf Deutsch wird auch der englische Begriff gender gebraucht und er wird im Gegensatz zum Englischen üblicherweise nur hierfür gebraucht.]

Die WHO [World Health Organization, Weltgesundheitsorganisation] schreibt:

Gender refers to the socially constructed roles, behaviour, activities and attributes that a particular society considers appropriate for men and women.

The distinct roles and behaviour may give rise to gender inequalities, i.e. differences between men and women that systematically favour one group.”

Zu Deutsch:

“Gender bezeichnet die sozial konstruierten Rollen, Verhaltensweisen, Aktivitäten und Eigenschaften, die eine bestimmte Gesellschaft als für Männer oder Frauen angemessen betrachtet.

Diese verschiedenen Rollen und Verhaltensweisen können Geschlechterungleichheiten verursachen, also Unterschiede zwischen Männern und Frauen, die die eine Gruppe systematisch bevorzugen.”

Um es sonnenklar zu machen: In fast allen Gesellschaften/Kulturen auf unserem Planeten ist die bevorzugte Gruppe die der Männer, d.h. sie sind Patriarchate. Es gibt nur noch sehr wenige Matriarchate.

Wenn wir also sagen, dass „Gender/Geschlecht sozial konstruiert ist“, dann meinen wir damit, dass die Gründe für den geringen Prozentsatz von Frauen in Führungspositionen, die geringere Bezahlung für „typische Frauenberufe“, dafür dass Mädchen diese Berufe weiterhin wählen, dafür dass Frauen im selben Job weniger verdienen als Männer und so weiter und sofort in der Gesellschaft liegen und nicht in der Biologie.

Falls du versuchst, „Geschlecht ist sozial konstruiert“ zu benutzen, um die Existenz oder Legitimität von Transmenschen abzustreiten, krabbel bitte in das Loch zurück, aus dem du gekommen bist, und bleib dort.

(A) Sexuelle Orientierung (keine Definition von Geschlecht)

Nicht (8), weil es keine Bedeutung von Geschlecht ist. Da die meisten Transgender 101s nach den Erklärungen für sex und gender auch sexuelle Orientierung erwähnen, dachte ich mir, ich sollte das auch tun.

Transsexualität klingt zwar so ähnlich wie Hetero-/Bi-/Pan-/Homo-/Asexualität, hat aber nichts mit der sexuellen Orientierung zu tun. Transsexuelle Menschen erklären körperliche Geschlechtsdysphorie und wünschen medizinische geschlechtsangleichende Maßnahmen. (Intersexuelle Menschen, die medizinisch transitionieren, rechnen sich teilweise selbst zu den transsexuellen Menschen, teilweise aber auch nicht.) Transidente Menschen, also Transmänner, Transfrauen und genderqueere Personen, sind Menschen, die sich nicht mit dem Geschlecht identifizieren, das ihnen bei der Geburt zugewiesen wurde. (Intersexuelle Menschen, die sozial transitionieren, rechnen sich teilweise zu den transidenten Menschen, teilweise nicht.) Transmenschen können jede erdenkliche sexuelle Orientierung haben, genau wie Cismenschen. Sie transitionieren nicht, um „heterosexuell zu werden“. Genau so wenig transitionieren sie wegen „Autogynophilie“ oder irgendeinem anderem Unsinn, der behauptet, Transmenschen machten ihren Körper zu dem, was sie sexuell begehren. Eine lesbische Transfrau ist eine lesbische Frau und kein heterosexueller Mann – das sollte ziemlich offensichtlich sein.

Für diejenigen, die sich fragen, ob ein Mann, der sich von einer Transfrau angezogen fühlt, schwul oder hetero ist, lasst uns zu den grundlegenden Definitionen zurückgehen:

  • Ein schwuler Mann ist ein [Cis- oder Trans-]Mann, der sich zu anderen [Cis- und/oder Trans-]Männern hingezogen fühlt und nicht zu Frauen. Es heißt nicht „zu Penissen hingezogen“.
  • Ein heterosexueller Mann ist ein [Cis- oder Trans-]Mann, der sich zu [Cis- und/oder Trans-]Frauen hingezogen fühlt und nicht zu Männern. Es heißt nicht „zu Vulvas/Vaginas hingezogen“.
  • Eine lesbische Frauen ist eine [Cis- oder Trans-]Frau, die sich zu anderen [Cis- und/oder Trans-]Frauen hingezogen fühlt und nicht zu Männern. Es heißt nicht „zu Vulvas/Vaginas hingezogen“.
  • Eine heterosexuelle Frau = eine [Cis- oder Trans-]Frau, die sich zu [Cis- und/oder Trans-]Männern hingezogen fühlt und nicht zu Frauen. Es heißt nicht „zu Penissen hingezogen“.
  • Bisexuelle/pansexuelle Cis-/Trans-Männer/Frauen/genderqueere Personen fühlen sich zu Männern und Frauen und (potentiell) Menschen (mancher oder aller) anderen Geschlechter hingezogen.
  • Asexuelle Menschen erleben keine primäre sexuelle Anziehung zu anderen Personen.

Ich könnte noch viel mehr über sexuelle Orientierung schreiben, aber das würde einen kompletten Artikel füllen.

(B) Alternative Ansichten zu den Definitionen von sex und gender identity

Mit alternativ meine ich Ansichten von Transmenschen, die aber auch innerhalb der Transcommunity (noch?) nicht weit verbreitet sind (nicht die Ansichten von Leuten, die Transmenschen hassen).

Manche Transmenschen sagen nicht, sie haben eine Geschlechtsidentität (gender identity), sondern ein Geschlecht (sex), meinen damit aber das gleiche. Einige sagen „Transmenschen bekommen Geschlechtsidentitäten, Cismenschen Geschlechter“ (und meinen damit, dass sie das ablehnen). Der Grundgedanke ist, dass sex als Sammelbegriff für die körperlichen Geschlechtsmerkmale ziemlich bedeutungslos ist. Und da „männlich sein“ = „sich als männlich identifizieren“ und „weiblich sein“ = „sich als weiblich identifizieren“, ist sex ein besseres Wort für das, was in einem Transkontext meistens Geschlechtsidentität genannt wird.

(Sei vorsichtig, wenn du an Blogs vorbeikommst, die „sex not gender“ im Titel oder der Tagline haben, die Wahrscheinlichkeit, dass es von Leuten betrieben wird, die Transmenschen hassen, liegt bei über 95%.)

(C) Andere Bedeutungen von transgender

Im Englischen kann sich transgender sowohl auf trans-gender-identity beziehen (sich nicht als das Geschlecht betrachten, das einem zugewiesen wurde) als auch auf trans-gender-expression (sich nicht so kleiden, verhalten etc., wie es für das eigene Geschlecht als typisch und angemessen betrachtet wird) beziehen, wobei die erste Bedeutung dominiert. Im Deutschen scheint es vorwiegend für die zweite Bedeutung verwendet zu werden, also Crossdresser und geschlechtsanarchische (gendervariant/gender-non-conforming) Menschen.

Ende. Ups, für einen Einführungstext ist der Text doch ein bisschen lang geworden (15 Seiten DIN A4). Aber obwohl er schon ein bisschen fortgeschrittener ist, deckt er noch längst nicht alles ab. Ich bin z.B. noch nicht mal zu Schwulen Mädchen (girl fags) und Lesbischen Jungen (guy dykes) gekommen.

Ich möchte mich bei allen Transmenschen in meinem Leben dafür bedanken, dass sie da sind. Ich hoffe, ich hab in diesem Blogpost nicht zu viel Müll geschrieben.


by Sash at November 07, 2013 12:17 AM

November 02, 2013



will das nicht. brauche das nicht.
bin nicht da für frau_enbilder, die nichts mit mir zu tun haben.

frauisierte sein. mehr frau ist nicht drin, als das, was von außen draufprojeziert wird.¹

und dieses zwischen ist doch wieder ein platz. will ich überhaupt einen platz? lolnope. das gefühl immer einen platz zugewiesen zu bekommen. „vorsicht, dass du nicht in »männliches« verhalten rutschst!“ das auch »dazwischen sein« wieder an einer männlichen norm ausgerichtet ist. androgynität nichts anderes ist als boyish girls, angleichen an männlich wahrgenommenes. no, I don’t want this either.
dinge, die ich mag: glitter, weite schwarze kleidung, nicht eindeutig zuordnendes.
das gefühl, dass mich jedes detail an meinem äußeren, meinem verhalten, whatever was klischee weiblichem entspricht, entlarvt. mich entlarvt als schau_spiel, als eins, das es „nicht so ernst meint mit queer“ …

/ schnitt /

das viele sehen an queeren performances, was geht, für mich evtl auch geht? sich an orten, die sich queer_feministisch verorten instant wohlfühlen. es fällt ein bisschen von dem ab, was mir zugeordnet wurde und wird an »frau sein«
die leere und sicherheit_dazwischen wollen und doch nicht aushalten.


a societal construct referring to roles, characteristics, behaviors, appearances, and identities that develop through cultural interpretations of genetic sex. one’s sense of being woman, man, girl, boy, androgynous, or sth else entirely, or of being perceived as woman, man, etc.²


gender binary / gender dualism.
a system that defines and make room for two and only two distinct, natural, and opposite genders (i.e., male and female). these two genders are defined in opposition to each other, such that masculinity and feminity are seen as mutually exclusive. in this system, there is no room for any ambiguity or intermingling of gender traits.²


gender roles.
cultural norms dictating how „men“ and „women“ are supposed to behave and look in a society. expects people to have certain personality characteristics, act and dress a certain way based on their assigned sex. labels these behaviors as either masculine or feminine.²

ich möchte selbst bestimmen. selbst bestimmen, wie ich mein gender performe. wie ich dieses gender dann nenne. ob ich es benenne. »performance«, ich fühle mich als wäre ich ohne mein einverständnis auf eine bühne gezerrt worden. perfekt ausgeleuchtet, und alle außer mir scheinen perfekt vorbereitet und wissen genau was sie tun müssen.

warum wissen diese ganzten typen so genau, wie sie sitzen und gucken und kaugummi kauen? will ich das alles auch ganz genau wissen und können? will ich überhaupt zu einer klaren seite gehören? was für seiten gibt es? mann und frau und […]? eine seite ist jedenfalls falsch für mich, das ist diese komische frau-seite.¹

/ schnitt /

Cosplay (コスプレ kosupure), short for „costume play“, is a performance art in which participants wear costumes and accessories to represent a specific character or idea.³


BMO’s gender.
BMO’s gender variiert je nachdem wer spricht oder welches szenario dargestellt wird. andere charaktere beziehen sich auf BMO mit pronomen, die zu „beiden“ geschlechtern gehören.


a person, who redefines or plays with gender norms, or who refuses the gender binary altogether. a label for people who bend / break the rules of gender and blur the boundaries.²

queer als

kritisches betrachten von geschlecht und sexualität / sachen sichtbar machen /grenzen zu verschieben_aufzuweichen⁴


dass zweigeschlechtlichkeit, cisgender und heteronormatives paarungsbestreben niemals als selbstverständlichkeit sondern immer nur als merkwürdige, kritisch zu betrachtende phänomene behandelt wurden.
was weiblichkeit und männlichkeit alles sein kann, dass diese dinge shiften und fließen und aufbrechen und sich wandeln können.¹


² queer hspva. an introduction to queer activism and hspva’s gender and sexuality alliance.
⁴ transkription aus heiterscheitern1



by grimegrrrl at November 02, 2013 11:43 PM

October 30, 2013


Über den Frauen*anteil in einem feministischen Umfeld

Die Flauscheria bloggt (Liste der Teilnehmenden noch unvollständig). Viel und toll und es macht Spass zu schreiben und zu lesen. Besonders freue ich mich über Beiträge aus dem queer_feministischen Themenspektrum, beispielsweise diesen über das unfreiwillige in Geschlechter_rollen gepresst werden oder diesen Rant über Nicht_allies.

Was mir schon früh in der Planung dieses Vorhabens auffiel: unter den geplanten Eisenbloggenden waren nur wenige nicht cis-männliche Personen. Das mag unter anderem daran liegen, dass die Planung großteils in einem IRC-Channel stattfand, der einen recht hohen cis-Männeranteil aufweist. Es mag auch daran liegen, dass Frauen und_oder genderqueere Personen, vor allem wenn sie zu queer_feministischen Themen bloggen, deutlich stärker auf Ablehnung, Hass und Anfeindungen stoßen, als cis-Männer, und daher die Hemmschwelle größer ist. Die Liste der Gründe endet hier sicher nicht, aber bei dem konkreten Projekt habe ich diese beiden Punkte als Hauptgründe wahrgenommen, deshalb möchte ich mich darauf konzentrieren.

Zum ersten Punkt: die Planung fand in einem cis-männlich dominierten Umfeld statt. Dazu könnte einer* natürlich argumentieren, dass dies nunmal der bevorzugte Kommunikationskanal der*s Organisierenden ist, dass diese*r ja nichts dafür kann_können, wie das dortige Publikum sich zusammensetzt und dass es zwar bedauerlich sei, aber nicht in der Macht einer oder weniger Personen liege, daran kurzfristig etwas zu ändern. Bei dieser Argumentation drängen sich mir aber doch einige kritische Fragen auf. Wie kommt es eigentlich, dass in einem ausdrücklich profeministischen Umfeld ein cis-männlich dominierter Kommunikationskanal bevorzugt wird? Wie kann es überhaupt sein, dass ein Kommunikationskanal in einem solchen Umfeld überwiegend aus cis-männlichem Publikum besteht? Und wie wollen wir eigentlich die Welt revolutionieren, wenn wir schon bei der Aufgabe klein beigeben, unser direktes, feministisch geprägtes Umfeld zu entpatriarchalisieren?

Der andere Punkt hängt weniger mit dem konkreten Umfeld zusammen: Frauen und_oder genderqueere Personen müssen mit mehr Antagonismus rechnen, wenn sie allzu laut ihre (nicht mainstreamkonforme) Meinung sagen. Selbstverständlich lässt sich dazu anbringen, dass die Organisierenden keinen Einfluss auf die antagonisierenden Trolle und Hater haben. Wünschenswert wäre es allerdings meiner Ansicht nach, dass sie sich zumindest bei der Planung dieses Umstands bewusst sind und darauf eventuell mit Lösungsstrategien reagieren, beispielsweise einer Infrastruktur, die anonymes oder pseudonymes Bloggen ermöglicht_vereinfacht.

Insgesamt hätte ich mir von einer Projektplanung in einem solchen Umfeld etwas mehr Problembewusstsein und proaktive Lösungsstrategien erhofft. Wer, wenn nicht wir, soll denn sonst damit anfangen?

by felis at October 30, 2013 07:20 PM

October 29, 2013


Portal on Linux: fix black screen without textures

Problem: I just bought Portal for Linux. When I start the game on my AMD64 laptop with Debian testing, I only see black objects, and a few light stripes in between. Everything else works, I can hear sound, I can interact with objects, and I can look and around, in which case the stripes also move in the right directions, so they seem to be speckles or reflections rendered on objects, and only the textures are missing.

Solution: Searching the Steam forums resulted in nothing (who would have guessed), but this forum post suggested to update Mesa to version 9.2 and install libtxc-dxtn or libtxc-dxtn-s2tc0. This packages were not installed on my system, and the description for the package says that it is used for texture compression, so it seems to be related. So I first tried to install the i386 version:

aptitude install libtxc-dxtn-s2tc0 libtxc-dxtn-s2tc0:i386

After restarting Portal, the problem was gone, so I refrained from updating my Mesa :-)

Before and after images (probably Copyright by Valve, but I consider this to be fair use):

October 29, 2013 03:26 AM

October 28, 2013

Sash42 (englisch)

What is sex? What is gender?

This text is available in German: Was ist Geschlecht? | Please accept my (semi)anonymity.

This is a 101 (= introductory) post on the multiple meanings of the words sex and gender. It is directed at cis (= non-trans) dyadic (= non-intersex) people, as most trans and intersex people probably know everything or almost everything I write here. I learned most things I write here from trans women and trans men and a few things from genderqueer people (= non-binary trans people) and intersex people.

[The cultural context is, for the most part, Europe, North America and similar regions/countries.]

I used to think it was really neat that English had the separate words sex and gender for what is only called Geschlecht in German and has to be clarified regarding what is meant. But by now I think it actually causes more problems than it solves, as it results in people just using sex or gender and thinking their audience / conversation partner will pick up the same meaning as they intended, even though each of these means at least 2 to 4 different things. So, what are the meanings?

(0) Grammatical gender

Some languages have three genders: masculine, feminine, neutral. Some have two: masculine and feminine. Some have two others: masculine+feminine and neutral (okay, kinda, usually the pronouns have three genders anyway). Some don’t have genders. Some languages gender (this is gender as a verb) the pronouns, nouns, articles and adjectives (e.g. German and French), some only gender some of these types of speech, e.g. only the pronouns (for example English).

There are a lot of interesting things that could be said about grammatical genders, but not in this article, otherwise I would not get to write about anything else.

Only so much: The people who say “Words have genders. People have sexes.” clearly come from 1954, as the word gender has been used for people since 1955 (in the “WHO meaning” of the word, see the last of the definitions in this text).

(1) Legal sex/gender

Most, if not all, countries record a legal sex / legal gender on the birth certificate and some other forms of identification. The words sex and gender are used interchangeably for the legal status.

Some countries allow trans people and/or intersex people to change their legal sex/gender, some conservative countries sadly don’t. Few countries so far allow “on demand” changes of the legal sex/gender (e.g. Argentina), some have mild requirements (letter from a therapist or doctor, e.g. in several US states), some have severe requirements (demanding specific kinds of medical treatment e.g. surgeries or infertility [scrapped in many countries including Germany and Sweden because it’s a human rights violation] and/or demanding therapy and/or demanding one or two lengthy and expensive psychological evaluations [e.g. 2 in Germany] – how anyone besides the person zirself is supposed to be able to evaluate zir gender identity is a mystery).

Many trans and some intersex people who have more than one citizenship and/or do not live in the country they were born in (in the case of strongly federally organized countries like the US even if they live in a different state) end up with more than one legal sex/gender. That can have pretty fucked-up results, like not being able to get a divorce or not inheriting from their deceased spouses. (This is of course only one of the ways trans and intersex people are treated in fucked-up ways even in the supposedly most progressive countries.)

Most countries have two legal sexes/genders, male and female. A few have a third, e.g. India – see for example the India Visa Application Form. There the third gender is translated into English as “transgender”, which is a bit problematic as many, possibly most, trans people identify as male or female (not as a third gender) – it’s unclear whether trans women should choose female or transgender, whether trans men should choose male or transgender. [Well actually in this particular case it’s not so unclear, they have to choose whatever their passport says.] However, the in-community term for non-binary people, “genderqueer”, has not yet entered mainstream language, so it’s better than not having a third option at all. Also, in the case of India and other cultures with traditional third genders, “genderqueer” is (usually) not an accurate translation, either – the Indian third gender encompasses intersex people (who were visibly intersex at birth), (some? all?) trans women and (especially in the past) castrated men (“eunuchs”). Some cultures (e.g. some Native American peoples) have four traditional genders, but I don’t know of a country that has four legal sexes/genders, yet.

But to come back to the cultural context of Europe, North America etc., for which this article is written: Germany has introduced a third legal sex/gender this year, intersex children are to be registered with a “blank” sex/gender. Not as good as it may initially sound, intersex organizations oppose this, as it causes mandatory outings and may actually cause parents to go through with surgeries early to be able to register their child as M or F. (Protecting intersex children from surgeries before they are old enough to understand and consent is the number 1 priority of intersex organizations worldwide; in Germany and many other countries this is far from being achieved.)

Let’s talk about passports again: While passports can serve as ID in most countries for most purposes (sometimes additional proof of address may be needed) they are firstly international travel documents and thus have to follow international agreements. They can show the following three sex/gender markers: M, F or X (but most countries do not issue passports with the X marker). Blank sex/gender markers or others (e.g. IS-F and IS-M as suggested by some German intersex organizations) are not possible in passports. (Up to about 10 years ago some countries including Germany issued passports with blank sex/gender markers to transitioning people. Since then rules got a lot stricter; you probably mostly noticed the stricter rules for biometric photos.) Passports do not necessarily have to show the same sex/gender marker as is the legal sex/gender of that person in that country (depending on the laws of the country), e.g. in the UK the requirements for changing the sex/gender marker in the passport are lower than the requirements for changing the legal sex/gender. New Zealand specifically permits passports with sex/gender marker X for people diagnosed with transsexuality/gender identity “disorder”/gender dysphoria based on a letter from the therapist or doctor. (They do not permit X for intersex people, yet, as far as I have followed the news.) Optimally any and all people should be able to get passports with M, F or X according to their choosing – also multiple ones, as entering some countries disclosing trans status (or maybe even intersex status?) can be dangerous. (Having more than one passport for the same country is not unusual, e.g. if you have stamps from Israel passports you will need to get a separate passport for entering many Muslim countries.)

What are the legal consequences of being legally male or female (or other)? Not a lot anymore, in most progressive countries.

  1. Mostly it impacts whether you can get married or only registered as civil union, domestic partnership or a similar legal relationship with lesser rights (in countries where such a distinction is still made).
  2. It may influence whether you can join the army and perform certain roles – women might have only the right to do medical and music services (as in Germany until the year 2000, when German women successfully sued against this limitation at the European Court of Justice), or they might be allowed to perform most roles: usually except fighting directly on the front line. Even the US does not send women to the front line in fighting roles (they have supportive roles near the front line, though, and carry weapons with them). Also, men can get drafted, women cannot in most countries. Israel drafts both men and women, men for 3 years, women for 2 years.
  3. Until 2009 Germany and all other countries bound by an international worker protection agreement from 1935 did not permit women to work in mines under the surface of the earth. The European Court of Justice ordered EU countries to leave the agreement. Other countries may still be bound by it.
  4. In most countries the legal sex/gender will decide which jail/prison, gendered emergency group residence for the homeless or gendered group residence for refugees you will end up in. Needless to say, the result is usually disastrous for trans people who have not been able to change their legal sex/gender, yet. (Trans men are often also in danger in men’s facilities.) Rape is frequent. Abuse by other inmates/residents and by police, prison wards, security people or administrators is frequent. Homeless trans people may not be able to enter either men’s or women’s facilities, no matter which legal sex/gender they have. Trans people in general are often victims of abuse by police even if they successfully changed their legal sex/gender, and treated as members of the sex/gender they were assigned at birth (for example trans women forced to dress or undress in front of or searched by police men).
  5. In most not-Anglosaxon countries the name has to match the legal sex/gender. The effects for trans people may vary. E.g. originally the German legal transitioning process considered a name change near the beginning of the transitioning process, then a period in which name and legal sex/gender did not align (with various situations in which one could lose the name again, e.g. marriage and child birth – most of which have been scrapped by courts in the meantime), and then after “completing” transitioning the change of the legal sex/gender. Since the courts also scrapped surgery requirements for trans women in 2009 (for trans men it was struck down around 2000) this is not the case anymore, name and legal sex/gender can be changed together (requiring, as mentioned, two expensive psychological evaluations).

In more conservative countries the legal consequences can be a lot more, of course (similar to those Europe, North America etc. had let’s say a hundred years ago and in some cases still in the 1950s). Women might not be allowed to vote, work (without the husband’s permission), drive, open bank accounts (without the husband’s co-signature) or sign contracts in general. Men might not be allowed to wear “women’s clothes” and vice versa. By the way, up to the 19th century visibly intersex children (i.e. those with ambiguous genitalia at birth) were generally raised as boys, for the purpose of not depriving a possible boy child of the rights of a man. (Nowadays such intersex children are often raised as girls, because female genital construction surgeries are easier – which are often performed without waiting whether the child develops a male or female (or other) gender identity or whether even a female-identified child or young person is interested in having her genitals altered in this way.)

Arguably in countries were women and men have equal legal rights and the discrimination of same-sex couples (meaning same-legal-sex/gender couples) has been abolished we don’t need a legal sex/gender anymore. But how do we protect the rights of trans people to gender-appropriate jails and group housing if there is no legal sex/gender? I’m not sure. Maybe we should make the legal sex/gender optional.

Damn, I thought the section on legal sex/gender would be like one or two short paragraphs. Now it looks like I could have written an article on this topic alone. Do not despair, let’s go to the next meaning of sex and gender.

(2) Sex/gender assigned at birth

Trans women are female-identified people who were assigned male at birth. Cis women are female-identified people who were assigned female at birth. Trans men are male-identified people who were assigned female at birth. Cis men are male-identified people who were assigned male at birth. Genderqueer (=non-binary) people identify not (or not only) as men and not (or not only) as women and may have been assigned male or female at birth. “Female-identified person” and “female person” and “woman” mean the same; likewise “male-identified person” and “male person” and “man” mean the same. Thus we can also write: Trans women are women who were assigned male at birth. Cis women are women who were assigned female at birth. Trans men are men who were assigned female at birth. Cis men are men who were assigned male at birth. (For young people replace women with girls and men with boys.)

Common abbreviations: FAAB (female assigned at birth), AFAB (assigned female at birth), CAFAB (coercively assigned female at birth, i.e. without asking the child first – which causes considerable harm to children who turn out to be trans). MAAB (male assigned at birth), AMAB (assigned male at birth), CAMAB (coercively assigned male at birth).

Assignment refers to non-surgical assignment, i.e. some or all of the following things (partially depending on the parents): Saying “this is a girl” or “this is a boy” at birth and informing relatives and friends such. Noting it down on the birth certificate. Giving the child a feminine or masculine name. Referring to the child with “she” or “he”. Possibly giving the child “girl toys” or “boy toys” and maybe telling them not to use the other toys. Possibly dressing the child in “girl clothes” or “boy clothes” and maybe telling them they can’t have the other clothes. Enrolling the child in the nursery, preschool, kindergarten or school as a girl or boy. And so on and so on.

What about intersex children (whose intersexuality is visible at birth due to ambiguous genitalia)? In most countries they are also assigned the male or female sex/gender at birth (as mentioned Germany starts to register them without legal sex/gender this year, but they are probably assigned a sex/gender by their parents anyway, i.e. raised as a boy or girl). Some of those intersex people who change their lived/expressed gender and/or their legal sex/gender in the course of their lives identify as trans, some don’t. (The medical definition says that only dyadic (= non-intersex) people can be diagnosed as trans, but the trans and intersex communities and individuals are obviously not bound by what cis dyadic people decided for them in their medical catalogs.)

Why not say “biologically male” or “biologically female”? As we will see further down, neurological sex as well as gender identity are or at least can be partially or fully biological, too. Also: Trans women are female, thus they are not male and therefore also not biologically male, and vice versa for trans men. Genderqueer people are not or not only male and not or not only female, thus they are also not biologically male or female. (A few trans men and trans women and many, especially non-transsexual, genderqueer people might not object to being called biologically male or female – of course they can call themselves whatever they want; this does not give cis people the permission to use these terms on other trans people, not even those with the same gender identity and body configuration as a trans person they know who is okay with it.) Other objections: See anatomically / physically male/female.

Why not say “genetically male” or “genetically female”? Did you get a chromosome test? Are you sure you have exactly two sex chromosomes? Are you sure they are the ones you guess they are? Maybe you have X, XXX, XXXX, XXXXX? XXY, XXXY, XYY? Or mosaic, with some cells with one set of chromosomes and some cells with a different set? (Actually most people with Turner Syndrome (X) and many with Klinefelter Syndrome (XXY, XXXY or XXXXY) know, as there are other noticeable symptoms.) Also: Trans women are female, thus they are not male and therefore also not genetically male. Vice versa for trans men. You can figure it out for genderqueer people by now, I am sure. (Some trans people use genetic men for cis men and genetic women for cis women. Some also use genetically male or female for themselves. Of course they can refer to themselves however they wish – this does not entitle cis people to do the same.)

Why not say “man in a woman’s body” or “woman in a man’s body”? Let’s hear a (generic) trans man about this: “I am a man. This is my body. Therefore it is a man’s body. Which woman’s body could it possibly be, who did I supposedly steal it from?” Analog for trans women.

Why not say “anatomically” or “physically” male or female or “male-bodied” or “female-bodied”? First, you probably don’t know the medical transition status of the trans person – and in the vast majority of cases you have no right to know (and it would be incredibly rude to ask). So, is a trans woman anatomically/physically male / male-bodied even if she has a vagina and vulva and no more penis and testicles? Just because she has a Y chromosome, lacks a uterus (which about a third of all cis women lack by the end of their lives, too) and, if she did not have access to hormone blockers during her first puberty, possibly masculine bone structures? I think most people would not seriously call a post-op trans woman anatomically male, except out of spite (I’m looking at you, TERFs [trans-exclusionary radical fauxminists]). What about pre-op / no-op trans women? Considering the penis-worship in our societies I can see how some cis people would call any person with penis anatomically or physically male or male-bodied. But have a look at a trans woman after taking estrogen and spiro or another androgen-blocker for some time: Is a woman with breasts, fat distributed in a feminine pattern to the hips and butt and softened skin anatomically/physically male / male-bodied, just because she has a penis, which you can’t even see under her clothes in most cases? Similarly for trans men: For example, most trans men get top surgery (mastectomy + shaping of masculine breasts), many have a hysterectomy (removal of uterus and ovaries) and only a relatively low number choose to get any of the various genital surgeries. Is a bearded man with deep voice, male-pattern boldness, masculine facial features, a typically male fat and muscle distribution (with any excess fat migrating to the belly) anatomically/physically female / female-bodied? Where does it start, where does it end, what’s the cut-off point for being biologically/anatomically/physically male or female? Okay, you say, but what about trans people prior to starting transitioning? (Or those who choose not to transition medically.) It varies. Some trans men and FAAB genderqueer people consider their pre-transitioning bodies to be female and some trans women and MAAB genderqueer people consider their pre-transitioning bodies to be male. But some trans men say: Fuck this, I’m male, I have always been male – and so has my body. Likewise for the other groups. The tendency seems to go towards the second approach (especially among female-to-male-spectrum trans people). Obviously, there is nothing wrong with either form of self-attribution, everyone can call their body including their sex characteristics whatever the fuck they want.

Why not say “socialized as male” or “socialized as female”? First, you don’t know that. Some trans people recognize their true gender identity very early, already around the age of 3, when children start figuring out what the words he and she, boy and girl mean. Some parents are very supportive and let their child already transition socially so early that they can even be registered for school as the girl or boy they are. So some trans boys/men have been socialized male after the initial 3 (or however many) years and some trans girls/women female. Second: Girls, or let’s say correctly female-assigned children, are not wrapped in a pink bubble at birth and protected from any masculine influences. Likewise, boys, or more precisely male-assigned children do not grow up in a blue bubble. Gendered social influences come from all directions, not just the parents, but siblings, friends, teachers, books and TV. Little “girls” also learn how boys and men supposedly are to behave. Little “boys” also learn how girls and women are supposed to be. Think about it: Most little “boy” children are not told anymore nowadays that they are not supposed to cry – but seeing an unrelated adult say this to an unrelated (supposed) boy on the playground can be enough to put this into the mind of the witnessing child, of any assigned and actual gender. How much of the socialization for children of their actual gender trans children pick up as part of their view of themselves or their behaviors is hard to say, probably it varies by child and e.g. by how much they are aware of their gender identity already and by how tolerant the parents are of gender-variant behavior. Nevertheless, it hardly needs to be said, if a trans person wants to describe themself as socialized as male or female it’s nobody’s place to tell them they should not. Whatever words they choose to describe themself and their life are correct.

A final note: One can argue both for “sex assigned at birth” (as the assignment is based on the looks of the genitals and, in the case of ambiguity, possibly tests of the cells in the gonads or genetic tests) and for “gender assigned at birth” (as it is the gender in which the parents intend to raise the child). The distinction is not particularly important in this case.

(3) Anatomical or physical sex, sometimes also biological sex, or just sex

Woah, are we at definition 3 already? It’s going so fast *cough cough*.

This is easy right? Penis = anatomically/physically/biologically male, no penis = anatomically/physically/biologically female, right? Pure biology, no problems? Except not.

First, sex is a social construct. Wait, you say, it’s biological, it’s not a social construct! But it is. The individual sex characteristics are biological. Interpreting a set of them as male or female sex or as intersex(ual) is social.

Let’s look at the sex characteristics.

Primary (birth / pre-puberty) sex characteristics that are considered female: ovaries, uterus, vagina, vulva, XX chromosomes (though we already saw that can vary).

Secondary (post-puberty) sex characteristics that are considered female: breasts, no facial hair, high voice, no visible Adam’s apple, little and light, soft hair on arms/legs/chest/belly/back, monthly period, estrogen and progesterone flowing through one’s blood vessels.

Primary sex characteristics that are considered male: testicles, scrotum, penis, XY chromosomes (though we already saw that can vary).

Secondary sex characteristics that are considered male: facial hair, no breasts, deep voice, visible Adam’s apple, a lot and darker, coarser hair at least on arms and legs, often also on chest/belly/back, able to produce sperm, testosterone flowing through the blood vessels.

Primary sex characteristics that are or may be considered an indicator for intersexuality: enlarged clitoris, micropenis (note that clitoris and penis are basically the same organ; whether an organ is an enlarged clitoris or a micropenis can be open to interpretation), partially or fully grown-together labia, partially open (on the under side) penis, hypospadias (urethra opening on the underside of the penis), epispadias (urethra opening on the upper side of the penis), blind-ending vagina, life-threatening problems with the regulation of salt levels in the body (CAH = congenital adrenal hyperplasia), streak gonads (gonad cells have not turned into either ovary cells or testicle cells; both ovary and testicle cells appearing in the same human can only happen in the case of mosaicism), XY chromosomes and female-looking primary sex characteristics (for example partial or complete androgen insensitivity), XX chromosomes and male-looking primary sex characteristics.

X, XXX, XXXX with female appearance and XXY, XXXY, XYY with male appearance are usually not considered intersexuality; however, X-women might show up as male, XXY- or XXXY-men might show up as female in chromosome tests, as these often test for the Barr body, the inactive X (in XX humans one X is active, the other is inactive; in XY humans the X is active; so in typical cases an inactive X indicates femaleness).

Secondary sex characteristics that are or may be considered an indicator for intersexuality: lack of breast development, lack of penis and/or testicle growth, lack of development of pubic hair, lack of menstruation, lack of ejaculation, no sperms in ejaculate, infertility, secondary sex characteristics developing opposite to what was expected.

Let’s ignore intersex people for the rest of this section to keep things a bit simpler.

Think about a woman who has really hairy legs. Would you consider her a man? Certainly not. How about a man who lacks most body hair (except pubic hair) and developed little or no facial hair during puberty? You would probably not even notice. A guy not having a visible Adam’s apple? Still a man. A woman who develops one because of some hormonal or iodine imbalance? Still a woman. What about a man who lost his penis and/or balls in an accident or war? Still a manly man. What about if he never had a penis because his bladder developed outside his body? He might not even be considered intersex if the testes developed normally. What about a woman with size A or below breasts? What about a woman whose uterus is taken out (which happens to about 1/3 of all cis women, as it is the best treatment for many uterus-related problems post-menopause), does she stop being a woman? Hardly. What about menopause itself, no more periods and little estrogen and progesterone in the body – does this make older women neutrums? What about men with moobs (men-boobs) in size A, B or C? You see, the maleness and femaleness of many sex characteristics is not set in stone.

And, as outlined before: A trans man with 100% sex characteristics that are traditionally considered female might still call himself anatomically/physically/biologically male / male-bodied. A trans women with 100% sex characteristics that are traditionally considered male might still coll herself anatomically/physically/biologically female / female-bodied. And there is nothing wrong with that. Nor with those who do it the other way around.

A last word about chromosomes (we stop ignoring intersex people now): Even setting aside XY women with complete androgen insensivity (CAIS) and the SRY gene (sex-determining region of Y gene) breaking off from the Y and translocating to an X, there are about 30 known genes (3 on X, 1 on Y, the others on autosomes = non-sex-chromosomes) that can result in XY women with a typical female phenotype (vulva etc.) or XX men with a typical male phenotype (penis etc.). In extremely rare cases XY women have given birth. So if you ever feel like saying “But $person will always be a man because they have a Y chromosome!” or “But $person will always be a woman because they have no Y chromosome!” just say nothing, kthxbye. That applies to intersex people of any appearance and to trans people.

And a final word about basic politeness: What someone else’s genitals look like is none of your business. That doesn’t change if that person is trans or intersex. So don’t ask.

(4) Neurological sex

Already when we are born our brains know certain things about our bodies. Yes, we have to learn a lot of stuff, like how not to shit our pants and how to walk on two legs, but some things are already there. For example what kind of sexual organs we have and approximately what to do with them. This clearly is a huge evolutionary advantage, species without such knowledge don’t live very long. You think this knowledge is completely learned and comes only during puberty when our levels of sex hormones spike? You are mistaken. If the thought that 3-year old girls and boys masturbate disturbs you, I guess you should never read a book on child development. Sex hormones already flow through our bodies before birth. The wrong amount or the wrong hormone at the wrong time, or let’s better say atypical instead of wrong, can result in (some of the types of) intersexuality, which is well-researched in that regard. (The term Disorders of Sex Development [DSD] is also used. There are pro’s and con’s for using it instead of or in addition to intersexuality, some intersex people reject it, some embrace it. ISNA [Intersex Society of North America] has written two articles about this: DSD But Intersex Too: Shifting Paradigms Without Abandoning Roots and Why is ISNA using “DSD”?. In short they recommend the use of DSD when discussing the treatment of infants – including protection from unwanted surgeries – and the continuation of the use intersex among the organizations where adults organize and as self-description, including possibly for one’s gender identity.) Other atypical hormone levels or timing of hormones in the womb are said to lead to homo-, bi- and asexuality, though there is no scientific proof for this, yet. And similarly likely, but unproven, is that certain atypical hormone levels or timings before birth might be the cause for transsexuality / gender dysphoria.

What is gender dysphoria like? [Trigger warning for the rest of the paragraph for trans people who are triggered by graphic descriptions of gender dysphoria.] Gender dysphoria is knowing you should have a penis, but there is none. Gender dysphoria is not being able to go into the bathroom in your apartment because there is a mirror and you might see your feminine or masculine face. Gender dysphoria is a little trans girl waking up at night, crying and screaming, because she had another nightmare about getting hair all over her body when she grows up. Gender dysphoria is hating your penis so much you might injure yourself if your insurance won’t pay for SRS [Sex Reassignment Surgery]. Gender dysphoria is being depressed because the wrong hormones are flowing through your blood vessels. Gender dysphoria is crying when you shave because there shouldn’t be any hair growing out of your face. Gender dysphoria is hating your breasts with a passion. Gender dysphoria is seeing yourself on a photo or in the mirror and thinking “OMG, I look like a woman|man, I have to throw up!” while everyone else shrugs and says “But you are a woman|man!”. Gender dysphoria is being extremely upset by your erections even if nobody is there who could see them. Gender dysphoria is hating your period not just for the inconveniences or physical pain it causes, but because you just know that you should not be bleeding. Gender dysphoria is feeling during masturbation or sex that something is wrong, and it’s wrong with your body. Gender dysphoria is all kinds of unbearable emotional pain.

Not all trans people experience all forms of dysphoria described here. There are quite a number of trans women who don’t mind their penis (and might or might not mind erections) – that is why it was/is horribly wrong when laws mandate(d) SRS [Sex Reassignment Surgery] as a requirement for being able to change one’s legal sex/gender! Some trans women don’t care overly much that they have to shave every day, or they wouldn’t be bothered except for the reactions they get by cis people (misgendering, i.e. being treated as if they were men). While some trans men want to get rid of their uterus as fast as possible, a few even like to get pregnant (around 5%, informal surveys show … maybe not that much higher than cis men, except those can’t?) – laws that require(d) trans people to be infertile (and in some countries like Sweden even to destroy eggs or sperms that were preserved!) to obtain legal sex/gender changes were/are a human rights violation just like requirements for SRS. Also any other of the examples of gender dysphoria described in the previous paragraph might not be present in an individual trans person – this does not make them less trans, less female or male! Even people who don’t feel any gender dysphoria at all and do not wish any body modifications might be trans women, trans men or genderqueer – because that only depends on the gender identity, to which we will get next. Also, some trans people simply don’t need some of the medical interventions – some trans men have very small breasts that they don’t mind passing off as moobs (men-boobs), some trans women never had any significant amount of facial hair, some look sufficiently (for their own taste and/or for passing) masculine, feminine or androgynous without hormonal intervention.

But the majority of binary trans people (i.e. trans men and trans women) and maybe half (nobody really knows) of genderqueer (= non-binary) trans people do experience gender dysphoria and do wish to modify their bodies so that their anatomies matches what their brains are telling them should be there – and denying them these medical procedures or excluding them from health care coverage is a monstrous human rights violation, too! Note that most changes are achieved by hormones and hormone blockers and work gradually over a period of months and years (the second puberty), it’s not a one-off “sex change operation”, so you (cis people) should remove the words “sex change” from your vocabulary. The hormones are often called HRT for Hormone Replacement Therapy (which, however, is also the term for e.g. cis women after menopause taking estrogen) and sometimes EEI for Exogenous Endocrine Intervention.

Many trans women and some MAAB genderqueer people [with “some” here and in other parts of this text meaning an unknown percentage] do or wish for (some or all of) the following medical interventions:

  • Spironolactone or another androgen blocker to stop the [for them] horrible effects of testosterone: masculinization of the body, hair loss, and direct depression/dysphoria (it’s not completely certain if this is a thing, but because some trans women and MAAB genderqueer people get better within a week after getting spiro and/or estrogen even though the physical effects of hormones and hormone blockers take much longer there are some indications that this could be). When T is blocked, the body becomes significantly less muscular (this can be partially countered by training, if desired; training can also be recommended for preserving bone density).
  • Estrogen (as pills or injection) to grow breasts, get softer/finer skin, slightly less/finer (head/facial/body) hair, redistribute the fat from a masculine pattern at the belly to a feminine pattern at the hips and butt (and to stop the immediate depression/dysphoria, see spiro).
  • In some countries it seems to be common to give trans women and MAAB genderqueer people progesterone and in others this seems to be completely uncommon. Progesterone might increase breast size – or not.
  • Some take separate medication against hair loss.
  • Most want permanent electro or laser hair removal of facial hair and possibly of body hair.
  • Logopedic treatment to exercise speaking in a higher, feminine voice.
  • Orchiectomy, removal of the testes – often done as part of SRS (see next bullet).
  • SRS [Sex Reassignment Surgery], also referred to as Gender Confirmation Surgery or genital surgery: reshaping what previously was the scrotum and penis to a (neo-)vagina, clitoris, labia and short/internalized urethra. (Very little is actually removed [only the testes and the spongy body], so please don’t talk about “cutting off the penis”, this is nonsense.) Sometimes the labia are done in a separate operation. While, as mentioned, not all trans women wish to have SRS, the majority does (and an unknown percentage of MAAB genderqueer people, too).
  • A few have/need/want other surgeries: FFS (facial feminization), breast augmentation, reduction of the size of the Adam’s apple and/or surgeries of the vocal chords (risky).

Many trans men and some FAAB genderqueer people (I am going to use FTM-spectrum trans people for both groups together because this seems to be the common or preferred term, at least in some communities) do or wish for some or all of the following medical interventions:

  • Testosterone (as lotion or injection) to obtain a deep voice, facial and body hair growth, increase the size of clitoris to a micropenis of several centimeters (remember that clitoris and penis are the same organ; erections are possible), redistribute fat from the hips and butt to the belly and make the body more muscular, even with minimal or no training.
  • Estrogen blockers are not necessary for FTM-spectrum trans people that have already completed first puberty (“estrogen poisoning”), as they have already developed breasts (or “bags of fat”, as many like to say) anyway.
  • In some countries it seems to be common to give FTM-spectrum trans people progesterone and in others this seems to be uncommon. Progesterone can be used for stopping periods.
  • “Top surgery”, meaning mastectomy + shaping of masculine breasts, often referred to as simply mastectomy or mastec (which literally is only the removal of the breasts, e.g. what might be done to a person with breast cancer). Before they can access top surgery they wear so-called “binders”, tight, thick, sleeveless shirts that press the breasts close to the body. They can be painful or cause shortness of breath when worn the whole day.
  • Many FTM-spectrum trans people who take T have a hysterectomy (= removal of the uterus, cervix, ovaries and fallopian tubes). Many doctors seem to recommend this because taking T increases the uterus health risks. Some FTM-spectrum trans people people choose to have frequent check-ups instead; others, however, find the check-ups extremely uncomfortable, [TW] as it might be necessary to go to a gynecologist (“women’s doctor”) and for this doctor to put fingers or instruments into a bodily orifice the trans person might not even want to have.
  • “Bottom” or “lower” or genital surgeries: There is not one “sex reassignment surgery”, there are various ones for FTM-spectrum trans people, they might have zero or one or several of them, with some months time for healing in between. They might have lengthening surgery similar to that of their cis male counterparts (e.g. cutting of the ligaments, which increases the visible part of the penis; called metoidioplasty, metaoidioplasty or meta). They might have procedures that form a scrotum (from their labia), in which prosthetic testes are inserted. They might opt for the closing or removal of the vaginal channel. They might have their urethra lengthened. They might have phalloplasty (construction of a penis) where skin is grafted from other body parts. They might choose the implantation of a malleable rod for erections or other supportive prosthetics. (Some of the mentioned procedures can be combined into one surgery.) Currently only a minority of trans men (and FAAB genderqueer people) have any kind of genital surgeries. Reasons include that T alone already produces a penis of several centimeters length, usable for PIV [penis-in-vagina] intercourse, and that the results of the various FTM surgeries are less reliable than those of MTF SRS, more risky regarding complications and nerve damage. On the other hand some trans men have told me that the risks are not that high, but are perpetuated as urban legends in the FTM community/-ies. I cannot estimate the true risks.

In addition, trans people may (or may not) wish psychological therapy to accompany the social changes of transitioning. What they do not wish is therapy to convince them that they are “confused” about their gender identity – they are not confused! Adults and older teens are not in very much danger nowadays to have a therapist that tries to convince them that they are really $assigned_gender, or if they end up with one they can find a better one. Trans children, however, are still in extreme danger of so-called “reparative therapy”! (Also e.g. in Germany 😦 .) Reparative therapy for gay, lesbian and bisexual teens and adults (which tries to make them straight) is not offered anymore nowadays by medical doctors or proper therapists, but only by religious fundamentalist organizations. But “reparative therapy” for trans children exists and is offered by public hospitals: It tries to make trans children (or gendervariant children that appear like they might grow up to be trans) into cis children, i.e. change their gender identity (and typically also their gender presentation and gender expression) to be aligned with their birth-assigned sex/gender. Parents are told they need to prohibit “cross-dressing”, take away toys that do not fit the assigned gender and make the child play with children of the same assigned gender. No matter whether the child is actually trans or just a cis child that likes the clothes or toys considered more suitable for the other gender, I think it can be seen how harmful this is for all of them! Nevertheless parents are still pressured into this. Parents who have lost the rights to decide about medical and psychological treatment for their child for some reason (e.g. after a divorce case) might not even be asked and a court or case worker might order this. Not all is bleak, there are also a lot of therapists and some hospitals that support young trans children to live in their true gender identity and obtain prescriptions for hormone blockers before puberty starts.

So these are treatments trans people require. I mentioned earlier that these necessary treatments are often denied to trans people. This happens by so-called gate keeping. A gatekeeper is someone who stands at a gate (in this case a gate with the proper hormones and surgeries behind it) and asks questions to those who want to come in and prevents most people from entering or delays them a lot. Trans people are made to jump through all kinds of hoops before they are “allowed” to get hormones. They have to “prove” that they are really trans / really the gender they say they are. (“allowed” because nobody [should] need[s] permission for the inalienable right of health care. “prove” because it’s not possible to prove one’s gender identity or what gender dysphoria one experiences.) Depending on the jurisdiction (laws of the country or state) but also depending on the clinic or doctor/therapist these “hoops” vary a lot. They might have to change their name to one matching their gender first – or they might only be allowed to change the name after medical treatment. (You think it’s ridiculous that some countries do it one way and others the other way around? Yes, it is. Just like all gate keeping.) They might have to go through a certain minimum amount of psychological counseling, which could be even a year – or they only get a low maximum amount of counseling sessions even if they want more. They might have to go through a “real life test”, living in their “target gender [role]” for 3 months or 6 months (now common in Germany) or 1 year (e.g. Scotland) or 2 years (e.g. England) or a time that could suddenly change as the therapist sees fit (and they might have to bring a family member or friend that vouches for them that they actually do the real life test and are not lying about it, and hope the person does not slip up and accidentally use the wrong pronoun); for many this is too horrible to face without taking hormones first and – at least somewhat – changing their body’s appearance. They might have to come to the therapist in clothes and make-up that matches their gender – or more precisely matches the therapists often old-fashioned idea of their gender. Trans women have been denied hormones for wearing pants. Trans men have been denied hormones for riding a women’s bicycle. I am not kidding you. Because of the difficulties many trans women and MAAB genderqueer people choose to order spiro and estrogen at internet pharmacies (in countries where this is possible, e.g. the US). This is risky, as high doses of estrogen can result in heart attacks (or even pretty low doses for people who smoke or who have pre-existing medical conditions). Testosterone is not easily available online as it is a controlled substance. In the UK many trans people switch from the free/tax-paid NHS health care to self-paid private health care to avoid or shorten the RLT (real-life test) dramatically.

Enough with the gate keeping, enough with pushing trans people into self-medicating or into paying for health care that should be free, often going into debt! Hormones and surgeries should be available on demand, just based on medical counseling (advise regarding the effects, checks for medical reasons not to go through with them).

Note: Besides the gender dysphoria about one’s body there is social gender dysphoria, the dysphoria about being treated as a man or as a woman when you are not one, i.e. being misgendered – called the wrong name, the wrong pronouns, addressed with Mr., Mrs., Sir, Mam, being told outright “You’re a man/woman/my son/my daughter/…”. Both are bad.

(5) Gender identity

People who consider themselves to be female and prefer female pronouns and being called girl/woman/sister/daughter/… have a female gender identity. “Female-identified”, “female” and “being a woman (or girl)” is the same.

People who consider themselves to be male and prefer male pronouns and being called boy/man/brother/son/… have a male gender identity. “Male-identified”, “male” and “being a man (or boy)” is the same.

“Genderqueer” is a collective term for non-binary gender identities, i.e. people who identify as in between male and female, as both male and female, as neither male nor female, as genderless or third-gender or generally without reference to the binary gender system. Genderqueerness can be separated into three rough groups, for easier understanding:

  1. Androgyne, intergender or genderqueer in the narrow (instead of the umbrella) sense – identifying as on the spectrum in between male and female gender identity. People more or less exactly in the middle most often use the term “androgyne”. People who are somewhere on the female side of the spectrum often use the term “genderqueer woman” and sometimes “female of center” or “on the MTF spectrum” (the latter if they were assigned male at birth; MTF spectrum doesn’t seem to be used a lot). People who are somewhere on the male side of the spectrum may use the term “genderqueer man”, “male of center” or, very often “on the FTM spectrum” (if they were assigned female at birth). [Which terms I perceive as frequent or infrequent is tainted by the US American, British and German trans blogs, forums, tumblrs and twitterers I follow, so I might be off.]
  2. Agender, neutrois, genderneutral, genderless: Some of these people do not have a gender identity, some have one and it is agender/neutrois/neutral, some feel that this doesn’t really make a difference (but for others it makes a difference so don’t assume that it doesn’t – i.e. please offer “none” as an option for gender identities if you make a form where this is queried). I have often read that “neutrois” indicates that one wishes to alter one’s body, i.e. transition medically, while “agender” is the more generic term, encompassing both transsexual/dysphoric people and those who are “only” transgender and not transsexual. I have also read very vehement rejections of the idea that “neutrois” is the transsexual version of “agender”. So this may not be the distinction, or maybe there is none. Some agender people do not consider themselves to be genderqueer (especially considering the more narrow meaning of genderqueer in 1). Some non-transsexual agender people also do not consider themselves to be trans/trans*/transgender (often not wanting to claim a word that might not be theirs to claim).  Note for cis people on agender: Maybe you are thinking now “Hey, I don’t really feel my gender identity either, am I agender?” On the one hand it’s not impossible. On the other hand, as someone described it: When underwear fits, you don’t feel it. Likewise with gender identities, if you are okay with the gender you were assigned, you won’t notice it much.
  3. Bigender (male+female), bigender (two other genders, e.g. male and genderqueer), multigender (three or more genders, obviously), genderfluid (could be varying within minutes, days or months), but also multiple, plural & median (several personalities/personas/head mates/alters with two or more different genders; could be trauma-induced DID [Dissociative Identity Disorder] or a healthy system without any memory loss when switching).

Not exactly a genderqueer identity, but also not binary: Some intersex people who do not identify as (only) male or (only) female but as both, neither or in between, consider their gender identity to be “intersex” (or “intersexual”). (Other intersex people consider intersex to be part of their identity, but not their gender identity. Others only see it as a medical condition, not as part of their identity.)

The genderneutral English pronouns used most in the trans community are on the one hand singular they (with their/them/themself) and on the other hand ze (with either zir/zir/zirzelf or zir/zim/zimself or some variation or combination). Some people use others, e.g. ey/eir/em/emself or even more rare ones. Use whatever pronouns a person prefers. Arguments like “But these are made up!” are invalid.

Important note: In a trans* context “gender identity” is very often referred to with “gender”. Don’t confuse it with (7) Gender below, the WHO or feminist meaning of gender, or how it would be used in a gender studies class in university. In particular do not intentionally confuse the two meanings. (I’m looking at you, TERFs.)

(5a) Innate (“born-with”) gender identity

Some (remember, some means unknown percentage) trans people experience a strong innate (not-learned) knowledge that they are male or female or genderqueer. They would strongly reject the idea that they “want” to be male or female or some other gender. Some of them have tried to suppress or reject their true gender for decades, and only accepted it because of the unbearable pain denying it has caused them. Most would say it has always been there and they only had to uncover, understand or stop suppressing it.

Other trans people feel no such thing. “Wanting to be M/F/X” and “being M/F/X” might be the exact same thing for them. Or they might feel that this is a mostly physical thing (gender dysphoria and its treatment), and their gender identity is closely related to their body [their body as it should have been / as they are making it, so basically to the neurological sex]. Or becoming/living as a woman or a man (or some other gender) might have been a choice for them (while for many it is not a choice).

So maybe there is an innate gender identity or maybe there is not or maybe there is for some people and not for others or maybe it is weaker in some people (so they might have more choices, or it might just mean it’s harder to find out) and stronger in others. And for some a pre-existing gender identity is an undeniable truth and for others it’s actually harmful to try to look for what gender they “really” are (for example a person might feel they want to be a woman and they would be most happy and comfortable as a woman, but they are afraid that they are “really” “only” genderqueer … or the other way around).

The distinction between the internal innate and external/lived gender identity I see is approximately like this: One person might be male-assigned and notice she/ze prefers female pronouns and neutral ones are okay and she/ze needs to get spiro and estrogen and an orchi and facial hair removal to be happy, and she/ze likes to have short hair and hates dresses, and the gender identity she feels best fits her is that of a butch trans woman. And another person might have the same assignment, preferred pronouns, need for medical transitioning and preferred gender presentation, but she/ze feels she is a genderqueer woman. So their internal innate gender identities, if they feel they have such a thing, might be something like “female of center, definitely much more female than I was assigned”, and their neurological sex is “very much on the female side”, and their preferred gender presentation is masculine of center, and all this and possibly other things (maybe even their sexual orientation) together influence what their external/lived/maybe “chosen” gender identity becomes.

Not sure if that actually makes sense. It’s just the impression I got trying to make sense of various trans blogs, chats and forums that at first seemed to contradict each other (“There is no gender identity!” “Yes, there is, I have one!”).

Of course an internal/innate/biological gender identity would not be something exclusive to trans people. Maybe many of the people who live and walk around as cis people are “really” internally / biologically some version of genderqueer, e.g. agender, they just never notice it much, as they don’t feel a strong discomfort with their assigned sex/gender. 

(6a) Gender presentation

Gender presentation is: Our haircuts. Our clothes. Our accessories like handbags. Our make-up and nail polish or lack thereof. Our jewelry.

Gender presentations are on a spectrum: feminine|femme|effeminate — androgynous and genderfuck — masculine|butch|(macho).

Effeminate is only used to describe feminine men and boys. Sometimes it’s considered derogatory, so some men don’t like using it. Some femme trans men prefer it, though, as it avoids confusing them with lesbians or women in general.

Femme and butch were originally used in lesbian community, but they also get used by gay men. And in the end gender presentation has nothing to do with the sexual orientation, so bi, straight and ace (asexual) and any other people can also use the terms. (“Nothing to do” may be a bit strong, there are probably some statistical relationships, there seem to be more femme gay men then femme straight men and more butch lesbian woman than butch straight women … or maybe they are just more likely to go through with the presentation they like, who knows.)

Not only does every sexual orientation go with every gender presentation, obviously also every gender identity goes with every gender presentation. Women can be femme, androgynous, genderfuck or butch (or anything in between or outside of the spectrum). In particular, it seems this needs mentioning, trans women can be butch and this does not make them men, just as it does not make a cis woman a man. Men can present as femme/effeminate, androgynous, genderfuck or butch. And do I need to say that trans men can be any of this, too, and femme trans men are not “regretting they transitioned” or anything? Again, there are statistical relationships. Many women are femme. Men are even more bound to be butch (also because society punishes feminine men), And many genderqueer people present as androgynous (but there are very femme and very butch genderqueer people, too).

(6b) Gender expression (includes 6a gender presentation)

Gender expression includes all of gender presentation and all behaviors that are considered typically masculine or typically feminine in the society one lives in. Our choice of job and hobbies. What books we read, what TV shows we watch and which games we play. How we talk to others. How we decorate our room or home. Whether we have stuffed animals in our bed. For children: what toys they play with.

To say it with the words of PFLAG [Parents, Families, Friends and Allies of LGBT People] in Welcoming Our Trans Family and Friends: Every gender expression is valid.

(6c) Innate preferred gender presentation and/or expression

In her book “Whipping Girl: A Transsexual Woman on Sexism and the Scapegoating of Femininity” Julia Serano raises (and answers) and interesting question: Why do some men have a strong preference for a feminine gender presentation and expression even though most of them were strictly socialized against it and they receive punishment from society for it, from taunts and being taken less serious to violence? Likewise, why do some women have a strong preference for a butch gender presentation and expression, and this has been so for a long time, also when girls and women were still strongly discouraged from this? Her answer: Probably not just sexual orientation, neurological sex and (internal) gender identity are something we are born with, probably we are also born with a preference for femininity or masculinity. Not in an immediate sense like a preference for e.g. skirts, that would be silly – Scottish men are not on average more feminine than those in other parts of the world. A preference to associate with whatever is considered feminine or masculine in the society one lives in.

(7) WHO or feminist definition of gender (also used in Gender Studies university classes)

The WHO [World Health Organization] writes:

Gender refers to the socially constructed roles, behaviour, activities and attributes that a particular society considers appropriate for men and women.

The distinct roles and behaviour may give rise to gender inequalities, i.e. differences between men and women that systematically favour one group.”

To allow no doubt, in almost all societies/cultures present on our planet today the favored group is men, i.e. they are patriarchies. Very few matriarchies are left.

So when we say “gender is socially constructed” we mean the reason for fewer women in leadership positions, jobs typically performed by women being lower paid, girls continuing to choose these jobs, women being paid less for the same job than men and so on and so on is the society, not biology.

If you use “gender is socially constructed” to try to define trans people into non-existence, please crawl back into the hole you have come out of.

(A) Sexual orientation (not a definition of sex or gender)

Not (8), because it’s not a meaning of sex or gender. I thought I’d include it as most transgender 101s, after going through the definitions of sex and gender, include it, too.

Transsexuality may sound similar to heterosexuality, bisexuality, pansexuality, homosexuality and asexuality, but it has nothing to do with sexual orientation. Transsexual people are those who experience gender dysphoria about their bodies and wish to transition medically. (Intersex people who transition medically may or may not identify as transsexual.) Transgender people, i.e. trans men, trans women and genderqueer people are those who do not identify with the gender they were assigned at birth. (Intersex people who transition socially may or may not identify as transgender.) Trans people, just like cis people, can have any sexual orientation. They do certainly not transition to “become straight”. They also do not transition because of “autogynephilia” or any other such nonsense that claims they want to make their body to that which they sexually desire. A lesbian trans woman is a lesbian woman and not a heterosexual man – should be quite obvious.

For those who are confuzzled about whether a man attracted to a trans woman is gay or straight, let’s go back to the basic definitions:

  • Gay man = a [cis or trans] man attracted to other [cis and/or trans] men and not attracted to women. Not: “A man attracted to penises”.
  • Straight man = a [cis or trans] man attracted to [cis and/or trans] women and not attracted to men. Not: “A man attracted to vulvas/vaginas”.
  • Lesbian woman = a [cis or trans] woman attracted to other [cis and/or trans] women and not attracted to men. Not: “A woman attracted to vulvas/vaginas”.
  • Straight woman = a [cis or trans] woman attracted to [cis and/or trans] men and not attracted to women. Not: “A woman attracted to penises”.
  • Bi/pan cis/trans men/women/genderqueer people are attracted to men and women and (potentially) people of (some or all) other genders.
  • Asexual people do not experience primary sexual attraction to other people.

There is a lot more that could be said about sexual orientation, but this will fill another article.

(B) Alternative views of the definitions of sex and gender identity

I mean alternative (i.e. not (yet?) very widespread) views by trans people (not by people who hate trans people).

Some trans people do not say they have a gender identity but instead use sex to express the same thing. They might say “Trans people get gender identities, cis people get sexes” (in the sense of rejecting that this is so). The idea is that using “sex” to mean the summary of sex characteristics is pretty meaningless. And as “being male” = “identifying as male” and “being female” = “identifying as female” sex is really the better word for what is most of the time called gender identity (or just gender) in a trans* context.

(Be careful if you come across blogs that say “sex not gender” in their headlines or tag lines, they have a >95% chance of being run by someone who hates trans people and wants to deny their existence.)

(C) Other meanings of transgender

I need to mention this quickly: I only focused on one meaning of transgender, “trans-gender-identity”, people who don’t identify with the sex/gender they were assigned at birth (and the subgroup of transsexual/gender-dysphoric people). The transgender umbrella is much wider. It also includes “trans-gender-expression”, i.e. crossdressers and gendervariant/gender-non-conforming [GNC] people.

The end. Oops, this got maybe a teeny-tiny bit too long for a 101 post (15 DIN A4 pages). Maybe it’s more of a 102 or 201 post. (But still, it does not cover everything. E.g. I didn’t even get to guy dykes and girl fags.)

I want to thank all the trans people in my life for being there. I hope I didn’t screw up anything too badly in this post.


by Sash at October 28, 2013 06:26 PM

October 27, 2013


gender. oder so.

ich wäre gerne wie bmo. geschlechtslos.
oder ein anderes geschlecht.

ist mein geschlecht jetzt zwingend das biologische geschlecht
das ich bei meiner geburt zugewiesen bekam.

ich habe diesen körper. mit zwei brüsten und einer vagina. einem uterus, und eierstöcken.
ich bin eine frau(TM). durch diesen körper werde ich frau*isiert.

ich möchte diesen körper nicht. an guten tagen kann
ich ignorieren was aus »meinem« körper entsteht_gemacht wird,
an schlechten will ich zerstören_verändern_ausradieren was da ist.

meine weiblichen geschlechtsmerkmale machen mich zu einer frau.
zu frau gibt es feststehende biologische tatsachen.

aus diesen biologischen tatsachen ergeben sich bestimmte meinungen.
wie eine frau aussehen sollte.
welche verhaltensweisen wünschenswert sind und_oder welche sanktioniert werden.

mein körper ist aufgeladen mit bedeutungen.
ist eine leinwand für alle möglichen bilder,
die andere von mir erschaffen_entstehen lassen.

ich möchte nicht frau*isiert werden.
ich möchte nicht weich, sensibel, emotional sein.
ja, das muss ich auch nicht. das sind ja vorurteile.
aber diese vorurteile wirken in mir.
was mir beigebracht wurde über »frau sein« wirkt in mir.

was macht es mit mir, wenn ich teile von dem ablehne, was
selbstverständlich sein sollte?
wenn ich keine brüste haben möchte, und sie abbinde?
damit andere sie nicht (mehr) sehen und viel mehr damit
ich sie nicht mehr sehen muss.
fühlen muss ich sie immer. da ist gewebe und das ist da.

ich bin. weiblich bin ich nicht.

die banalität von kleidung. eigentlich.
anziehen wollen was mich nicht automatisch als frau markiert.
scheitern, weil ich davon keine ahnung habe.
scheitern, weil es nie genügt.
kleidung wird anstrengend. sich anziehen ist anstrengend.

die weite cargoshorts, weil es das einzige ist, in dem ich mich wohlfühlen kann. teilweise.
oberteile sind schwierig. was ist weit genug / was ist farblos genug / …

tausend gedanken was ein fremder mensch von mir denkt.
was gesehen wird, wenn eins mich sieht.

details, die ich mag. typisch »weibliches« das ich mag.
rosa, glitzer, ponies. und das doch gar nicht mit »weiblich« verbinden.

ich mag das halt.

aber fernab von geschlechtszuordnung gibt es nicht.
das gefühl, da sind zwei geschlechter und mich zuordnen zu müssen.
das wissen, dass es nicht so ist. das da so viel mehr ist.

ich will wie bmo sein. geschlechtslos.
oder mit einem »anderen« geschlecht.

vllt mache ich in irgendeiner form weiter mit diesen gedanken.

by grimegrrrl at October 27, 2013 03:08 PM


New Blag, yay!

Sooo. You might already have noticed that I moved my blag from to my own domain. There were several reasons for that, which also kept me from blogging actively. At first, WordPress seemed like a good solution for beginners, and since I didn’t want to set up my own (probably buggy) instance, a hosted blog at seemed like the best solution to get started with blogging.

However, the free plan at does not allow very much customization: you can choose from a few themes, but you can neither edit the underlying HTML framework of the page, nor is is possible to do a little CSS tweaking. For example, I like my <code> tags with a little darker background so they become more distinguished from the remaining text and so you can easily see what you have to type on your keyboard and what not.

Also, I had to write blogposts in my browser. I’m not a big fan of the idea that the browser should become an “operating system” for the web cloud. My computer is more than a dumb terminal for the web, I like my terminals and my offline applications and distributed workflows. In most cases, I find distributed workflows much more flexible, and you can choose if and when you want to lose control over your data to the cloud. And, without question, I lost more than one draft to browser crashes (admittedly, Firefox got a lot more stable since then), accidentally closed tabs and timed out login sessions. And WordPress tends to be overloaded with complex page layouts and JavaScript, which makes everything soooo slooooow…

So it seemed obvious to move my blog to my existing site, which already runs on ikiwiki. For those who do not know ikiwiki, it is a static site generator which takes Markdown1 files as input and spits out static HTML pages. It works good in combination with Git (a distributed version control system, which I use all day anyway), which makes it possible to write and preview every page on your own computer, using your favourite editor, offline (in fact I’m writing this post from a laundrette), and when everything is finished (and you have Internet access), you push it to your server, where everything is rendered. There is also an easy way to aggregate multiple pages to a blog, including the automatic generation of RSS and Atom feeds. Also I have full control over the CSS (which will probably still change in the next few weeks) and the templates used to render the HTML files. For example, I have hacked together a little plugin to support Flattr buttons and integrated it into the template which is used to render the blog posts. There is even a dynamic part of ikiwiki which allows users to add comments, I may or may not try that in the future and convert all the WordPress comments. And finally, if you want, you can read the full source code of every page :-)

The move to ikiwiki was already in my head a long time, so I started writing new blogposts in Markdown right away, so they started piling up on my disk. Now that I have the new setup, I already have content to fill the next few weeks, so stay tuned!

Update: In this process I was also moving the site to a new server, which also provides IPv6 connectivity:

$ dig -t AAAA

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -t AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64670
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;               IN  AAAA

;; ANSWER SECTION:        2629    IN  AAAA    2a03:4000:2:2f3::1

;; Query time: 3 msec
;; WHEN: Tue Oct 29 04:33:03 2013
;; MSG SIZE  rcvd: 57

  1. Though I’m using MultiMarkdown for most pages, which is a superset of Markdown with additional features (like footnotes). But ikiwiki also supports other markup languages, e.g. reStructuredText or Textile. ↩

October 27, 2013 01:21 AM

October 24, 2013


Splitting overly large hunks in patches

Today I stumbled over a lengthy patch on my harddisk. It was about half a year old, and consisted of only one hunk, which was about 1000 lines in length. Most of the contents were indentation changes from tabs to spaces, but I knew that the patch contained a small useful portion, which I wanted to extract. What was slightly more annoying was the fact the the patch did not apply cleanly to the file it was supposed to change, and patch only applies hunks atomically, the whole patch was rejected.

Since I did not want to compare each of the lines in the patch visually and decide whether they changed only whitespace, I tried to look for a way to split the patch into smaller hunks. My first try was looking at the useful tool in the patchutils package, but none of them did what I wanted, they only allowed me to split patches into single hunks (but my patch already had only one hunk).

But after a bit of googling, I found out that Emacs has a diff-split-hunk command, so I installed Emacs (for the first time in my life), opened my patch, selected Emacs' Diff mode with M-x diff-mode, and split the patch into smaller hunks by pressing C-x C-s on appropriate context lines. After saving, the patch applied cleanly except for two smaller hunks, which I could easily identify as containing only whitespace changes. Then I could compare my patched file with the original file, this time ignoring whitespace changes with diff -w, and, voilà, I got the seven useful lines I wanted.

For illustration, see the different edit stages of my patch on a separate page.

October 24, 2013 04:30 PM

October 21, 2013


New to Feminism

Ich bin „neu hier“. Mein Blog gibt es noch nicht lange und zu meinem mir sehr ans Herz gewachsenen Umfeld hier in diesem Internet bin ich auch erst deutlich später hinzugestoßen als die meisten von euch. Entsprechend „neu“ ist meine Beschäftigung mit der Antidiskriminierung, insbesondere mit dem Feminismus.

Das bedeutet nicht, dass ich mich nicht inzwischen gedanklich und emotional sehr viel damit auseinander gesetzt habe. Ich folge vielen (queer-)feministisch und antirassistisch aktiven Menschen auf Twitter und lese ihre Diskussionen und vor allem einige der vielen tollen Blogposts, die sie mir täglich in die Timeline legen. Ich habe selbst schon die ein oder andere Diskussion auf Twitter geführt und dabei mal mehr, mal weniger (bisher zum Glück meist weniger) maskulistischen Hass auf mich gezogen. Und ich habe inzwischen auch ein paar Blogposts in diesem Themenbereich geschrieben.

Ich habe viel gelernt in dieser Zeit. Ich hab mich und meine Einstellung zu vielen Themen grundlegend geändert. Ich habe ein Bewusstsein für den Problembereich Diskriminierung entwickelt. Ich habe meine eigenen Erlebnisse, aber auch mein Verhalten reflektiert und mich mit meinen Privilegien beschäftigt. All das hat viel Zeit und Energie in Anspruch genommen. Es hat mich aufgewühlt, war manchmal schmerzhaft oder zum Haare raufen. Aber es hat mir auch viel gegeben. Ich habe Diskutieren gelernt, kann inzwischen zum Beispiel meinen Bruder, dem ich früher rhetorisch haushoch unterlegen war, recht gut Paroli bieten. Ich habe gelernt, dass ich etwas zu sagen, etwas beizutragen habe – dass meine Worte Gewicht haben. Insbesondere habe ich gemerkt, wie wichtig es für mich ist, meine Meinung formulieren zu können und den Mut zu haben, sie dann auch auszusprechen.

Trotzdem heißt dieser Artikel „New to Feminism“. Ich fühle mich immernoch wie die Neue. Durch meinen späten Einstieg, aber auch dadurch, dass ich immer mal wieder Pausen brauche, immer mal wieder nicht alles mitverfolgen kann, habe ich Lücken. Viele eurer Erlebnisse, die euch geprägt haben und die euch ständig begleiten, Diskussionen, Auseinandersetzungen und Anfeindungen, denen ihr ausgesetzt wart, kenne ich nicht oder nur bruchstückhaft. Und was noch viel schlimmer ist: Viele, viele eurer großartigen Blogposts, in denen ihr diese Erlebnisse schildert und verarbeitet, eure Gedanken formuliert, neue Ansätze entwickelt, kluge Einwände bringt, auf Misstände aufmerksam macht, Richtungen einschlagt, Lösungen sucht und findet, habe ich nie gelesen. Ich möchte einen Trichter haben, der direkt ins Gehirn führt und durch den ich all das Verpasste und Versäumte gießen kann, um es ganz schnell aufzuholen.

Aber bis dahin bitte ich euch: Habt ein wenig Geduld mit mir. Seid mir nicht böse, wenn ich wiederhole, was ihr schon lange wisst. Wenn ich nachfrage, wo euch alles selbstverständlich ist. Und wenn ich eine Referenz auf eure Inhalte versäume, wo sie offensichtlich angebracht wäre. Ich weiß, dass es meine Verantwortung ist, das Wissen aufzuarbeiten, nicht eure, es mir (zum Millionsten Mal) zu erklären.

by felis at October 21, 2013 07:57 PM

September 05, 2013



mein filter ist kaputt. der filter, der alle außenwelt so viel auf abstand hält, dass ich in irgendeiner mangelhaften form mit ihr umgehen kann. alles strömt auf mich ein, stürzt auf mich ein, kann es nicht abwehren. tausende kleine geräusche drängen sich in meinen kopf. alles überlagert sich gegenzeitig. kann nichts mehr auseinanderhalten. 

sitze da und wiege mich vor und zurück. versuch, ordnung zu erzwingen, wo nur noch chaos ist. 

by grimegrrrl at September 05, 2013 04:31 PM

August 28, 2013


My decision doesn’t need your absolution – Pro-Choice muss konsequent werden

Ich freue mich, den folgenden Gastbeitrag veröffentlichen zu dürfen. Die Autorin bleibt zwar anonym, alle Rückmeldungen, insbesondere Flattrs werden aber an sie weitergeleitet.

“Niemand macht das leichtfertig. Leute leiden da ja auch drunter.”
In wirklich jeder Debatte über Schwangerschaftsabbrüche wird dieses Argument irgendwann von Befürworter_innen vorgebracht. Dass Menschen, die eine Schwangerschaft abbrechen, angeblich zwangsläufig unter diesem Schritt leiden, scheint für viele enorm wichtig zu sein.

Warum halten Befürworter_innen das für notwendig?
Der Anspruch, die Entscheidungen und Gefühle anderer zu bewerten und zu (de)legitimieren, ist scheinbar tief verankert.
Anstatt konsequent für Entscheidungsfreiheit zu kämpfen und solidarisch zu sein, wird in selbige eingegriffen, Betroffene werden pathologisiert und bevormundet. Ihr (vermeintliches oder reales) Leiden wird instrumentalisiert, während Menschen, die nicht unter einem Abbruch leiden, die Legitimität ihrer Entscheidung und Gefühle abgesprochen wird.

Offensichtlich hat die “Pro-Life”-Bewegung die Debatte außerdem so weit geprägt, dass ein Schwangerschaftsabbruch nur als allerletzte Notlösung inklusive seelischen Leidens verargumentiert zu werden gewagt wird.

Diese Inkonsequenz ist in einer Bewegung, die für das Recht auf Selbstbestimmung eintritt, absolut fehl am Platz. Pro-Choice muss konsequent werden; d.h., das Recht auf Selbstbestimmung muss konsequent anerkannt werden. Ohne Einschränkungen. Ohne Wenn und Aber. Ein Schwangerschaftsabbruch ist immer gerechtfertigt, wenn der_die Betroffene sich dafür entscheidet. Seine_ihre Entscheidung ist immer legitim. Seine_ihre Gefühle sind immer legitim.

“My body, my choice” hat kein Kleingedrucktes.

by felis at August 28, 2013 03:15 PM

July 17, 2013


„Ey Tüp“ mal ohne Rage

Mein erster Beitrag hier im Blog hat bei einigen für Verwirrung gesorgt und wurde zum Teil anders aufgefasst, als er gemeint war. Deshalb hab ich mich dazu entschlossen, ergänzend einen Erklärbärartikel zu dem Thema zu schreiben.

Es gibt ein Phänomen, das mir öfter mal begegnet, und obwohl ich es auch manchmal bei Frauen erlebt habe, sind es meiner Erfahrung nach häufiger Männer, die sich so verhalten. Meistens entsteht die Situation daraus, dass ich mich zu einem (üblicherweise umstrittenen) Thema äußere, zum Beispiel auf Twitter1. Ein anderer Mensch nimmt diese Äußerung als Anlass, mir seine Meinung zu ebendiesem Thema mitzuteilen. So weit, so in Ordnung, Gedanken- und Meinungsaustausch, yay, großer Fan davon!

Leider handelt es sich aber um genau das in den von mir angesprochenen Fällen nicht. Es findet kein Austausch statt, keine Diskussion, in der beide (oder alle) Teilnehmer aufeinander eingehen, die Meinung der_s Anderen wahrnehmen und darauf Bezug nehmen. Stattdessen verläuft das Gespräch unkonstruktiv und führt zu einer Abwertung der ursprünglich geäußerten Meinung und deren Urheber_in.

Es gibt verschiedene Schemata, nach denen solche Gespräche meiner Erfahrung nach verlaufen, und einige davon möchte ich an (überspitzt dargestellten) Beispielen erläutern:

Szenario 1:

A: Ich mag rote Äpfel nicht.
B: Also meiner Meinung nach ist grün viel schlimmer als rot. Grün ist eine der schlimmsten Farben, die es gibt! Grüne Kleidung passt nicht zu meinen Schuhen und außerdem sind Krokodile grün und die fressen bekanntermaßen kleine Kinder.
A: Naja, das mag ja sein, ist aber nicht relevant dafür, dass mir Äpfel nicht schmecken, die rot sind.
B: Da hast du mich missverstanden, mit Äpfeln hat das ja gar nichts zu tun.
A: Genau. Deine Aussage hat mit meiner nichts zu tun. Bitte lenk nicht vom Thema ab, rote Äpfel sind mir wichtig.
B: Jetzt hab dich doch nicht so, ich werd doch wohl noch meine Meinung sagen dürfen?

Zu keiner Zeit entsteht hier ein Meinungsaustausch. Die erste Aussage wird von Person B gänzlich ignoriert, stattdessen wird einfach nur ein Stichwort aufgegriffen, um sich daraus einen Anlass zu konstruieren, eine Meinung zu etwas loszuwerden, was mit dem ursprünglich Gesagten herzlich wenig zu tun hat. Das Thema wird torpediert und für die eigenen Zwecke umfunktioniert. Damit nicht genug, beim Hinweis auf dieses Verhalten wird Person A zunächst Nichtverständnis und danach Unterdrückung abweichender Meinungen vorgeworfen. Bei einem Blick auf andere Gespräche, die Person B so führt, finden sich dann nicht selten wahlweise weitere Hasstiraden gegen grün und ein Link zum Forum der Vereinigung Deutscher Antigrünisten, oder aber weitere Scheinargumente, die auf diese Weise Diskussionen derailen. Welche Intention nun auch dahinter stehen mag, das Ergebnis ist das gleiche: Es wird von der eigentlichen Aussage abgelenkt und Person A wird durch die Vorwürfe diskreditiert und damit auf struktureller Ebene „besiegt“.

Szenario 2:

A: Ich mag rote Äpfel nicht.
B: Da liegst du aber falsch, rote Äpfel sind viel besser als grüne.
A: Ehm ok, wenn du meinst. Ich mag sie halt nicht.
B: Dann stimmt mit dir irgendwas nicht. Ich weiß dass rote Äpfel besser sind, ich hab dazu mal was gelesen! Und außerdem mögen meine Freunde auch alle lieber rote Äpfel.
A: Bei mir ist alles in Ordnung, ich mag einfach nur keine roten Äpfel. Bitte akzeptier das einfach.
B: Jetzt lügst du aber, wahrscheinlich willst du nur den Roteäpfelanbauern das Geschäft vermiesen.

Auch hier gibt es keinen Meinungsaustausch. Person B lehnt von Anfang an die Gültigkeit der Grundaussage ab und versucht Person A eines besseren zu belehren. Dass es sich nicht um eine faktische Aussage handelt, der ein wahr oder falsch zugeordnet werden kann, sondern um eine Meinungsäußerung, wird ignoriert. Die Meinung von Person A wird nicht respektiert, das vermeintliche „Wissen“ von Person B als universelle Wahrheit dargestellt, mit der Begründung „Ich weiß das aber besser als du“. In Selbstbeschreibungen von Person B finden sich in diesem Fall vielleicht Aussagen wie „vielseitig interessiert“ oder „Universalgelehrter“. Wenn Person A sich dieser Beweismacht nach wie vor verweigert, wird sie als andersartig und als Sonderfall bezeichnet, oder es wird ihr gar Unehrlichkeit und ein unlauteres Motiv unterstellt. Das Ergebnis ist erneut die Diskreditierung von Person A und deren Meinung und damit ein „Sieg“ auf struktureller Ebene.

Szenario 3:

A: Ich mag rote Äpfel nicht.
B: Was glaubst du eigentlich, wer du bist, anderen Vorschriften machen zu können, welche Äpfel sie zu essen haben?
A: Ey, komm mal klar, ich mach niemandem Vorschriften, ich hab nur gesagt, dass ich die nicht mag.
B: Und deswegen sollen wir jetzt alle keine roten Äpfel mehr essen, weil du hier rummemmst?
A: Nein, ich sag doch nur, dass ich die nicht mag und es voll nett wär, wenn ihr mir die nicht grad unter die Nase halten würdet.
B: Ahja, jetzt müssen wir uns also nach dir richten, nur weil du ein Problem hast. Und was kommt als nächstes? Kirschenverbot? Pflaumenzwang?

Das wohl bösartigste meiner Beispiele. Von Meinungsaustausch kann hier keine Rede sein. Person A wird von Anfang an angegriffen und es wird üblicherweise ziemlich genau das Verhalten unterstellt, das Person B selbst an den Tag legt: Meinungsunterdrückung, Verhaltensvorschriften, Einschränkung der persönlichen Freiheit usw. Die Meinung von Person A wird nicht nur nicht anerkannt sondern vielmehr als unverschämt und gesellschaftsschädigend diffamiert. Um gegen Person A zu agitieren, werden weitere, frei erfundene Forderungen unterstellt und der Untergang der Zivilisation prophezeit. „Satz und Sieg“, struktureller geht es kaum noch. Übrigens wird sich in der Regel herausstellen, dass Person B rote Äpfel anbaut, vermarktet oder sonst irgendwie ein persönliches Interesse an deren Verkauf hat.

Sicher gibt es weitere Beispiele für solche „Protodiskussionen“ (ich freue mich auf eure Kommentare!), diese drei sind die, die mir am häufigsten begegnet sind. Und natürlich geht es „da draußen“ nicht um rote Äpfel, sondern um politische, gesellschaftliche und auch persönliche Themen. Nichstdestotrotz: Die Argumentationsschemata bleiben die gleichen.

Update: Passend zum Thema ein Comic Strip von amultiverse, auf den mich ein nachtaktives Wissenschaftswesen aufmerksam machte.

  1. Was nicht heißen soll, dass das Phänomen auf Onlinekommunikation beschränkt ist

by felis at July 17, 2013 04:27 PM

June 25, 2013


Below the game – unterste Schublade

[Inhaltswarnung: Grenzüberschreitung, sexualisierte Übergriffe, Gewalt]

Vor kurzem wurde bei Kickstarter erfolgreich ein Projekt finanziert, das heftigen Widerstand erzeugt hat. Das Projekt besteht darin, Anleitungen, wie ein Mann am besten Menschen, insbesondere Frauen „kennenlernen“ kann, als Buch zu veröffentlichen. „Above the game“ soll das Ergebnis heißen. Trotz der Kritik wurde das zu diesem Zweck via Kickstarter gesammelte Geld an den „Autor“ ausgezahlt, wenngleich die Verantwortlichen inzwischen eingeräumt haben, damit einen Fehler begangen zu haben.

Einige der Texte, die das Buch enthalten soll, wurden vom Verfasser bereits auf Reddit veröffentlicht und beim Stöbern durch die Inhalte (was ich niemandem empfehlen möchte) wird mancher*m vermutlich schnell auffallen, warum ich das „kennenlernen“ in Gänsefüßchen gesetzt habe. Denn um Freundschaften oder Beziehungen geht es wenig bis gar nicht. Eigentlich dreht sich das ganze nur um ein Thema: Wie kriege ich eine Frau dazu, dass sie Sex mit mir hat.

Zwei Aspekte sind mir beim Lesen besonders aufgefallen, die ich im Folgenden durch einige Zitate genauer beleuchten will. Einerseits ist das der Umstand, dass immer wieder das Prinzips der konsentualen Sexualität misachtet wird. Andererseits zeugt der gesamte Text an vielen Stellen von einem generellen Mangel an Respekt für Frauen und davon dass sie nicht als Männern gleichwertig angesehen werden.

Even when a girl rejects your advances, she KNOWS that you desire her. That’s hot. It arouses her physically and psychologically.

(Selbst wenn ein Mädchen deine Annäherungen zurückweist, weiß sie dann, dass du sie begehrst. Dass ist heiß. Es erregt sie körperlich und psychisch.)

Diese Aussage ist nicht nur schwachsinnig, sie ist auch abwertend und objektifizierend. Die Annahme, eine Frau könne sich nichts tolleres vorstellen, als dass ein Mann Sex mit ihr haben will, mag ein Wunschtraum mancher Männer sein, wahr wird es dadurch aber noch lange nicht. Eine Frau, die einen Mann abweist, teil ihm damit mit, dass sie keinen Sex mit ihm haben will. Anzunehmen, dass sie trotzdem einen Lustgewinn dabei empfindet, ist nicht nur anmaßend, es unterstellt auch, dass die Abweisung nicht ernst gemeint ist und wertet damit die Glaubwürdigkeit der Frau ab. Die Aussage, dass eine Frau allein durch die Lust des Mannes erregt würde, degradiert sie außerdem zum Sexobjekt und zwar auf die übelste Weise: Indem ihr unterstellt wird, sie selbst empfände Erregung (müsse geradezu durch die Decke gehen!) bei dem Gedanken, als Sexobjekt betrachtet zu werden.

Physically pick her up and sit her on your lap. Don’t ask for permission. Be dominant. Force her to rebuff your advances.

(Heb sie hoch und setzte sie auf deinen Schoß. Frag sie dafür nicht um Erlaubnis. Sei dominant. Zwing sie, deine Annäherungen abzuweisen.)

Körperliche, sexuelle Handlungen ohne Einverständnis sind Übergriffe. So weit zu gehen, dass sie gezwungen ist, ihn zurückzuweisen, ist ein Grenzüberschreitung. Ein solches Verhalten ist respektlos den Wünschen und Bedürfnissen der Frau gegenüber. Es würdigt sie herab, es entmündigt sie und es wird mit ziemlicher Sicherheit nicht dazu führen, dass sie sich wohl fühlt.

If at any point a girl wants you to stop, she will let you know. If she says „STOP,“ or „GET AWAY FROM ME,“ or shoves you away […] say this line:
„No problem. I don’t want you to do anything you aren’t comfortable with.“
[…] If a woman isn’t comfortable, take a break and try again later.

(Wenn das Mädchen zu irgendeinem Zeitpunkt möchte, dass du aufhörst, wird sie es dich wissen lassen. Wenn sie „Stop“ sagt oder „Lass mich in Ruhe/Geh weg“ oder dich wegstößt […] sag folgendes:
„Kein Problem. Ich möchte nicht, dass du irgendetwas tust, womit du dich nicht wohl fühlst.“
[…] Wenn eine Frau sich nicht wohl fühlt, mach eine Pause und versuch es später noch einmal.)

Nein. Wenn eine Frau zu irgendeinem Zeitpunkt „Stop“, „Nein, „Hör auf“, „Lass mich in Ruhe“ oder irgendetwas vergleichbares sagt oder ihn womöglich sogar körperlich von sich wegschiebt/wegstößt, dann hat der Mann bereits eine Grenze überschritten. Das einzig angemessene Verhalten ist, jede, wirklich jede sexuelle Handlung oder Intention sofort einzustellen und, falls möglich, sich für die Grenzüberschreitung zu entschuldigen. _Falls_ die Frau ihre Meinung irgendwann ändern sollte, ist es an ihr, das mitzuteilen. Sie gegen ihren ausdrücklichen Willen weiter zu bedrängen, ist respektlos, übergriffig und grenzverletzend. Daran ändert keine noch so lange Pause etwas. Ganz abgesehen davon sollte es nicht die Verantwortung der Frau sein, ihre Grenzen gegen Übergriffe schützen zu müssen. Die Verantwortung liegt bei der anderen Person, garnicht erst einen Übergriff zu begehen.

Grab her hair […] and pull it back aggressively.

(Pack ihr Haar […] und zieh es aggressiv nach hinten.)

NEIN, NEIN, NEIN. Aggressionen und Gewalt sind in keiner Situation in Ordnung. Niemals, aber insbesondere nicht in einem sexuellen Kontext! (Ausnahmen bilden natürlich ausdrücklich _konsentuale_ Handlungen, die dort aber mit keinem Wort erwähnt werden.)

Your chances of repeat performances goes up tremendously with each orgasm.

(Deine Chancen auf eine Wiederholungsvorstellung steigen enorm mit jedem Orgasmus [Anm.: der Frau].)

Diese Aussage zeigt noch einmal sehr deutlich, worum es dem Autor geht. Ein Orgasmus der Frau dient dem Zweck, dass der Mann bessere Chancen hat, ein weiteres Mal „bei ihr zu landen“. Ihre Lust ist nur Mittel zu Zweck, im Vordergrund stehen seine Bedürfnisse und seine sexuelle Erfüllung. Auch hier zeigt sich deutlich, dass die Frau nur als Objekt behandelt wird, dessen Zeck es ist, den Mann sexuell zu befriedigen.

Was mir außerdem durch den ganzen Text hinweg aufgefallen ist: Immer wieder werden Frauen als „girl“ statt als „woman“ bezeichnet. Wohlgemerkt, wir reden hier nicht von einem Teenager, der altersbedingt noch in den Kategorien „boys/girls“ denkt, „boy“ habe ich in dem Text kein einziges Mal gefunden. Wir reden von einem erwachsenen Mann, der Frauen als Mädchen diminuiert und ihnen damit ihre Reife, Eigenständigkeit und Unabhängigkeit abspricht, vorzugsweise dann (das mag allerdings eine subjektive Wahrnehmung sein), wenn es um Widerstand, Ab- oder Zurückweisung und das (Nicht)Respektieren von Grenzen geht.

Da ich hier einzelne Zitate „aus dem Kontext gerissen“ habe (was der Autor seinen Kritiker*innen hier vorwirft, und damit begründet, dass „es doch nicht so gemeint war“), noch mal in aller Deutlichkeit: Es gibt _keinen_ Kontext, in dem Missachtung der Bedürfnisse und Grenzen einer Frau, aggressives Verhalten und respektloser, objektifizierender Umgang ok sind. Egal wie viel Mühe vorher ins Daten, Kennenlernen usw. geflossen sind, zu keinem Zeitpunkt hat ein Mensch einen _Anspruch_ auf Sex. Zu keinem Zeitpunkt sind Übergriffigkeit und Grenzüberschreitung gerechtfertigt. In keinem noch so stillen Kämmerlein und hinter noch so verschlossenen Türen ist es in Ordnung, eine Frau so zu behandeln.

by felis at June 25, 2013 09:02 PM

June 20, 2013


Ey Tüp.

Ey Tüp. Ja DU. Genau dich mein ich. Du wirst es kaum glauben können aber MICH INTERESSIERT DEINE MEINUNG NICHT.

Mich interessiert nicht, dass du zu allem deinen Senf abgeben musst.
Mich interessiert nicht, dass du zu jedem, aber wirklich jedem Thema „deine eigene Meinung“ hast.
Mich interessiert nicht, dass du glaubst, du hättest immer ein bisschen mehr recht als alle anderen.
Mich interessiert nicht, dass du findest, dass du dich besonders klug und geschickt ausdrückst.
Mich interessiert nicht, dass du immer „anderer Meinung“ bist, nur um dich abzuheben.
Mich interessiert nicht, dass du meine Tweets unpräzise findest und das selbst viel besser formulieren kannst.

Was mich interessiert: dass du aufhörst, meine Gespräche zu derailen.
Dass du nicht meine Meinungsäußerungen zum Anlass nimmst, dich zu profilieren.
Dass du mich nicht ansprichst, nur um deine geistigen Ergüsse bei mir abzuladen.
Dass du dein Ego irgendwoanders als vor meiner Nase raushängen lässt.

Zieh Leine!

Nachtrag: Auch wenn du dich persönlich angesprochen fühlst und der festen Überzeugung bist, ich meine genau dich mit diesem Beitrag, besteht eine ziemlich große Chance, dass das nicht der Fall ist. Da du dich aber eh schon angesprochen fühlst, wie wär’s, wenn du dich einfach mal mitgemeint fühlst?

by felis at June 20, 2013 09:04 PM

April 09, 2013


no title.

die tage ziehen vorbei. neues semester, ungekannte geschäftigkeit bricht aus. das gefühl, wieder anfangen zu müssen, sich wieder einzugliedern übermächtiger denn je. wie viel kontakt zur „normalrealität“ hält jede_r aus, vergleichen eigener angstbewältigungsbausteine mit denen anderer. das gefühl des nicht genügens, des nicht genügen könnens. 

orientierung an einem 24/7 funktionsfähig sein. ob eins das will, ungewiss. unsicher, in allen schritten in einer welt, die fremd geworden ist, und nach überlegungen vielleicht dies auch besser bleiben sollte. kontakt mit menschen, die säuberlich aus der eigenen filterbubble herausgehalten wurden. kontakt schmerzt. kontakt strengt an. saugt alle energie auf. 

fall back optionen immer bei sich haben. immer zurück können. immer nicht mehr können, dies einsehen und langsamer vorwärts gehen wollen. schneller gehen wollen. mehr erreichen in weniger zeit. ohne genaue idee, was dieses „mehr“ überhaupt sein soll. weiter weiter weiter. weil eins das eben so macht. weil es so erwartet wird. am meisten von sich selbst. genug die psychischen unzulänglichkeiten gepflegt und kultiviert. keine wahl haben als ẃieder normal™ zu werden. das ist doch leben. 

leben == die gesellschaftlich akzeptierte form von normalität erfüllen, sich am besten in diese möglichst nahtlos einpassen und darin einen intrinsischen wert finden. nicht beklagen. nicht reflektieren. FUNKTIONIEREN…

by grimegrrrl at April 09, 2013 01:56 PM

March 14, 2013



unsicherheit. mangelnde kontrolle. überforderung. angst. angst. angst. negative automatisierte gedanken. reflektierend daneben stehen und lachen. lachen, weil ich es besser weiß. trotzdem brechen. immer wieder. an den immer gleichen stellen. risse mit klebstoff gekittet, der nicht hält. am atmen halten, und nichts sonst. da kraftlos für alles andere. was da noch sein könnte. kein leben, sondern überleben. zurück fallen und es meistens mögen, weil es bekannt ist. gewohnt, und routiniert. it’s not pleasant but I know what to do…

die angst nicht zu fallen, weil jemand fängt. aufzusparen bis ich irgendwann nicht mehr kann. auf den moment allein zu warten. zum in aller ruhe zerbrechen. splitter, trigger selbst herbeiführen um irgendetwas zu spüren. weil glücklich sein ist lächerlich. glücklich sein ist belanglos. fast nichts hat wert. alles relativiert sich vor einem fatalistischen weltbild. der erkenntnis, dass nicht immer jemand da sein wird um zu halten. und das im grunde auch nicht wollen.

die überzeugung, dass es nicht anders sein kann. die panische angst vor jeder winzigen veränderung. in einem ist zustand schweben, der unerträglich werden wird. es nicht einmal ertragen, würde eins wieder alle aussperren, wegschieben und vertreiben. nur dann geht zumindest nur eine person daran kaputt. eine person, für die jede sympathie und fürsorge seit langem irrelevant erscheint. eine hülle. muskeln, sehnen, haut, und sehr viel wasser. nervenbahnen, synapsen, botenstoffe und chemische reaktionen. mehr nicht. atome, moleküle.

I have no idea what I am doing. and why. and what for.

by grimegrrrl at March 14, 2013 02:21 AM

March 10, 2013



durch die straßen laufen. atem bildet wolken. rutschiger gefrorener boden. kalte schneidende luft.

by grimegrrrl at March 10, 2013 03:41 PM

ist zeit aufnahme (w_orte)

kapitel auslandssemester abgehakt. kapitel erstes studium abgehakt. ersteindruck scheitern. neue pläne. viele pläne. meistens keine pläne, sondern bekannte leere. das selbst aufsaugende stille, alles verschluckende schwärze.

bunte kleine lichter von „vielleicht bald in zukunft …“ sich selbst auslachen für die utopien im kopf. die idealen wünsche von einem anderen leben. einer anderen zu_kunft. eigentlich sind die wünsche ausgerichtet an der norm der gesellschaftlichen normalität und normativität. sie ist gewohnt, eingefahrene gedankenmuster. studium, beruf, wohnung, kind. irgendwann ein abbild dessen sein, wogegen sich eins stets gesträubt hat. wenn nicht mit haut und haaren, dann mit gedanken. keinen ausweg finden aus „ich möchte das so“ und das so nah an einer norm ist, die falsch erscheint, aufgezwungen, hohl.

kann mir nicht glauben, dass ich es versuchen werde. mit diesem leben. der intrinsische wert von „leben“ erschließt sich mir nicht. wahrscheinlich sollte dort „noch nicht“ stehen. erwartungen, verpflichtungen, beziehungen. „wieso kannst du nicht sehen, dass du so nur untergehen wirst?“ falsche frage. untergehen ist nichts schlimmes mehr. es hat weniger schrecken als zu versuchen wieder zu leben, beschäftigungen nachzugehen, ohne sich sofort nach dem sinn danach zu fragen. alles lächerlich zu finden, was eins so tut. weil das meiste auch nur zeit verbrauchen ist, da die kraft noch nicht reicht. das gefühl, dass sie vielleicht nie reichen wird.

die utopische hoffnung, dass alles gut wird. „everything falling into place“ und die gewissheit, dass es niemals gut sein kann und wird. es werden menschen, erinnerungen, splitter fehlen, die etwas ausmachten das ich™ heißt. mit dem mangel leben lernen. sterben lernen wurde ausgetestet. der umgebende beziehungskomplex does not improve. selbstdestruktives verhalten wird als negativ wahrgenommen, als unvermögen mit sich selbst und der welt auf andere konstruktive™ weise umzugehen. als ausweg für die, die es nicht anders können. selbsthass aufgrund dessen. selbsthass ohne grund. ist_zu_stand selbsthass.

liebgewonne dunkelheit. routinierte zerstörung. präteritum?

schwebezustand dazwischen. fallen. veränderung. präsens?

lachen ohne selbsthass. zukunft™. farben. futur?

by grimegrrrl at March 10, 2013 03:40 PM

December 20, 2012



nachts wach sein. langsam gewöhne ich mich wieder daran. weiß nicht, ob ich es gut oder schlecht finden soll, denn eigentlich ist ein gewöhnlicher schlafrhythmus ja meistens etwas positives. manchmal gibt es mir das gefühl, zumindest teilweise zu den ganzen menschen draußen zugehörig zu sein. wenn die einzige parallele wohl nur die dauer der wach-phase sein mag. es gibt die illusion, dass irgendetwas noch funktioniert wie es soll. von einer gesellschaft definiert, der ich angehöre. ob ich das möchte oder nicht. der willen, aus diesem ganzen heraus zu fallen, ist erträglich, oder auch unbeherrschbar. 

versuche situationen zu verändern. und weiß doch nie, ob dieses verändern etwas bringt, das es mir später wert sein wird. „das kannst du nie wissen.“ es gibt keine garantie, und ich will nichts mehr als das. die versicherung, dass alles anders wird, gut anders. vielleicht auch anders anders, so radikal, dass dinge verblassen, hintenanstehen, verschwinden. denn widersinnig winzige details machen das atmen schwer, schnüren alles ab. sperren blocken. wie ein kaleidoskop mit nur den schwierigen unerklärlichen farben. das es einmal bunt war, ist fast unglaublich weit weg. 

da ist ganz wenig von dem, was vielleicht sein könnte. wehre mich dagegen, weil ich gelernt habe, mit dem nicht funktionieren umzugehen. tatenlos wach sein. da macht nicht schlafen nicht mehr viel aus, wenn eins gefühlt ständig schläft. nicht wissen, ob aufwachen sich lohnen würde.

„ich kann nichts versprechen.“ aber ich versuche es. x

by grimegrrrl at December 20, 2012 04:36 AM

November 30, 2012


dinge die fehlen

  • pizza
  • schnee
  • klirrende winterkälte
  • lebkuchen
  • postkarten
  • gewohnheit
  • zug fahren
  • spontan reisen können
  • falafel
  • mate
  • guter kaffee
  • deutsche bücher
  • hachmenschen
  • lahn
  • eigene möbel
  • IKEA
  • infoladen
  • mein fahrrad
  • koz
  • frankfurt
  • mainufer abende

by grimegrrrl at November 30, 2012 06:52 PM

June 09, 2012


Use Ghostscript to convert PDF files

If you have a PDF file and want it to be in a specific PDF version (for example, the print shop where you just ordered some adhesive labels wants the print master in PDF 1.3, but your Inkscape only exports PDF 1.4), Ghostscript can help:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dNOPAUSE -dQUIET \
  -dBATCH -sOutputFile=new-pdf1.5.pdf original.pdf

(this converts the file original.pdf to PDF 1.5 and writes it to new-pdf1.5.pdf)

Also, if you have a huge PDF of several megabyte because there are many high-resolution pictures in it, Ghostscript can minify it (and shrink the pictures to 96 dpi) if you use the parameter -dPDFSETTINGS=/screen.

June 09, 2012 05:06 PM

April 28, 2012


Wireless USB keyboards and delayed keystrokes

Everytime I was using my wireless USB keyboard with my laptop while the power cable was not connected, the keyboard behaviour was lousy, and keystrokes tend to be delayed by several seconds. The kernel logs said something like

[23302.802096] uhci_hcd 0000:00:1a.0: setting latency timer to 64
[23302.842177] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21
[23302.842190] uhci_hcd 0000:00:1a.1: setting latency timer to 64
[23302.882145] uhci_hcd 0000:00:1a.2: PCI INT C -> GSI 19 (level, low) -> IRQ 19
[23302.882158] uhci_hcd 0000:00:1a.2: setting latency timer to 64
[23302.929065] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19
[23302.929079] uhci_hcd 0000:00:1d.1: setting latency timer to 64

Searching on Google, I found a forum post which suggested to disable USB auto-suspend in the laptop-mode configuration files. The relevant file on my Ubuntu 12.04 is /etc/laptop-mode/conf.d/usb-autosuspend.conf, which is fairly well documented, and has an option AUTOSUSPEND_USBID_BLACKLIST which allowed me to blacklist my USB keyboard, so the device was no longer put in auto-suspend mode. (The USB ID needed for AUTOSUSPEND_USBID_BLACKLIST can be found in the output of lsusb)

After editing that file, I had to restart the laptop-mode daemon (sudo /etc/init.d/laptop-mode restart), and keystrokes from my wireless keyboard arrived again without any delay.

April 28, 2012 11:09 PM