Planet Flauscheria

September 09, 2017

mxey

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).

octocatolog-diff-logo

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
#!/bin/bash

set -e -u -o pipefail

mkdir -p facts

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

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

./diff_stringify_facts.sh host1.example.com host2.example.com
host1.example.com
I, [2017-09-08T15:34:29.591598 #84032]  INFO -- : Catalogs compiled for host1.example.com
I, [2017-09-08T15:34:29.699115 #84032]  INFO -- : Diffs computed for host1.example.com
I, [2017-09-08T15:34:29.699145 #84032]  INFO -- : No differences
host2.example.com
I, [2017-09-08T15:34:29.591598 #84032]  INFO -- : Catalogs compiled for host2.example.com
I, [2017-09-08T15:34:29.699115 #84032]  INFO -- : Diffs computed for host2.example.com
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

January 11, 2017

Mandelbroetchen

Snowfallen 1.1

Im Dezember veröffentlichte ich mein neues Videospiel Snowfallen.

Ladet es euch kostenlos herunter!

Es war das Ergebnis einer persönlichen 7-Tage-Herausforderung, in der ich ein Spiel von Grund auf in 7 Tagen programmierte. Dies ist eine Disziplin, die in der Videospielentwicklung nicht unüblich ist und das Auge für das Wesentliche schulen soll. Da die Zeit sehr begrenzt war, war das Ergebnis natürlich recht simpel und nicht zu komplex. Trotzdem ist Snowfallen voll funktionsfähig. Ich plante zu Beginn nicht, noch mehr Zeit in das Spiel zu stecken, da ich aber so viel Vergnügen beim Entwickeln hatte, habe ich entschieden, dass Snowfallen noch ein Update verdient. So arbeite ich im Augenblick an einem Update auf Version 1.1.

Snowfallen v1.1

Mein größtes Problem mit der 7-Tage-Version war der Mangel an Entscheidungsfindung. Durch die hohen Zeitbegrenzungen musste ich ein paar Dinge sehr schnell implementieren und damit vereinfachen. So gibt es beispielsweise nur eine Waffe, eine Rüstungsklasse und die Spieler*in levelt durch das Einsammeln von Gefallenen Sternen. All diese Dinge verlangen keine großen Überlegungen. Es gibt keinen Grund, nicht das Schwert +7 statt dem Schwert +3 auszurüsten. Ebenso gibt es keinen Grund, nicht einen Gefallenen Stern der Stärke aufzusammeln. Man kann sagen: wenn man sich einmal an das Spielprinzip gewöhnt hat, trifft man mit jedem Spiel die gleichen Entscheidungen. Das ist in meinen Augen kein gutes Spieldesign.

So liegt der Fokus der Version 1.1 auf Entscheidungsdiversität. Die neuen Spielmöglichkeiten beinhalten:

  • Mehr Waffenarten mit unterschiedlichen Vor- und Nachteilen
  • Mehr Rüstungsklassen mit unterschiedlichen Vor- und Nachteilen
  • Unterschiedliche Heilgegenstände
  • Ein neues Spielelement: Gedichte! Lest den Gegnern ein Gedicht vor und verwirrt sie
  • Dynamischeres Spiel: Aktionen kosten jetzt nicht immer genau eine Runde. Waffen oder Panzerung können die Bewegungs- und Angriffsgeschwindigkeit verändern.

Ich habe ebenso die meisten User Interface Elemente überarbeitet. Man kann nun ein voll funktionsfähiges Inventar mit Tooltips nutzen.

Snowfallen v1.1 Inventory Screen

Ich plane, die neue Version innerhalb der nächsten Wochen zu veröffentlichen. Sie wird natürlich, wie die Ursprungsversion, kostenlos erhältlich sein.


by mandelbroetchen at January 11, 2017 06:29 PM

January 10, 2017

Mandelbroetchen

Neustrukturierung des Blogs

Das Jahr 2017 hat begonnen und in den letzten zwei Jahren gab es mehrere einschneidende Entwicklungen sowohl in meinem Berufsleben als auch in meinem Privatleben. Neben meiner Entscheidung, mich als Videospielentwickler selbständig zu machen, habe ich auch mehrere private Outings als Transgender und Asexueller hinter mir.

Für mich war dies ein guter Zeitpunkt, um einmal über meine Onlineaktivitäten nachzudenken. Ich bin ein sehr präsenter Mensch im Internet und habe in den letzten Jahren zahlreiche Blogs, Social Media Accounts und sonstige Aktivitäten gestartet. Wie es im Leben so ist, waren manche davon sehr erfolgreich, andere weniger und manche verschwanden nach ein paar Monaten wieder. Zeit für eine Neuordnung.

Ich werde zukünftig all meine privaten und politischen Aktivitäten auf einem Blog bündeln, um mir die Übersicht zu erleichtern und gleichzeitig meine Leser*innen nicht mit mehreren halbverwaisten Blogs zu nerven. Dies impliziert insbesondere folgende Änderungen.

  • Dieser Blog ist ab sofort auf http://www.mandelbrötchen.de erreichbar. Man achte auf den Umlaut.
  • Er ersetzt meinen Gamingblog auf mandelbroetchen.net. Dieser ist nicht mehr länger dort erreichbar.
  • Die Inhalte meines Asexualitätsblogs asexy.de werde ich in naher Zukunft hier inkludieren.
  • Gleiches gilt für alle Artikel im Bereich Transgender und Politik von verschiedensten Stellen.
  • Ich verknüpfe hier meine sonstigen Aktivitäten, z.B. meinen sehr aktiven Twitteraccount, meine Streaming-Aktivitäten und meine Videospielentwicklungsarbeit.

Die Arbeiten werden mich sicher noch eine Weile beschäftigen. Bis dahin wünsche ich euch noch ein Frohes Neues Jahr. Hoffentlich sehen wir uns bald wieder.


by mandelbroetchen at January 10, 2017 11:13 AM

June 02, 2016

Mandelbroetchen

Negative Zinsen und der „gesunde Menschenverstand“

In Zeiten von negativen Zinssätzen stoßen viele Menschen an ihre Verständnisgrenzen. So finden sich in den Medien zahlreiche Artikel wie dieser der ARD, die negativen Zinssätzen die Rationalität entziehen und sie ableistisch in den Bereich von Krankheiten oder psychischen Störungen verschieben.

Was tun mit meinem Geld?
Mal angenommen, wir wären in der wohlhabenden Position, über eine Million Euro entscheiden zu können. Wir sehen uns auf dem Finanzmarkt um und stellen fest, dass wir für unser Vermögen nur negative Zinssätze erwirtschaften können: wir müssen also jemandem Geld geben, damit er unser Geld annimmt.

Zunächst liegt hier der Gedanke nah, dass wir das Geld dann lieber Zuhause in der Bettmatratze horten. Dort gibt es keine negativen Zinsen und damit ist unsere Geldanlage (oder in diesem Fall besser -unterlage) sicher. Doch halt! Ist sie dort wirklich sicher?

Gefahren lauern überall
Es bedarf nicht viel Vorstellungskraft um sich zu überlegen, dass die Anlage von Geld in der Bettmatratze einigen Unwägbarkeiten ausgeliefert ist. Wir erinnern uns an den Fall der Tochter, die die Matratze ihrer Mutter samt Erspartem ungefragt entsorgte, um der Mutter als Überraschung eine neue Matratze zu schenken. Ebenso kann es jederzeit zu einem Hausbrand oder einem Wasserschaden in der Wohnung kommen. Sollte sich der eigene Reichtum nicht völlig verstecken lassen, muss man zusätzlich immer mit gewaltsamen Entwendungsversuchen seitens neidischer Menschen rechnen. So hatte sich beispielsweise ein Quizshow-Gewinner in den 80ern einen Großteil seines 100.000 Dollar Gewinns in 1-Dollar-Scheinen auszahlen lassen, um nach einem auswärtigen Weihnachtsessen festzustellen, dass in der Zwischenzeit jemand sein Wohnzimmer geplündert hatte. Nun kann man argumentieren, das sei dann halt Pech, aber was hat das alles mit negativen Zinsen zu tun?

Wenn wir uns einmal von unserer subjektiven Vorstellung des Einzelfalls lösen und den Gedankengang abstrahieren, so besteht eine gewisse Wahrscheinlichkeit, dass unser verstecktes Geld im Falle eines Falles plötzlich verschwunden ist. Schwerer wiegt noch die Tatsache, dass hierbei nicht nur ein Teil des Geldes fort ist, sondern meist dann auch das gesamte eingesetzte Vermögen. Es entsteht ein Totalverlust. Wir können nun abschätzen, dass dieser Totalverlust mit einer Wahrscheinlichkeit von (aus der Luft geholten) 1% pro Jahr eintritt. Statistisch gesehen hat dann ein Mensch, der zum Matratzentresor greift, bei einer Million Euro Einsatz noch 990.000 Euro übrig. Er hat also, statistisch gesehen, 10.000 Euro verloren. Wir erhalten damit unter den obigen Annahmen eine negative Anlagerendite von 1,0%. Die Matratze erwirtschaftet also negative Zinsen.

Versteckte negative Zinsen gibt es schon lang
Um unser Geld zu schützen, könnten wir nun einige Vorkehrungen treffen. Wir könnten es in einen Tresor stecken oder von einer Person bewachen lassen. Hiermit lässt sich der Verlust zwar nicht ausschließen, aber das Risiko verkleinern. Leider müssen wir beide Dinge bezahlen, so dass wir bereits in der Investition einen Rückgang unseres Vermögens verzeichnen und damit in eine negative Rendite rutschen.

Wir bringen unser Geld also zu einer Bank. Hier haben wir nicht nur einen Vertrag mit der Bank, dass sie uns bei Verlust des Geldes ihrerseits trotzdem unsere Ersparnisse auszahlen muss, sondern wir können dank diverser privater und staatlicher Einlagensicherungssysteme bei Insolvenz des Geldinstitutes in Deutschland unser Risiko des Totalverlustes minimieren. Die Bank gibt uns hierbei als Ausgleich Zinsen. Wir erhalten also in der Regel Geld, um Geld zu verleihen und geben gleichzeitig unser Risiko der Geldaufbewahrung weiter. Für die Bank ist es meist ein Gewinngeschäft, weil sie ihrerseits das Geld in einem weit höheren Umfang auf längere Zeit verleihen kann und damit noch mehr Zinsen verdient.

Die Zinssätze sind seit der Finanzkrise rapide gesunken. Auf einem normalen Girokonto findet man heute höchstens noch Zinssätze um 0,1% oder auch gar keine Zinsen mehr. Auf der anderen Seite verlangt die Bank für die Bearbeitung des Kontos regelmäßige Gebühren. Sind die absoluten Gebühren höher als der relative Zinssatz zum Vermögen, so stellt sich im Laufe der Zeit ebenso eine negative Rendite ein. Faktisch gibt es deswegen bereits seit längerem „negative Zinsen“, sie sind nur in Gebühren und Jahresentgelten versteckt, weil Geldinstitute wissen, dass dies den meisten Menschen weniger auffällt.

Sind negative Zinssätze also irrational?
Nein, ganz im Gegenteil. Zinssätze sind immer relative Größen im Rahmen einer Zinslandschaft. Wenn Geldinstitute für angelegtes Geld keine Zinsen mehr erhalten, so werden sie negative Zinsen an ihre Anleger*innen weitergeben, denn Geldinstitute leben zu einem großen Teil von der Differenz der Zinssätze. Die Anleger*innen selbst haben ebenso wenig Hoffnung, ihr Geld unter besseren Konditionen loszuwerden. Der Matratzentresor birgt ebenso Risiken wie die Anlage in fragwürdige Firmen. Im Allgemeinen gilt: wer seine Zinsen (oder seine Rendite) erhöhen will, der nimmt ein höheres Risiko in Kauf.

Hier zeigen sich die Grenzen der menschlichen Intuition, die gern unter „der gesunde Menschenverstand“ zusammengefasst wird. Die meisten Menschen sind in den letzten 50 Jahren in einem Zinsumfeld aufgewachsen, das sich in Deutschland nie mit Negativzinsen beschäftigen musste. Für viele gelten deswegen Negativzinsen intuitiv als unnatürlich und als schlecht. Ein Denkprozess, der auch in anderen Gebieten angewandt wird und spätestens dann gefährlich wird, wenn er andere Personengruppen betrifft. Dabei sind negative Zinssätze in anderen Ländern durchaus nicht unüblich.

Ist nicht eher das Versprechen auf stetig hohe Zinssätze gefährlich?
Problematisch ist der niedrige Zinssatz in erster Linie für alle Versprechen und Verträge, deren Leistung auf feste Zinssätze aufbauen. Hierunter fallen unter anderem Lebensversicherungen, Rentensysteme, Anlageprodukte und langjährige Kredite. Dieses Problem verlagert sich aber nur, wenn die Zinssätze irgendwann wieder erheblich steigen. Grundsätzlich sind Zinsschwankungen gefährlicher als ein bestimmtes Zinsniveau, denn den Menschen wird durch Verträge mit festen Zinssätzen ein trügerischeres Sicherheitsgefühl vermittelt, was schnell von der Realität überholt werden kann.

Wenn Größen in Politik und Wirtschaft von negativem Zinssätzen als „Grab des ehrlichen Sparers“ reden, dann sind sie nicht ganz ehrlich. Das Grab des Sparers sind nicht die Zinsschwankungen, sondern das Sicherheitsversprechen von Politik und Wirtschaft, man könne sich auf ein bestimmtes Zinsniveau verlassen und damit sein Leben bis in die Rente verplanen. Auch dieser Ansatz ist ein Risikogeschäft und ist in den letzten Jahrzehnten immer aufgegangen. Die neue Zinslandschaft stellt allerdings das Anlageprodukt Kapitalrente ebenso in Frage wie die Demographie das Anlageprodukt Rentengenerationsvertrag in Frage stellt.

Diese Ausführungen sollen die Finanzbranche nicht von ihrer Verantwortung für die Finanzkrise freisprechen. Allerdings ist es ebenso gefährlich den Menschen zu erzählen, ihre Geldanlagen und Renten seien sicher, weil man sich auf das Eintreten eines bestimmten Zinsszenarios verlässt. Ehrlicher wäre es sich einzugestehen, dass der Wunsch nach ewig hohen Zinsensätzen in der Realität irgendwann begraben werden muss. Die Finanzkrise war ein möglicher Auslöser, doch andere Auslöser wartet irgendwann hinter der nächsten Ecke.


by mandelbroetchen at June 02, 2016 11:28 AM

April 26, 2016

xinitrc

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.

Sessions

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.

GTD

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.

IoT

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.

BEM

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.

Résumé

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

September 24, 2015

Mandelbroetchen

Wird es Zeit für einen neuen Vornamen?

Marcel. Ja, das ist mein Vorname. Die meisten Leserinnen dieses Blogs werden mich eher unter Mandelbrötchen kennen, denn so nenne ich mich in sozialen Netzwerken. Es ist nicht ganz zufällig, dass die ersten beiden Buchstaben der Namen identisch sind. Nun ist der Name Marcel allerdings weit bürgerlicher und eben auch mein gesetzlicher Vorname.

Marcel. Es mag manch Menschen überraschen, doch so einige Personen haben Probleme mit der Aussprache des Namens. Insbesondere bei älteren Menschen wird aus dem Namen schon mal ein „Marsel“ (ähnlich wie Basel) oder gar ein hartes „Marzell“. Marzell ist allerdings ein Ort in Baden-Württemberg und hat nur wenig mit mir zu tun.

Marcel ist ein männlicher Vorname und stammt vom Vornamen Marcellus ab, der unter Päpsten und Heiligen sehr beliebt war. Nun bin ich weder kirchengläubig noch männlich. Wie bei den meisten Menschen, die in Deutschland geboren sind, wurde mir der Name von Personen gegeben, die mich zu diesem Zeitpunkt noch nicht kennen konnten.

Nach 35 Jahre mit dem Namen Marcel frage ich mich, ob es nicht mal Zeit für eine Neubenennung des Objektes ist, das Menschen in meinem Wesen sehen.

Namen sind Schall und Bytes
Menschen nutzen viele Namen, die von dem Umfeld und der Privatsphäre abhängen, in der sie sich gerade befinden. Einige Namen sind dabei selbstgewählt und andere fremdbestimmt. Neben Kose-, Spitz- und Künstlernamen erlangen in der Internetgeneration auch Pseudonyme im Privatgebrauch eine immer stärkere Bedeutung. Im beruflichen und distanzierten Kontext wird meist ausschließlich auf den Nachnamen zurückgegriffen.

Die unterschiedlichen Namen haben teilweise nicht nur die Bedeutung, das soziale Umfeld in Unterkategorien einzuteilen, sondern können auch unterschiedliche Umgangsformen festlegen. So kann die Verwendung des gesetzlichen Namens statt einer Namensverkürzung von der Partner*in signalisieren, dass nun ein ernstes Metagespräch geführt werden möchte; also der Wunsch besteht, den üblichen Sozialrahmen des Kosenamens zu verlassen.

Ich bin transmarcel
Ich bin mehr oder weniger bekanntlich trans(gender), genauer gesagt agender. Das bedeutet, dass ich keine Geschlechtsidentität besitze und mich z.B. weder als männlich noch als weiblich sehe. Ich sehe mich allerdings auch nicht als irgendwas dazwischen oder gar als Neutrum. Ich kann mit dem ganzen Konzept Geschlechtsidentität nicht viel anfangen (vergleiche wtfgender) und sehe es eher als unerwünschte Eingrenzung meiner Freiheit als Mensch durch die Gesellschaft.

Tatsächlich ist mir mein Vorname zunächst egal. Ich nutze ihn nicht als Selbstbezeichnung. Ich fühle mich auch nicht mit anderen Marcels identitär verbunden. In meinem praktischen Leben spielt mein Vorname so gut wie keine Rolle, da ich zu 90% durch das Internet kommuniziere und dort auf meinen Brotnamen zurückgreife. Viele Menschen in meinem direkten Umfeld nennen mich mittlerweile Brötchen, weil sie nie mit meinem gesetzlichen Vornamen in Kontakt getreten sind. Menschen, mit denen ich nur beruflich oder indirekt zu tun habe, nennen mich nur beim Nachnamen.

Ich habe aktuell kein Bestreben meinen Vornamen gesetzlich ändern zu lassen. In Deutschland sind der Namensänderung einige Hürden auferlegt. Doch Gesetze kommen erst ins Spiel, wenn ein Recht eingefordert oder ein Unrecht beseitigt werden möchte. Mir geht es nicht darum, andere aufzufordern, einen anderen Namen zu nutzen, sondern einen neuen Namen in neuen Sozialstrukturen anzubieten.

Warum also überhaupt die ganzen Überlegungen? Die Kurzfassung ist: weil ich es kann. Die zugehörige Frage lautet: warum nicht? Das Leben besteht aus vielen Strukturen und Prozessen, die gelebt werden, weil sie sich in der Gesellschaft eingebürgert haben. Sinnhaftigkeit und Aktualität werden selten hinterfragt. Mein Vorname existiert, weil er mir gegeben wurde. Hätte ich diesen Vornamen gewählt, wenn ich vor die Wahl gestellt worden wäre? Vermutlich nicht. Warum also nicht mal den Vornamen wechseln, wenn ich doch jederzeit die Möglichkeit dazu habe? Im Internet mache ich es doch seit Jahren genauso.

Welcher Vorname sollte es denn sein?
Die Wahl eines neuen Vornamens ist nicht so einfach. Natürlich könnte ich mich auf einer Party mit dem Namen Mandelbrötchen vorstellen; und gelegentlich mache ich das auch. Doch ist dies jenseits der Netzgeneration kein sonderlich akzeptierter Name. Wenn ich also einen traditionell bürgerlichen Namen wählen müsste: welcher würde es sein?

Als trans Mensch zieht es mich schon in Richtung geschlechtsneutraler Namen. Die sind für mich zwar ebenso nicht passend, aber immer noch passender als ein typisch männlicher oder weiblicher Vorname. Natürlich gibt es im Internet zahlreiche Seiten mit einer Auflistung von geschlechtsneutralen Namen. Doch nach welchen Kriterien wähle ich einen neuen Namen? Soll er „nur“ gut klingen? Möchte ich mit der Bedeutung des Namens etwas ausdrücken? Möchte ich in alphabetischen Auflistungen möglichst weit vorne stehen? Bevorzuge ich eine bestimmte Sprachvariante?

Ich bin ja ein Islandfan, verbringe möglichst viel freie Zeit dort und lerne die isländische Sprache. Ich könnte meine Wertschätzung durch die Wahl eines isländischen Vornamens ausdrücken. Allerdings sind die Vornamensgesetze in Island noch strenger als in Deutschland. Vornamen müssen ihr Geschlecht klar erkennen lassen und werden über Whitelists gewählt. Es gibt also Listen, in denen alle erlaubten Vornamen für Männer und Frauen vermerkt sind. Das führt dazu, dass ich bisher keine geschlechtsneutralen isländischen Vornamen gefunden habe. Viele isländische Vornamen besitzen zusätzlich Schreib- und Sprechweisen, die kaum oder gar nicht über ungeübte deutsche Zungen gleiten. Im Zweifel würden Menschen dann wieder Wege suchen, um den Namen zu umgehen.

Natürlich gibt es auch im Isländischen Vornamen, die für Deutschsprechende gut aussprechbar sind. Ein Beispiel wäre hier Mara. Der Name Mara hat gleich mehrere Vorteile. Mara ist zwar im Isländischen ein Frauenname, wird aber im skandinavischen Raum auch als Männername genutzt. Mara teilt mit Marcel und Mandelbrötchen die gleichen Anfangsbuchstaben. Mara ist in der Elder Scrolls Reihe die Göttin der Liebe (urgs). Die Frau von Luke Skywalker in Star Wars hieß Mara (Doppelurgs). Allerdings ist Mara auch ein weltweit gebräuchlicher Name. Aus dem Hebräischen angelehnt, wird er schon im Alten Testament der Bibel genutzt. Eine Frau namens Noomi (die Liebliche) ändert nach dem Verlust ihrer gesamten Familie ihren Namen in Mara (die Bittere). So hängt am Namen Mara letztlich zu viel (weibliche) Weltgeschichte, um als isländischer Name erkennbar zu sein.

So suche ich also weiter. Ich kenne einige trans Menschen in meinem Umfeld, die sich bereits über Namensänderungen Gedanken gemacht haben und fündig wurden. Auch ihre Findungsgeschichte würde mich interessieren. Habt ihr tolle Vorschläge für Vornamen oder habt ihr euch schon mal Gedanken über einen neuen Namen gemacht? Schreibt es mir. Gerne auch per Mail!


by mandelbroetchen at September 24, 2015 08:10 PM

September 10, 2015

Mandelbroetchen

Warum ich meine Arbeitszeitreduzierung nicht bereue

Hinweis: Dieser Text ist voller Privilegien. Er richtet sich an Menschen, die den Luxus haben, einen sicheren Arbeitsplatz unter Vollzeit zu besitzen. Weiterhin verdienen sie dabei so viel Geld und haben so wenig finanzielle Verpflichtungen, dass eine Arbeitszeitverkürzung für sie in Frage kommt.

Einleitung

Vor rund sechs Monaten habe ich bei meinem Arbeitgeber eine Arbeitszeitverkürzung auf 80% meiner bisherigen Vollzeitstelle erwirkt. In der Praxis bedeutet dies, dass ich seitdem den berüchtigten Montag als zusätzlichen freien Tag verbuchen kann.

Arbeitszeitverkürzungen sind insbesondere unter jungen Arbeitnehmer*innen wenig verbreitet. Viele jungen Kräfte können auf dem heutigen Arbeitsmarkt froh sein, wenn sie eine unbefristete Arbeitsstelle als Vollzeitkraft finden. Weiterhin stecken sie voller Tatendrang und möchten sich häufig einen guten Platz in ihrem Unternehmen sichern. Sprich: sie möchten Karriere und sich einen Namen machen. Körperliche und psychische Probleme wegen langjähriger zu hoher Arbeitsbelastung sind meist noch nicht auf ihrem Horizont.

Nun bin ich nicht mehr ganz so jung und habe mit 35 Jahren als Akademiker schon rund 10 Jahre Berufserfahrung. Ich war in dieser Zeit bei drei Arbeitgeberinnen angestellt. Die ersten Jobs waren dabei noch vergleichsweise angenehm, doch mit der Erfahrung kommen verantwortungsvollere Aufgaben und neue Positionen – der Arbeitsstress steigt. Ich arbeite nun in einem Kreditinstitut und bin als Mathematiker für betriebswirtschaftliche Berechnungen verantwortlich. Ich leite Arbeitsgruppen, betreue Auszubildende und hantiere täglich mit Milliardensummen. Es dauerte nicht lange, dass ich diese täglichen Belastungen in Geist und Körper spürte. Für mich war klar: das geht nicht mehr lange gut. Entweder ich werde krank, kündige den Job oder versuche anderweitig, meine Belastung zu verringern. Die Idee der Arbeitszeitverkürzung war geboren.

Viele Menschen scheuen den Schritt einer Arbeitszeitverkürzung. Finanzielle Einschnitte, eine vermeintliche Blöße vor Kolleg*innen, die Furcht vor dem Verlust des Arbeitsplatzes: es gibt viele Gründe, die solch einen Schritt gut zu überdenken. Doch welche Bedenken sind wirklich angebracht und schlüssig?

80% Arbeit heißt 20% weniger Geld

Nein. In der freien Wirtschaft ist das Gehalt verhandelbar. Je nach persönlicher Situation kann eine Arbeitszeitverkürzung mit wenig bis keinen finanziellen Einschnitten durch die Verhandlungen gebracht werden. Je unabdingbarer man im Job ist, desto eher lassen Arbeitgeber mit sich reden. Wenn ohnehin Gehaltsverhandlungen anstehen: warum nicht statt dessen Arbeitszeitverhandlungen bei gleichem Gehalt?

Selbst bei einer Reduzierung des Bruttogehalts auf 80% bedeutet dies natürlich nicht, dass das fehlende Geld vom Konto abgezogen wird. Der Nettoabzug ist je nach Gehaltsklasse wesentlich geringer; dem deutschen Steuersystem sei Dank. Eine Beispielrechnung zeigt: bei einem monatlichen Bruttogehalt von 2000 Euro (Single, Steuerklasse I, keine Kinder, gesetzlich versichert) werden bei Reduzierung auf 80% statt 400 Euro nur zirka 216 Euro abgezogen. Im Vergleich zum bisherigen Nettogehalt macht das einen neuen Nettoverdienst von 84,1% des alten Verdienstes. Dieses Verhältnis ändert sich auch nicht entscheidend bei höherem Grundverdienst. Selbst bei 6000 Euro Monatsgehalt liegt der neue Nettoverdienst bei 83,6% des alten Verdiensts. Grund ist hier, dass zwar mehr Lohnsteuer eingespart wird, aber immer noch gleiche Krankenversicherungsbeiträge (Bemessungsobergrenze) gezahlt werden müssen. Nicht unerwähnt sollte bleiben, dass man sich den geringeren Unterschiedsbetrag durch weniger Einzahlungen in Rentenkasse und Arbeitslosenversicherung erkauft. Dies hat natürlich Auswirkungen auf die späteren Rentenzahlungen und ebenso auf die Zahlungen des Arbeitslosengeld I.

Zwischenfazit: Der finanzielle Verlust einer Reduzierung der Arbeitszeit auf 80% liegt je nach Verhandlungsgeschick zwischen 0% und zirka 15%, aber keinesfalls bei 20%.

80% Arbeit heißt 20% mehr Freizeit

Definitiv falsch. Die Ermittlung der gewonnenen Freizeit lässt sich schwierig berechnen, denn es hängt von der Definition von Freizeit hat. In der Theorie hat der Tag 24 Stunden. Wenn wir 8 Stunden Schlaf und 8 Stunden Arbeit pro Tag anrechnen, kommen wir auf 8 Stunden Freizeit. Das sind 50% Arbeit und 50% Freizeit. Zusätzlich arbeiten die meisten Arbeitnehmer*innen nur 5 von 7 Wochentagen. Also haben wir doch massig Freizeit!

Leider hat Arbeit ein paar Randeffekte. Das fängt bereits bei der Anfahrt an. Die wenigsten Menschen sind binnen 5 Minuten bei ihrem Arbeitgeber. Mit Hin- und Rückfahrt kann man je nach persönlicher Situation durchaus von 1-2 Stunden pro Tag ausgehen, die von der Freizeit abgezogen werden. Zusätzlich sind Arbeitnehmer*innen zu einer gesetzlichen Mittagspause verpflichtet. Auch wenn in dieser Mittagspause nicht gearbeitet wird, so werden die wenigsten Menschen diese Zeit als qualitativ gleichbedeutend zu Freizeit verbuchen. Rechnet man die Zeiten zusammen, kommt man schnell auf 10-11 Stunden an täglicher Zeit, die ohne Überstunden für die Arbeitgeberin geleistet werden.

Rein subjektiv würden viele Menschen zustimmen, dass sie innerhalb der Woche kaum zu Freizeitaktivitäten kommen. Nach der Arbeit sind sie so ausgelaugt und erschöpft, dass sie sich vielleicht noch der Hausarbeit widmen und abends auf der Couch einen Film schauen. Das liegt daran, dass Arbeit nicht nur Zeit frisst, sondern bei viel Stress auch viel Energie. Und der Energiehaushalt eines Menschen ist begrenzt. Als wirkliche Freizeit wird deswegen meist nur das Wochenende gezählt.

Zwischenfazit: Bei einer 80% Stelle mit einem freien Tag Montag oder Freitag verlängert sich das Wochenende um ganze 50%. Die zusätzliche Erholungszeit führt mit der reduzierten Arbeitszeit zu einem erhöhten Energiehaushalt. Das 150% Wochenende kann also mit wesentlich mehr Tatendrang durchlebt werden.

80% Arbeit heißt nur 80% Sichtbarkeit im Job

Das kommt sicherlich auf den Job an. Als Mathematiker habe ich keine Fließbandaktivität, sondern teile mir meine Zeit eigenverantwortlich auf, um meine vordefinierten Projektziele zu erreichen. Früher in meiner 100% Arbeitsphase hatte ich an manchen Tagen so wenig Energie, dass ich sicherlich nicht produktiver war als jetzt mit einer 80% Stelle. Ich habe nicht den Eindruck, dass ich mit einer 80% Stelle quantitativ oder qualitativ weniger Arbeit schaffe. Tatsächlich besitze ich mehr Energie und damit auch eine bessere Laune. Ich bin einfach effizienter.

Problematisch ist höchstens, dass ich durch meinen freien Tag für manch Besprechung nicht zur Verfügung stehe. In der Theorie verpasse ich 20% der wichtigen Termine und damit den Anschluss an meine Kolleg*innen. In der Praxis sieht es allerdings so aus, dass auch andere Menschen aus Termingründen Besprechungen verschieben. So konnte man sich bisher immer auf Ausweichtermine einigen. Sollte eine Verschiebung einmal nicht möglich sein, habe ich auch keine Schmerzen, meinen freien Tag mal von Montag auf Freitag zu verschieben oder einen Woche ausfallen zu lassen und als Gegenzug in der folgenden Woche Montag und Dienstag freizunehmen.

Zwischenfazit: Auch mit 80% Arbeitszeit erreiche ich zwischen 95% und 100% Sichtbarkeit. Zusätzlich bin ich in der Zeit wesentlich konzentrierter und besser gelaunt.

Fazit

Wenn ich meine persönlichen Erfahrungen mit meiner Arbeitszeitverkürzung auf 80% zusammenfasse, erhalte ich folgende Liste:

  • Ich verdiene rund 15% weniger.
  • Ich verbrauche nur noch 80% der bisherigen Energie für meine Arbeit.
  • Mein Wochenende hat sich um 50% verlängert.
  • Ich spare zusätzlich am freien Tag Anfahrten und Mittagspause in Wert von 2 Stunden.
  • Ich bin in Job und Freizeit konzentrierter und besser gelaunt.
  • Ich verpasse so gut wie keine Termine und bin so sichtbar wie zuvor.
  • Meine Gesundheitsstand hat sich deutlich gebessert.

Ich habe meine Arbeitszeitverkürzung nicht bereut. Tatsächlich habe ich so gute Erfahrungen gemacht, dass ich in meinem Leben keinen Vollzeitjob mehr annehmen möchte. Als Mensch ohne Familie und Verpflichtungen verzichte ich gern auf 15% Gehalt um 50% mehr Freizeit zu erhalten. Meine Gesundheit wird es mir langfristig danken.

Vielleicht helfen diese Zeilen der ein oder anderen Person, um sich einmal über das Undenkbare Gedanken zu machen. Sicherlich muss die persönliche Situation und das berufliche Umfeld mitspielen. Aber Vollzeitarbeitsplätze sind nicht in Stein gemeißelt. Insbesondere in Unternehmen, in denen Home-Office immer noch kein Einzug erhalten hat, kann eine Arbeitszeitverkürzung ein guter Weg zu einem gesünderen und angenehmeren Leben sein.


by mandelbroetchen at September 10, 2015 07:05 PM

August 25, 2015

Mandelbroetchen

Eine Geschichte über Wasserwaagen und Kochfeldschaber

Als ich in meine derzeitige Wohnung einzog, spendete meine Familie mir zwei Werkzeuge: eine Wasserwaage und einen Kochfeldschaber. Ich legte beide Utensilien zunächst in eine Ecke des Flures, denn ich hatte mit dem Aufbau der Möbel und dem Auspacken der Umzugkartons erst mal genug zu tun.

Das ist nun knapp zwei Jahre her. In drei Monaten werden ich erneut umziehen. Wasserwaage und Kochfeldschaber habe ich nie genutzt. Tatsächlich liegen sie immer noch in der gleichen Ecke meiner Wohnung, in die ich sie vor zwei Jahren gelegt hatte. Unberührt. Ich habe sie nicht nur nie vermisst; mein Unbewusstsein hat sie visuell ausgeblendet. Bei jedem Aufräumen und jedem Putzen habe ich sie nicht wahrgenommen. Sie sind mir erst vor ein paar Tagen wieder aufgefallen, als ich begann, den nächsten Umzug zu planen.

Man könnte daraus folgern, dass ich kein sonderlich ordentlicher Mensch bin, doch das wäre nicht richtig. Richtig ist, dass ich mein Leben sehr fokussiert lebe. Dinge wie Wasserwaagen und Kochfeldschaber spielen in meinem Leben keine Rolle, also widme ich ihnen keine Aufmerksamkeit. Diese Fokussierung geht so weit, dass mein Gehirn solch für mich unwichtige Informationen gar nicht erst verarbeitet. Ich verliere damit einen Teil meiner Realitätswahrnehmung und ich benötige ein großes Maß an geistiger Anstrengung, wenn ich diesen Verlust in bestimmten Situationen wieder bewusst ausgleichen möchte.

Glücklicherweise spielen Wasserwaagen und Kochfeldschaber in meinem Alltag keine großen Rollen. Meine Leidenschaft gilt abstrakten Themen wie Wissenschaft und Kunst. Ich bin Mathematiker und Informatiker und arbeite in der Softwareentwicklung. Ich kann unbescheiden sagen, dass ich sehr gut in den Dingen bin, die ich beruflich tue. Wenn ich mich einmal in ein für mich anspruchsvolles Problem eingearbeitet habe, dann widme ich ihm meine ganze Aufmerksamkeit. Alltägliche Dinge wie Bürokratie und Lebensorganisation gehen dabei unter.

Ich habe in den letzten 15 Jahren eine Menge Probleme abgebaut, die mich an mir selbst störten. Ich habe mir fehlende Bildung jenseits meiner beruflichen Fachgebiete zugelegt. Ich habe meine Sozialkompetenz und meinen Umgang mit Menschen sehr verbessert. Ich kann meine Gedanken in Worte fassen, die auch andere verstehen und spontane Reden halten. Kurz: ich habe stetig daran gearbeitet, dass meine Fokussierung auf Teilgebiete der Realität keine zu großen Einschnitte in das Leben hat, welches ich mit anderen Menschen teilen muss.

Und trotzdem bleiben viele Probleme, die für andere Menschen Banalitäten sind. Ich kann zum Beispiel höchstens einmal pro Woche meinen Briefkasten öffnen, weil mich die immer neuen Rechnungen und bürokratischen Nichtigkeiten überfordern. Diese Aussage meine ich, wie sie da steht. Ich bin nicht genervt über meine Post und ich habe auch keine finanziellen Probleme, sondern mein Unbewusstsein weigert sich, mir die Erlaubnis zu geben, physisch den Briefkasten zu öffnen. Es sind damit keine Emotionen verbunden, sondern es ist eine stille Blockierung von Wahrnehmung und Handlung. Mein Unbewusstsein weiß, dass die Öffnung des Briefkastens nicht in meinem Interesse sein wird, also verhindert es die Aktion durch Wahrnehmungsverzerrung (der Briefkasten wird unsichtbar) oder Handlungsverweigerung. Ich wiederum weiß, dass mein Unbewusstsein dies tut, doch meist sitzt es am längeren Hebel.

Auch hier benötige ich sehr viel Energie, um dem entgegen zu treten. Ich versuche seit zwei Jahren meine überfälligen Steuererklärungen zu machen. Zahlreiche Mahnungen und Strafgelder helfen zur Motivation nicht. Regelmäßigkeit und langfristige Planung von Dingen, denen ich keine hohe Priorität einräume, sind für mich Vermeidungssituationen. Mein Bewusstsein befindet sich in einem stetigen Spannungsverhältnis zum Unbewusstsein. Ich habe dadurch sehr früh gelernt, mich selbst zu hinterfragen und mir bewusste Reflexionsmuster zuzulegen.

Ich kann diese Zeilen aus einem Privileg der Kontrolle schreiben. Ich habe genügend Ausbildung in Logik und Reflexion, um viele meiner Probleme selbst zu erkennen. Auch wenn ich sie im Detail nicht immer überwinden kann, so bleibt mir genug eigenverantwortlicher und finanzieller Spielraum, mein Leben um die Probleme herum zu navigieren, ohne dass es zu großen Einschnitten in meine Lebensqualität kommt. Dennoch ist es einigen Menschen schwer zu vermitteln, wie es ist, in stetiger bewusster Spannung zum eigenen Selbst zu stehen.

Menschen sind sehr komplexe Wesen und kämpfen als Individuen mit vielen Dingen, die anderen verborgen bleiben. Diese Geschichte hat kein Fazit, keine Moral und keine höhere Erkenntnis zu vermitteln. Sie soll einen kleinen Einblick in das Wesen eines Menschen ermöglichen – deswegen endet sie hier.


by mandelbroetchen at August 25, 2015 11:43 AM

August 20, 2015

Mandelbroetchen

RetroReview – Might and Magic IV und V: World of Xeen

World of Xeen, entwickelt von New World Computing, ist eine Verbindung der beiden Videospiele Might & Magic IV: Clouds of Xeen (1992) und Might & Magic V: Darkside of Xeen (1993), die ursprünglich getrennt erschienen und getrennt spielbar sind. Besitzt die Spielerin jedoch beide Versionen, so können sie zusammengelegt werden und die beiden Welten verschmelzen zu einer gemeinsamen Welt. World of Xeen erschien für DOS, Mac und den japanischen NEC-PC.

Wie bereits in MM3 besteht das Spielziel darin, eine Grupppe von sechs Abenteuerinnen rundenweise in Egoperspektive durch eine Pseudo-3D Welt zu bewegen, die schrittweise erkundet wird. Eine elementare Hauptstory wird dabei durch eine große Anzahl von Sidequests bereichert. Die meiste Zeit verbringt die Spielerin mit Erkundung der Umgebung, Hack&Slash Kämpfen mit Monstern und dem Lösen zahlreicher Rätsel. Zu dieser Zeit war das alles Genrestandard.

Die Außenwelt ist ausreichend repräsentativ gezeichnet, gewinnt aber keine Wettbewerbe.

Die Außenwelt ist ausreichend repräsentativ gezeichnet, gewinnt aber keine Wettbewerbe.

Zwei Spiele – Eine Welt
Im Rahmen der Spielhandlung ist die Integrierung zweier Spiele in ein Gesamtspiel durchaus clever gelöst. Im M&M Universum ist es üblich, dass die besuchten Welten flache Scheiben sind. Nun besitzt jedoch jede dreidimensionale Scheibe neben einer Oberseite auch eine Unterseite. MM4 spielt demnach auf der Oberseite und MM5 auf der Unterseite der gleichen Scheibenwelt. Ein Wechsel zwischen den Scheiben ist an festgelegten Orten (Pyramiden) möglich und fühlt sich nicht anders an als das Betreten eines Dungeons oder einer Stadt.

In der Theorie ist diese Idee reizvoll und innovativ. In der Praxis stellen sich einige Probleme und das wichtigste hiervon heißt Balancing. Spielt man beide Spiele getrennt, so muss man sich mit einer ärgerlichen Levelbegrenzung auf der Oberseite abfinden, die bereits ab Level 20 greift. New World Computing musste sicherstellen, dass die Party am Ende von MM4 nicht bereits so stark ist, dass für sie MM5 keine Herausforderung mehr darstellt. Auf der anderen Seite (scnr) durfte der anfängliche Schwierigkeitsgrad von MM5 nicht zu hoch sein, damit ein regelmäßiger Wechsel zwischen den Spielen überhaupt sinnvoll ist. Das führt dazu, dass sich MM4 allein relativ unspektakulär spielt. Powerleveling war seit jeher ein wichtiges Feature der M&M-Reihe. Die Vorgängerin MM3 bot einen Maximallevel von 200. Hier wirkt eine Reduzierung auf ein Zehntel der Stufen sehr künstlich und spielspaßbremsend.

Auf der Unterseite herrscht eine generell dunklere und bedrückende Stimmung.

Auf der Unterseite herrscht eine generell dunklere und bedrückende Stimmung.

Glücklicherweise fällt diese Stufengrenze bei Zusammenführung der Spiele weg, denn MM5 bot wieder einen Maximallevel von 255. Leider stellt dies die Spielerin vor andere Probleme, denn die nötige Erfahrung für einen Levelaufstieg steigt in RPGs üblicherweise nicht linear sondern geometrisch. Die nötige Erfahrung für einen Levelaufstieg ist ein Vielfaches der nötigen Erfahrung für den Levelaufstieg zuvor. So finden sich in MM5 bereits am Anfang einfache Quests, die 250.000 Erfahrung liefern. Mit dieser Erfahrung kann eine Level 1 Party bereits eine Vielzahl von Stufen aufsteigen. Im schlechtesten Fall reist eine neue Gruppe von Abenteurerinnen also sofort zur Welt von MM5 und sammelt in der ersten Stunde soviel Erfahrung und Gold, dass sie für MM4 bereits beinahe überlevelt ist. Möchte die Spielerin den Spielspaß maximieren, so nutzt sie den Wechsel zwischen den Spielen am besten kaum, um nicht zu schnell zu stark zu werden und die Hälfte des Spiels zu verpassen.

Wichtige Verbesserungen zu MM3 sind kaum zu finden
MM3 war eine Neuerfindung der M&M-Reihe und bot eine Menge neuer Features. Den Testbericht zu MM3 kann die geneigte Leserin hier finden. World of Xeen bediente sich der gleichen Engine und verbesserte sie nur marginal. Es steht damit in guter Tradition, denn auch MM2 war nur eine Erweiterung von MM1. Früher war es in großen Spielereihen durchaus üblich, dass eine neue Spielengine nicht für jeden Teil entwickelt wurde. Auch die Ultima- und Wizardryreihen nutzten gleiches Entwicklungskonzept.

Du kannst nicht vorbei!

Du kannst nicht vorbei!

Die augenscheinlichste und gleichzeitig unbedeutendste Neuerung ist die vermehrte Fokus auf Cutscreens und Sprachausgabe. Was Anfang der 90er Jahre des letzten Jahrhunderts noch spannend gewesen sein mag (es begann das Multimediazeitalter), ist heute nur noch nervig. Der Spielfluss wird beim Betreten jedes Dungeons durch eine kurze Sequenz unterbrochen, in der eine Figur in schlechter Audioaufnahme der Spielerin mitteilt, dass die Party den Dungeon betreten darf, weil sie den korrekten Schlüssel besitzt. Das passiert nicht nur einmal, sondern bei jedem erneuten Betreten. Ja, vielen Dank. Eine einfache Textnachricht bei fehlendem Schlüssel hätte es auch getan. Das vollvertone Intro ist genauso nervig und wirkt eher wie eine missglückte Interpretation von Monty Python.

Die Inventarverwaltung wurde überarbeitet und bietet nun einzelne Ansichten für Waffen, Rüstungen und Schmuck. Die Trennung ist grundsätzlich zu begrüßen und fördert die Übersicht, sorgt allerdings beim Handeln für eine vermehrte Anzahl von Klicks, denn eine Ansicht für alle Gegenstände einer Figur ist nicht mehr vorgesehen. Unschön bleibt nach wie vor, dass man jegliche Attribute eines Gegenstandes nur durch Identifizierung einsehen kann und das Ergebnis auch nicht zur Nacheinsicht gespeichert wird. Ein schnelles Vergleichen von Gegenständen ist so ohne eigene Notizen nicht möglich.

Die Schnellübersicht existiert seit dem ersten Teil und liefert wichtige Infos auf einem Blick

Die Schnellübersicht existiert seit dem ersten Teil und liefert wichtige Infos auf einem Blick

Das Quest-Logbuch ist nun wesentlich übersichtlicher. Spezielle Orte wie Brunnen werden nun sortiert vermerkt und sogar mit ihrer Wirkung protokolliert. Durch Klick in das rechte, obere Fenster kann eine Minikarte eingeblendet werden, die in MM3 nur durch einen speziellen Zauberspruch temporär erschien. Dieses Feature ist sehr hilfreich für eine schnelle Orientierung, da hier auch Felder angezeigt werden, die die Party noch nicht betreten hat.

Gebäude wie Schmieden, Trainingslager und Tavernen bestehen nicht mehr nur aus einem Feld, sondern sind nun in die eigentliche Welt eingewoben. Die Spielerin kann mit der Party durch eine Kneipe schlendern und mit den Gästen reden. Allerdings sind NPCs immer noch unsichtbar und werden nur durch ein Profilfoto beim Klick auf leere Stühle aktiviert. Theoretisch sind somit sogar Kämpfe in einer Taverne möglich, jedoch wird davon in World of Xeen storytechnisch kaum Gebrauch gemacht.

Interessanter ist da schon die Möglichkeit eine eigene Burg zu besitzen oder eine versteckte Stadt zu finden. Generell sind die Quests und Lokalitäten des Spiels sehr abwechslungsreich und vielseitig. So kann die Party Städte, Burgen, Minen, Türme und Kerker erkunden und sogar auf einer Wolkenebene über dem Spielfeld schweben. Die Rätsel sind ebenso abwechslungsreich und bestehen zum größten Teil aus Logik-, Rechen- und Wortproblemen. Aus heutiger Sicht sind die Rätsel teilweise durchaus knackig und nicht ohne längeres Überlegen oder Trial&Error lösbar. Der Kampfmodus ist jedoch identisch zu MM3 geblieben – mit allen Vor- und Nachteilen.

Bei der Charaktererstellung und Verwaltung hat sich so gut wie nichts getan. Ein paar Klassen wurden leicht angepasst, so ist die Barbarin erneut leicht aufgewertet worden, aber grundsätzliche Änderungen oder neue Klassen finden sich nicht. Tatsächlich wurde die dritte Zauberschule aus MM3 faktisch wieder abgeschafft. Sie besteht jetzt nur noch aus einer Mischung von Zaubersprüchen der anderen beiden Schulen. Eigene Zaubersprüche existieren nicht mehr.

Test

Die Gegnerinnen sind abwechslungsreich und passen in ihre Umgebung.

Fazit
MM4 und MM5 enttäuschten bei Erscheinen einige Spielerinnen, denn die spieltechnischen Neuerungen waren sehr gering, während der erweiterte Multimedia-Ansatz mit Zwischensequenzen und Sprachausgabe das Genre nicht weiterbrachte. Die Aufteilung in zwei Spiele schuf bei einigen Kundinnen den Eindruck, dass beim Erscheinen von MM4 nur ein halbes Spiel zum vollen Preis verkauft wurde. Ähnliche Diskussionen gibt es auch heute noch bei Aufsplittung eines Spiels in Addons oder DLCs. Aus diesem Grund hat World of Xeen nicht unbedingt den besten Ruf unter Old School Spielerinnen.

Aus heutiger Sicht muss ich rückwirkend jedoch sagen, dass World of Xeen eine konsequente Weiterentwicklung des revolutionären MM3 ist und durch die Verbindung zweier Spiele einen Spielumfang bietet, der alle bisherigen Versionen blass aussehen lässt. Wenn man nicht die Zeit hat, alle Spiele der M&M-Reihe durchzuspielen, so würde ich World of Xeen einem MM3 aufgrund der besseren Reife des Interfaces und des größeren Spielcontents vorziehen. Gleiche Argumentation brachte ich schon bei meinem Test von MM2 im Vergleich zu MM1.

World of Xeen hat alles, was ein gutes klassisches Action-RPG ausmacht: Eine abwechslungsreiche Welt, viele Quests, knifflige Rätsel und ein intuitives und schnelles Kampfsystem ohne Attributüberlastung. Wer es lieber langsamer und anspruchsvoller mag, sollte innerhalb der M&M-Reihe vielleicht einmal in MM2 reinsehen. Ab MM6 wagte sich die Reihe wieder an eine völlige Neuinterpretation und lieferte das erste Mal eine flüssige 3D-Welt und ein neues Spielgefühl.

Das Innere von Gebäuden ist nun besser aufbereitet. Spielerischen Mehrwert bietet es aber nicht.

Das Innere von Gebäuden ist nun besser aufbereitet. Spielerischen Mehrwert bietet es aber nicht.


by mandelbroetchen at August 20, 2015 12:18 PM

December 07, 2014

Mandelbroetchen

RetroReview – Wizardry I: Proving Grounds of the Mad Overlord

Wizardry I zählt nicht nur zu den Gründungsmüttern der Computerrollenspiele, sondern steht auch im Ruf, erbarmungslos schwierig zu sein. Zu recht? Nein, finde ich.

Wizardry: Proving Grounds of the Mad Overlord“ erschien 1981 für den Apple II und drei Jahre später in einer PC Version. Im Laufe der nächsten Jahre wurde das Spiel auf eine Vielzahl weiterer Systeme portiert, darunter C64, Mac, NES und gar den Gameboy Color. Die späteren Portierungen konnten bereits auf modernere Systeme zurückgreifen und boten teilweise Grafikerweiterungen wie Wandtexturen, die in der Originalversion nicht vorhanden waren. Selbst die PC Version bot schon einen Vollbildkerkermodus, der in der Apple II Version nur in einem Bruchteil des Bildschirms angezeigt wurde.

Apple 2 Version

Apple II Version

PC Version

PC Version

Die Leserin muss sich vor Augen halten, dass der Markt an Heimcomputerspielen 1981 noch sehr überschaubar war und die technischen Möglichkeiten sehr spärlich. 1980 wurde Pac-Man und 1981 Frogger veröffentlicht. Beide Spiele sind nicht für ihre Komplexität bekannt. Wizardry war im Heimcomputerbereich am ehesten noch mit Spielen wie Ultima, Rogue oder Zork vergleichbar, doch keines dieser Spiele bot eine 3D Ansicht des Dungeons und die Verwaltung einer kompletten Party. Wizardry orientierte sich im Grunddesign deswegen an Dungeons&Dragons, eines immer noch sehr erfolgreichen Pen&Paper Rollenspielsystems.

Ein nicht ganz so klassischer Klassiker
Wizardry ist ein Dungeon Crawler der alten Schule. Die Spielerin entwirft aus einem vorgegebenen Baukasten aus Völkern und Berufen eine Gruppe von sechs Heldinnen und schickt sie in einen zehnstöckigen Dungeon voller Monster und Schätze. Am Ende dieser Reise trifft sie auf einen großen Bösewicht (Werdna) und vernichtet ihn. Die Dungeongebiete sind fix vorgegeben und werden nicht etwa prozedural generiert. Die Monster und Gegenstände werden hingegen größtenteils zufällig ausgelost, wobei der Schwierigkeitsgrad mit jedem Dungeonlevel steigt.

An der Oberfläche wird per Textmenü die Lokalität für Befehle ausgesucht.

An der Oberfläche wird per Textmenü die Lokalität für Befehle ausgesucht.

Wizardry hat den Ruf, eines der schwierigsten Party-RPGs zu sein. Dies liegt in erster Linie daran, dass speichern und neuladen in Wizardry nicht funktioniert, denn das Spiel speichert automatisch bzw. die Welt ist persistent. Im Gegensatz zu vielen anderen Party-RPGs bedeutet der Tod einer Spielfigur, dass diese auch wirklich tot ist. Zwar besteht die Möglichkeit, einen Charakter im Tempel an der Oberfläche wieder zum Leben zu erwecken, doch dieser Versuch ist einerseits sehr teuer und muss andererseits nicht gelingen. Misslingt die Erweckung, so verfällt der Körper zu Asche. Der Aschehaufen hat einen letzten Versuch, noch einmal zum Leben erweckt zu werden. Misslingt auch dieser Versuch, so ist der Charakter für immer verloren. Die Wiederbelegung eines Charakters setzt voraus, dass es mindestens ein Charakter mit den Leichen zurück an die Oberfläche schafft. Sterben alle Charaktere im Dungeon, so bleiben sie zunächst dort liegen. Die Spielerin muss sich daraufhin mit einer neuen Truppe bis zum Punkt des Dungeons durchkämpfen, an dem die Leichen liegen. Dies kann mehrere Stunden hochleveln bedeuten, denn die neue Party startet wieder bei Null und der Dungeon resettet bei jeder Rückkehr zur Oberfläche. Selbst wenn sie mit der neuen Party die alte Party findet, kann es sein, dass ihre Gegenstände mittlerweile von Monstern ausgeraubt wurden. Häufig ist auch kein Gold vorhanden, um danach alle Charaktere wieder zum Leben zu erwecken.

In der Burg können Gegenstände eingekauft werden. Aber das wird teuer.

In der Burg können Gegenstände eingekauft werden. Aber das wird teuer.

Doch das ist nicht genug. Im Spiel gibt es Teleportationszaubersprüche und -fallen. Eine falsche Bedienung des Zauberspruchs oder eine nichtentschärfte Truhe kann dazu führen, dass die komplette Party in Stein materialisiert. Wenn dies passiert, sind alle Charaktere und damit alle Gegenstände und alles Gold unwiederbringlich verloren. Zusätzlich haben Charaktere in Wizardry ein Alter. Überschreiten sie eine gewisse Altersschwelle (Heilung benötigt Zeit), so verlieren sie Attribute und werden immer schwächer. Am Ende bleibt nur der Start mit neuen Charakteren.

All diese Zutaten erwecken den Eindruck, dass Wizardry ein sehr unbarmherziges Party-RPG ist. Das ist natürlich richtig, allerdings beruht das Missverständnis in meinen Augen auf einem entscheidenen Punkt: Wizardry ist nicht als Party-RPG konzipiert.

Mehr ein XCOM als ein Baldur’s Gate

Die  Charaktere führen genretypische Attribute.

Die Charaktere führen genretypische Attribute.

Wer Wizardry als typisches Party-RPG spielen möchte, wird es sehr schwer haben. Interessanter wird das Spiel, wenn man es als Dungeon Simulator begreift und sich selbst als Anführerin einer ganze Kompanie an Abenteurerinnen sieht. Wizardry hat mehr Parallelen zu Strategiespielen wie XCOM als zu klassischen Party-RPGs. Charaktere in Wizardry sind keine feste Gruppe, sondern sind wie Waffen oder Rüstungen eine Ressource, die es aufzubauen und zu verbessern gilt. Wer immer nur mit den gleichen sechs Spielfiguren in den Dungeon läuft, muss sich nicht wundern, wenn am Ende alle Arbeit umsonst war. Es ist ein Hochrisikoeinsatz, in einem Spiel, das eigentlich dazu gedacht ist, eine Kompanie an Figuren aufzustellen. Hierzu zählt auch, Figuren in immer neuen Kombinationen zu mischen, um junge Heldinnen durch alte Heldinnen schneller hochzuleveln oder auszurüsten.

In diesem Kontext wird auch verständlich, warum Charaktere in Wizardry bei einem Stufenaufstieg zufällige Boni und Mali erhalten. Tatsächlich können sich Spielfiguren bei einem Levelaufstieg verschlechtern, wenn sie vier Attributsenkungen erhalten, aber nur einen zusätzlichen Trefferpunkt. Wie in jeder Gruppe gibt es Figuren, die sich im Laufe der Zeit besser entwickeln als andere. Aufgabe der Spielerin ist es, diese Mischung aus Figuren zu verwalten und die besten Figuren über die Zeit herauszukristallisieren.

Unter dieser Prämisse ist der Verlust einer Spielfigur zwar immer noch schmerzvoll, aber nicht spielentscheidend. Es gibt auch kein „Game Over“, weil die Party im Dungeon verloren geht oder in Stein materialisiert, wie es selbst in der deutschsprachigen Wikipedia beschrieben wird. Nein, es ist nur ein Spielrückschlag in einem größeren Strategiespiel.

Keine Überraschungen im Dungeon

Kämpfe sind sehr übersichtlich gestaltet und enthalten sogar kleine Grafiken. (PC)

Kämpfe sind sehr übersichtlich gestaltet und enthalten sogar kleine Grafiken. (PC)

Die Wanderung im Dungeon ist aus heutiger Sicht Genrestandard, doch hat Wizardry sicherlich zur Schaffung dieses Standards beigetragen. Automapping existiert nicht. Dungeonkarten müssen selbst angefertigt werden und bestehen aus einem 20×20 Feldgitter über 10 Level verteilt. Interessantweise sind die einzelnen Levelkarten jedoch nicht immer mit Rändern ausgestattet. Wer die Karte am westlichen Ende verlässt, kommt am östlichen Ende wieder raus. Monster sind nicht aus der Ferne erkennbar. Die Felder, auf denen ein Kampf ausgelöst wird, sind teilweise vorgegeben und teilweise randomisiert. Es gibt ein paar Geheimtüren, Questitems und besondere Geschehnisse. Insgesamt ist der Dungeon jedoch relativ leer.

Die Kämpfe sind aufgrund des hohen Risikos eines Todes sehr spannend. Wie für die Wizardryreihe üblich, wird am Anfang einer Kampfrunde für alle Figuren eine Aktion festgelegt. Erst wenn alle Aktionen vergeben sind, werden diese tatsächlich ausgeführt. So ist bereits innerhalb einer einzelnen Runde ein Unsicherheitsfaktor eingebaut, denn es ist bis zum Schluss der Runde nicht klar, ob die Anzahl der Angriffe auf die feindliche Magierin reicht, um sie außer Gefecht zu setzen. Wer sichergehen will, schlägt lieber einmal zuviel zu.

Ein Schatz! Jetzt vorsichtig sein, denn eine einzige Falle kann den Tod aller Spielfiguren bedeuten.

Ein Schatz! Jetzt vorsichtig sein, denn eine einzige Falle kann den Tod aller Spielfiguren bedeuten.

Auffällig ist bei Kämpfen, dass Wizardry keine Fernwaffen kennt. Es existieren nur Nahkampfwaffen, Zaubersprüche und benutzbare Gegenstände. Bögen sucht die Spielerin vergeblich. Generell ist die Anzahl der Gegenstände relativ übersichtlich, doch das war bei Spielen dieser Zeit nicht ungewöhnlich. Bei Rüstungen kommt das D&D System zum tragen. So gilt eine Rüstungsklasse von 10 als besonders niedrig und ein Wert von -10 als besonders hoch. Weiterhin existiert kein Manasystem. Klerikerinnen und Magierinnen erhalten eine bestimmte Anzahl von verwendbaren Zaubersprüchen pro Zauberstufe. Die Zauber müssen tatsächlich mit ihrem Namen eingegeben werden. Allerdings ist dieses System immer noch besser als das Zahlensystem von Might and Magic I und II, denn Zaubernamen kann die Spielerin zumindest gut behalten.

Die Charaktergenerierung ist ebenfalls recht elementar. Sechs Attribute von Stärke bis I.Q. werden durch die Wahl aus fünf Mittelerdevölkern und zusätzlichen Bonuspunkten belegt. Die Bonuspunkte werden gewürfelt und können schon mal zwischen 5 und über 20 Punkten betragen. Der Unterschied ist so hoch, dass sich mehrmaliges Anlegen eines Charakters lohnt. Anhand der Attributwerte kann daraufhin eine aus acht Klassen ausgewählt werden. Manche Klassen haben so hohe Attributanforderungen, dass sie realistisch erst innerhalb des Spiels gewählt werden können. Klassen können in Wizardry jederzeit gewechselt werden, solange die Voraussetzungen vorhanden sind. Die Berufe schwanken genretypisch zwischen Kämperinnen, Diebinnen und Magierinnen/Klerikerinnen. Es existieren vier Basisberufe und vier „Eliteberufe“. Einzig die Kunoichi (Ninja) fällt etwas aus dem gewöhnlichen Raster, denn sie kämpft am besten völlig ohne Kleidung oder Waffen. Geschlechter existieren in Wizardry nicht.

Fazit

Hier hatten wir bei der Charaktergenerierung kein Würfelglück. Am besten erstellen wir einen neuen Charakter.

Hier hatten wir bei der Charaktergenerierung kein Würfelglück. Am besten erstellen wir einen neuen Charakter.

Wizardry ist ein klassisches Rollenspiel ohne ein klassisches Rollenspiel zu sein. Interpretiert man das Spiel als Party-RPG wird es extrem schwierig und durch den hohen Zufallsfaktor sehr unberechenbar. Sieht man in Wizardry hingegen ein Strategiespiel und einen Dungeonsimulator, so fällt der Schwierigkeitsgrad etwas ab. Anspruchsvoll bleibt es aber dennoch in jedem Fall.

Da der eigentliche Dungeon nur aus zehn Leveln besteht, verbringt die Spielerin die meiste Zeit des Spiels mit der Sortierung der Charaktere, der Kartographierung der Umgebung und der Sammlung von Erfahrung und Gegenstände durch den Kampf gegen Monster. Der Schwierigkeitsgrad der Level steigt schneller als in einem einzigen Durchlauf Erfahrung gesammelt werden könnte. Wird zusätzlich berücksichtigt, dass die Spielerin sehr viele Charaktere in den Dungeon schickt, so wird klar, dass immer wiederkehrende Durchläufe der gleichen Level zur Sammlung von Erfahrung Pflicht sind. Dieses Grinding wird nicht jeder Person gefallen.

Wizardry hat ein ohne Frage historische Bedeutung und sollte deswegen von jeder interessierten Spielerin einmal ein paar Stunden gespielt werden. Spieltechnisch wird aus heutiger Sicht abgesehen vom Metaspiel allerdings nicht besonders viel geboten. Als Ausgleich sind die implementierten Regeln gut durchdacht und liefern ein solides Gesamtwerk. Wie auch bei anderen Spielereihen gilt: die portieren NES-Versionen sind wesentlich spielfreundlicher, allerdings geht dabei der Charme des Originals verloren.


by mandelbroetchen at December 07, 2014 05:06 PM

December 01, 2014

Mandelbroetchen

RetroReview – Might and Magic III: Isles of Terra

Mit Might and Magic III wagte sich New World Computing an eine Neuerfindung der Serie. Schöner, einstiegsfreundlicher und actionreicher sollte es sein. Kann das zwischen Schwergewichten wie Wizardry VI und Ultima VI klappen?

Im Jahre 1991, und damit drei Jahre nach dem Erscheinen von MM2, wurde Might and Magic III: Isles of Terra für MS-DOS, Amiga und den Mac veröffentlicht. Weiterhin erschien eine stark zensierte SNES Version und eine Mega Drive Version. Die Vorgängerinnen Might and Magic I und Might and Magic II habe ich bereits getestet.

Zum Grundprinzip des Spiels lässt sich nicht viel Neues sagen. Wie in so gut wie allen Rollenspielen seiner Zeit steuert die Spielerin eine Gruppe von Abenteurerinnen, die auf der Suche nach Erfahrung, Gold und Gegenständen zahlreiche Aufgaben erfüllen. Might and Magic legte hierbei stets Wert auf eine nichtlineare Handlung, die irgendwann Züge von Science Fiction annimmt.

Technische Glanzleistung auf dem PC
Einer der großen Pluspunkte von MM3 liegt in einer gelungenen Präsentation. Die Grafik erstrahlt auf dem PC nicht nur in 256 Farben, sondern ist in den einzelnen Gebieten erfrischend abwechslungsreich. Zum ersten Mal im rundenbasierten Genre stellte sich bei mir während der Bewegung ein Gefühl von Immersion ein. Ein Schritt in eine Richtung wirkt nicht mehr wie ein komplett neuer Bildschirmaufbau, der mit dem letzten nur spiellogisch etwas zu tun hat. Das liegt unter anderem daran, dass noch in MM2 einige Randbereiche des Sichtfelds nicht mehr mitgezeichnet wurden, obwohl sie hätten da sein müssen. In MM3 sind alle Randbereiche vorhanden – und es sieht sehr schön aus.

Bei Nachteinbruch erreichen wir die Küstenstadt Baywatch.

Bei Nachteinbruch erreichen wir die Küstenstadt Baywatch.

Monster sind detailliert gezeichnet und animiert. Sie wirken hierbei nicht wie fehlplatzierte 2D Grafiken, sondern bedienen sich auch einigen Perspektiventricks, um die Illusion einer 3D Grafik zu verstärken. Sehr hilfreich ist ebenso, dass Gegnerinnen nun bereits aus der Ferne gesehen und mit Fernwaffen bekämpft werden können. Plötzlich auftauchende Monsterhorden gehören der Vergangenheit an.

Die Soundeffekte sind für die Zeit in Ordnung. Erwähnenswert ist die Musikuntermalung durch Midi-Stücke, die hörenswerte Ergebnisse liefern. Allerdings nutzen sich diese nach ein paar Stunden ab. Einstiegsfreundlich ist die neu integrierte Mausunterstützung, mit der alle Aktionen in der Spielwelt durchgeführt werden können. Im fortgeschrittenen Spielablauf wird die Spielerin aber schnell feststellen, dass sehr viele Befehlsketten (z.B. Heilzauber) per Tastaturbefehle wesentlich effizienter durchgeführt werden können.

Dungeons sind wie die Außenwelt sehr abwechslungsreich und stimmungsvoll.

Dungeons sind wie die Außenwelt sehr abwechslungsreich und stimmungsvoll.

Technisch gibt es an MM3 also nichts auszusetzen. Es setzt sich hiermit weit von anderen Spielen seiner Art ab. Die Engine war ihrer Zeit so weit voraus, dass sie auch noch in den beiden Nachfolgespielen genutzt werden sollte.

Leicht erweiterte Charaktergenerierung
MM3 bleibt seinen Wurzeln treu und ändert keine grundlegenden Eigenschaften der Charaktergenerierung. Spielfiguren erhalten gewürfelte Werte der Attribute Macht, Intelligenz, Persönlichkeit, Ausdauer, Geschwindigkeit, Genauigkeit und Glück. Aus diesen Parametern leiten sich zusammen mit Herkunft und Klasse alle Zweitattribute ab. Während des Spielverlaufs werden dies Grundwerte nicht etwas bei einem Stufenaufstieg verbessert, sondern durch das Finden von Brunnen, Fässern und anderen Gegenständen. Starke Charakterverbesserungen durch Erkundung waren in der Might and Magic Reihe immer ein Alleinstellungsmerkmal. Wie schon in MM2 gibt es zusätzliche Sekundärskills wie Navigation, Kartographie oder Body Building, die bei NPCs gekauft werden können. Diese sind nun auch nicht mehr auf zwei pro Charakter begrenzt, wodurch weiteres Verbesserungspotential besteht.

Training erhöht Trefferpunkte, Zauberpunkte und Angriffe, aber keine Attribute.

Training erhöht Trefferpunkte, Zauberpunkte und Angriffe, aber keine Attribute.

MM1 startete mit den Charakterklassen Ritterin, Paladin, Bogenschützin, Diebin, Klerikerin und Zauberin. MM2 fügte dann noch Kunoichi und Barbarin hinzu. In der Bewertung von MM2 kritisierte ich, dass die beiden neuen Charakterklassen keinen wirklichen Mehrwert in das Spiel brachten. Die Barbarin wurde in MM3 tatsächlich leicht aufgewertet. Sie erhält nun im Laufe der Charakterlevel schneller zusätzliche Angriffe als der Ritter und wird damit zu einem starken Offensivcharakter.

Auch mit MM3 sind wieder zwei neue Berufszweige hinzugekommen. Grundlage für die beiden neuen Klassen ist die neue Magieart Naturmagie. Naturmagie ist ein etwas seltsamer Mix aus Teilen der bereits bestehenden beiden Magiearten arkane Magie (Zauberinnen) und Heilungsmagie (Klerikerinnen), angereichert um einzelne neue Zaubersprüche wie Wasserwandeln. Analog zu den anderen Magiearten gibt es eine hauptberufliche Magierin (Druidin) und einen Kampf/Zauber Mischcharakter (Waldläuferin/Rangerin). Insbesondere die Rangerin ist damit ein konsequenter Mischberuf, der alle Magiearten und durchschnittliche Kampffertigkeiten verbindet.

Das Character Sheet ist zwar funktional, aber auch sehr unorganisiert.

Das Character Sheet ist zwar funktional, aber auch sehr unorganisiert.

Schon wieder geht MM3 damit einen Weg, der neue Berufszweige hinzufügt, die aber kaum grundsätzliche Änderungen des Spielflusses nach sich ziehen. Die einzelnen neuen Zaubersprüche sind durchaus sinnvoll, fügen dem Spiel aber keine neue Dimension hinzu. Gewünscht hätte ich mir neue Spiellogiken wie Beschwörungen, Tarnungen, Illusionen oder gar Gedankenkontrolle.

Die Kunst des Kampfes
MM2 hatte seine Höhepunkte in der Inszenierung von Massenschlachten. Während sich in MM2 über 200 Gegnerinnen der Gruppe entgegen stellen konnten, so sind es in MM3 gerade mal drei Monster.

Monster können bereits aus der Entfernung angegriffen werden.

Monster können bereits aus der Entfernung angegriffen werden.

Natürlich muss man da ein wenig differenzieren. In MM2 gab es keinerlei Raumlogik. Kämpfe entstanden, wenn die Party ein vermeintlich leeres Feld betrat. Alle Monster des Kampfes stürmten dann gleichzeitig auf die Gruppe zu. In MM3 laufen Kämpfe so ab, dass eine bestimmte Anzahl von Monstern auf der Karte verteilt sind und mehrere Felder belegen. Diese Monster sind schon aus der Weite erkennbar und können durch Bögen oder Zaubersprüche angegriffen werden (natürlich wehren sie sich auch mit gleichen Mitteln). Das bedeutet, dass Schlachten in MM3 nahtlos in die normale Kartenerkundung integriert sind. Die Party kann sich entscheiden anzugreifen, ihre eigene Position auf der Karte strategisch zu ändern oder sich zurückzuziehen.

Erst wenn sie mit einer Gruppe Monster ein Feld teilen, ist kein Rückzug aus der Schlacht mehr möglich, bis die Gegnerinnen besiegt sind. Wird eine der maximal drei Gegnerinnen getötet, rückt ein wartendes Monster aus einem Nebenfeld nach. Im Prinzip ist hiermit das MM2 Modell nachgebildet, welches ebenfalls nur eine bestimme Anzahl Monster gleichzeitig im Nahkampf angreifen ließ. Allerdings werden Monsterhorden nie so riesig, dass Großschlachten möglich sind. Wenn sich die Spielerin beim Ausweichen nicht zu ungeschickt anstellt, muss sie selten mehr als 5-10 Monster am Stück töten. Weiterhin ist sehr auffallend, dass in MM3 in einem Kartengebiet in der Regel nur zwei unterschiedliche Monstertypen auftauchen. Da schränkt die Abwechslung weiter ein.

Im Nahkampf wechselt das Spiel in die übliche Rundenlogik.

Im Nahkampf wechselt das Spiel in die übliche Rundenlogik.

Als Rückschritt empfinde ich die fehlenden Informationen bei einem Schlagaustausch. In MM2 waren die Kampfinformationen noch in Textform. So konnte für jeden Angriff die Anzahl der Versuche, die Treffer und auch der Schaden numerisch exakt angezeigt werden. Resistenzen von Monstern wurden ebenso angezeigt. In MM3 werden diese Texte durch kurze Schadensbitmaps ersetzt. Wird ein Monster durch Feuer verletzt, erscheint eine kurze Feuergrafik. Es gibt aber keinen Hinweis mehr darauf, ob meine Ritterin nun 100 Schadenspunkte oder nur einen Schadenspunkt verursacht hat; und ob das an der Resistenz des Monsters liegt oder einfach nur am Pech beim Würfeln. Da von Gegnerinnen auch keine Trefferpunkte angezeigt werden, kann hier stellenweise nur geraten werden. Ein wenig klarer wird die Situation erst durch einen Zauberspruch, mit dem die Parameter eines Monsters angezeigt werden können.

Als Ausgleich spielen sich die Kämpfe wesentlich flüssiger und sind wegen der kaum vorhandenen Gegnerinnen-KI strategisch leichter zu bewältigen als noch in den Vorgängerinnen. Insbesondere das Ausweichen auf andere Kartenfelder überfordert die KI völlig. Sie sucht im Prinzip nur den kürzesten Weg zur Party.

Schönere Karten und Automapping
Die Außenwelt von MM3 ist sehr abwechslungsreich und sieht sehr schön aus. War die Welt in den Vorgängerinnen noch auf einen großen Kontinenten beschränkt, so bietet MM3 gleich mehrere Kontinente mit unterschiedlichen Klimazonen. Dungeons sind jetzt wesentlich weitläufiger, bieten aber im Gegensatz nicht so viel komprimierten Inhalt. Insgesamt hält sich die Fülle in Dungeons also die Waage.

Die automatische Karte ist nun endlich intuitiv benutzbar.

Die automatische Karte ist nun endlich intuitiv benutzbar.

Grundsätzlich sind die Außen- und Innenkarten nun nicht mehr als Irrgarten aufgebaut, sondern simulieren eine natürliche Umgebung. Zwar gibt es immer noch geheime Türen, die bei geeignetem Skill oder Zauberspruch offenbart werden, aber die Anzahl ist deutlich zurückgegangen. MM3 nervt die Spielerin also nicht mehr mit einseitig durchgängigen Wänden hinter jeder zweiten Abbiegung, die nur durch Ausprobieren gefunden werden können.

Die Automappingfunktion ist nun noch weiterentwickelter als in MM2. Für jedes Feld wird erstmals der Bodentyp erfasst, was einer Orientierung auf der Karte ungemein hilft. Ebenso werden statische Objekte wie Städte oder Hütten eingezeichnet. Unschön ist weiterhin, dass keine manuellen Kommentare möglich sind und sich die Zeichenfunktion auf das aktuelle Feld beschränkt. Obwohl die Party jederzeit mehrere Felder nach vorne blicken kann, werden diese von der Karte erst erfasst, wenn man sie durchschreitet. Das führt dazu, dass bestimmte Barrieren wie Gebirge nicht eingezeichnet werden, die Spielerin auf der Karte aber auch nicht erkennen kann, ob das fehlende Feld nun unpassierbar ist oder bei der Erkundung schlicht vergessen wurde.

Das Inventar wirkt etwas lieblos und wird schnell unübersichtlich.

Das Inventar wirkt etwas lieblos und wird schnell unübersichtlich.

Dynamisch generierte Gegenstände
MM3 ist das erste Spiel der Serie, das Gegenstände prozedural erzeugt, die aus mehreren Attributen zusammengesetzt sind. So wird ein „giant flaming steel hammer of turn undead“ besonders viel physischen Schaden verursachen, zusätzlich Feuerschaden bieten und bei Benutzung als Gegenstand Untote vernichten. Das Gegenstandssystem ist damit wesentlich flexibler als die bisherigen fixen Systeme der Vorgängerinnen. Allerdings werden keine Bonusweiden wie in der Diabloserie geschaffen. Die Boni beschränken sich fast immer auf zusätzlichen Schaden bei Waffen bzw. zusätzlicher Rüstung bei sonstigen Gegenständen, plus einem benutzbaren Zauber, der aber identisch zu dem Zauber ist, den zauberfähige Charaktere lernen können. Letztlich gilt auch bei den Gegenständen: quantitativer Zuwachs, aber keine qualitative Weiterentwicklung des Spiels.

Fazit
Might and Magic III: Isles of Terra gründet eine neue Ära der Might and Magic Reihe und war ein wichtiger Schritt für modernere Rollenspiele am PC. Die Präsentation ist ausgezeichnet. Die Benutzerinnenführung ist dank Mausunterstützung einstiegsfreundlich. Das Kampfsystem wurde entschlackt, ebenso ist die labyrinthartige Struktur voller geheimer Gänge auf der Weltkarte aufgegeben worden. Beide Zeitfresser nehmen dutzende von Routinestunden aus der Spielspaßgleichung.

Generell ist MM3 der erste Teil der Serie, der sich sehr flüssig spielt und schnelle Erfolgserlebnisse bietet. Der Schwierigkeitsgrad ist im Vergleich zu den Vorgängerinnen gesunken, befindet sich aber immer noch auf einem herausfordernden Niveau.

Kurzum: MM3 macht auch als Spiel für Zwischendurch einfach Spaß. Also Retrospiel dürfte MM3 einigen Spielerinnen gefallen, die sich von der textlastigen und statischen Präsentation der Vorgängerinnen abschrecken ließen. Im Gegenzug sind einige Hardcore Retrogamerinnen eventuell mit MM2 besser bedient, welches meiner Meinung nach das anspruchsvollere Kampfsystem bot.


by mandelbroetchen at December 01, 2014 03:31 PM

November 27, 2014

Mandelbroetchen

RetroReview – Might and Magic II: Gates to Another World

Nachdem ich bereits den ersten Teil der Might and Magic Reihe behandelt habe, schauen wir uns in diesem Review die Nachfolgerin genauer an. Hatte New World Computing aus den Schwächen der Vorgängerin gelernt und ein besseres Spiel auf den Markt gebracht? Ich denke: ja.

„Might and Magic II: Gates to Another World“ (kurz: MM2) erschien 1988 vom Apple II, über den C64 und Amiga bis zu PC/DOS auf nahezu allen gängigen Plattformen. Wie schon beim ersten Teil wurden spezielle Programmversionen für Spielekonsolen wie den SNES und die Sony Genesis angefertigt. Im weiteren Verlauf dieses Reviews beziehen sich Bemerkungen auf die DOS Version des Spiels. Generell sind die Versionen recht ähnlich, wenn wir mal davon absehen, dass in der Nintendoversion alle alkoholischen Getränke entfernt wurden.

MM2 wurde im gleichen Jahr wie die großen Konkurrenten Wizardry V und Ultima V veröffentlicht, war beiden Spielen aber grafisch überlegen. So konnte die Might and Magic Reihe vor allem ihren Ruf als einstiegsfreundliches Action-RPG weiter stärken.

Zeitliche Einordnung von Might and Magic II unter die großen Rollenspielserien

Zeitliche Einordnung von Might and Magic II unter die großen Rollenspielserien

In vielen Dingen ein Might and Magic 2.0
Schon zu Beginn des Spiels wird schnell klar, dass MM2 im Prinzip ein MM1 mit zusätzlich genutzter Entwicklungszeit ist. Neben einer höchst ähnlichen Hintergrundgeschichte sind auch die technischen Wurzeln beinahe identisch. Das Spielprinzip blieb seinen Wurzeln treu: mit einer sechsköpfigen Party wird in einer First Person Ansicht eine vollumfängliche Welt mit Außengebieten und Dungeons erkundet, es werden Monster getötet, Gegenstände gesammelt und Aufgaben erfüllt.

Gebiete haben nun Boden- und Himmelstexturen.

Gebiete haben nun Boden- und Himmelstexturen.

Als Ausgleich für fehlende Neuerungen gibt es von allem ein wenig mehr. Die Grafiken sind nun detaillierter und farbenfroher. Die teils wirre Bildschirmaufteilung der Vorgängerin wurde durch ein konsequentes Rahmendesign ersetzt. Monster und NPCs bieten nun Animationen und insbesondere der Kampfbildschirm ist nun wesentlich aufgeräumter und übersichtlicher.

Ein paar Neuerungen haben dennoch den Weg in MM2 gefunden.

Zwei neue Klassen und unvollständige Zaubersprüche
Die Charaktererstellung wurde im Wesen beibehalten. Tatsächlich kann die Spielerin ihre Party aus dem ersten Spiel importieren. Neu hinzugekommen sind jedoch die beiden zur Auswahl stehenden Klassen Kunoichi (männlich: Ninja) und Barbarin.

Kunoichi sind in der MM-Welt Diebinnen, die ein Teil ihrer Diebesfähigkeiten gegen die Möglichkeit auf kritische Treffer im Kampf eintauschen. Wer sich allerdings mehr strategische Tiefe in Kämpfen erhofft, wird enttäuscht sein. Anders als in der Wizardryreihe gibt es kein implementiertes Tarnungskonzept. Eine Kunoichi besitzt nur eine gewisse Wahrscheinlichkeit in Kämpfen doppelten Schaden zu verursachen.

Wer in dieser Handstellung würfeln kann, erhält Bonuspunkte.

Wer in dieser Handstellung würfeln kann, erhält Bonuspunkte.

Barbarinnen sind hingegen Kriegerinnen, die mehr Trefferpunkt erhalten, aber als Ausgleich nur leichte Rüstungen tragen können. Auch in diesem Fall wird spieltechnisch kein Mehrwert durch eine neue Kampfmöglichkeit geschaffen. Ebenso bleibt fraglich, ob ein paar Trefferpunkte mehr den Nachteil des höheren Schadens bei leichter Rüstung in langatmigen Kämpfen wirklich ausgleichen.

Bei der Klassenwahl bleibt deswegen ein leichter Nachgeschmack. Sicherlich wollte New World Computing mit den zusätzlichen Klassen einen großen Kritikpunkt von MM1 ausräumen. Bei sechs Charakteren nur sechs mögliche Berufe anzubieten, förderte nicht gerade die Wiederspielbarkeit von MM1. Die Wizardry-Reihe bot schon seit dem ersten Teil acht mögliche Klassen an. Leider wirken die neuen Klassen in MM2 jedoch nicht wie ein großer Mehrwert für das Spiel.

Dieses Schild könnte man in MM2 auf jedes Feld stellen.

Dieses Schild könnte man in MM2 auf jedes Feld stellen.

Interessanter ist hingegen, dass Zaubersprüche nun nicht automatisch per Levelaufstieg erlangt werden. Zwar gilt dies für einen Grundstock von Sprüchen, aber die wirklich mächtigen Zaubersprüche müssen entweder in Städten gekauft oder in Dungeons gefunden werden. Dies bietet durchaus den ein oder anderen Anreiz, die Gegend genauer zu erkunden.

Bezahlte Söldnerinnen als Aushilfe
MM2 war das erste Spiel der Reihe, welches die Möglichkeit schuf, maximal zwei Söldnerinnen der Gruppe hinzuzufügen. Folglich ist die Maximalanzahl der Charaktere in der Party auf acht Personen gestiegen. Natürlich wollen diese NPCs für ihre Tätigkeit bezahlt werden. Hilfreich können sie bei harten Kämpfen jedoch trotzdem sein. Die zusätzlichen Charaktere sind allerdings durch das Spiel aus einer festen Auswahl vorgegeben und aus den gleichen Kombinationen von Herkunft und Beruf gebildet. Besondere Kampffertigkeiten oder Überraschungen haben sie also nicht zu bieten.

Die Einführung von Sekundärfähigkeiten
Die Möglichkeiten der Spielerin, nach der Charaktergenerierung noch Einfluss auf das Wesen der Spielfigur zu nehmen, waren im ersten Teil sehr stark begrenzt. Zwar können einzelne Attributwerte an Brunnen oder ähnlichen Objekten erhöht werden, doch grundlegende Weiterentwicklungen der Figuren gab es nicht. In MM2 ist es nun erstmals möglich, Sonderfertigkeiten zu erlangen. Diese binären Eigenschaftsschalter können Fertigkeiten wie das Durchschreiten von Wäldern, die Erhöhung von Zauberpunkten oder das Herunterhandeln von Händlerinnenpreisen beinhalten. Die Beschränkung von maximal zwei Sekundärfähigkeiten pro Charakter wirkt etwas künstlich, aber ist sicherlich dem Balancing nicht abträglich.

Automapping als Spielspaßsegen
Ja, ich mag das Zeichnen von Karten auf Papier und hatte deswegen mit MM1 viel Freude. Nun kann ich aber verstehen, wenn andere Menschen lieber auf eine digitale Karte zurückgreifen. Weiterhin war die Spielerin durch den Platzbedarf an Block und Lineal dazu gezwungen, MM1 ausschließlich Zuhause am Desktoprechner zu spielen. MM2 bietet hier nun die Erlösung. Sobald ein Charakter mit der Kartographiefähigkeit in der Party ist, beginnt eine spielinterne Karte, sich selbst zu zeichnen, wie es mittlerweile in allen RPGs Standard ist.

AU-TO-MAP-PING!

AU-TO-MAP-PING!

Perfekt ist diese Lösung immer noch nicht, denn jenseits von Wänden werden keine interessanten Objekte eingezeichnet. Da es keine Option einer manuellen Kommentierung der Karte gibt, bleibt der Spielerin mit schlechtem Gedächtnis doch wieder nur die Notation von Koordinaten auf Papier – oder sie schaut ins allwissende Internet. Gleiches gilt im übrigen für die Zaubersprüche. Sie werden kryptisch über Zahlenketten 2-3, 4-1 oder 6-2 eingegeben. Ohne Handbuch hatte die Spielerin früher das Nachsehen.

Mehr, mehr, … MEHR
Spielerinnen, die im ersten Teil schon an acht Dämoninnen verzweifelten, dürfen sich freuen: in MM2 sind den Monsterhorden kaum noch Grenzen gesetzt. 255 Gegnerinnen, von denen jede einzelne Flächenschaden in der ganzen Party verursachen kann? Kein Problem. Ihr habt euch auf 100 Monster runtergekämpft, die aber aus einer Laune heraus weitere 80 Monster Verstärkung rufen? Auch das kann passieren.

Für MM2 nur eine Zwischenmahlzeit: 6 Mumien stellen sich uns entgegen.

Für MM2 nur eine Zwischenmahlzeit: 6 Mumien stellen sich uns entgegen.

Wenn ein Might and Magic Teil als Hack&Slash betitelt werden sollte, dann MM2! Ich habe vermutlich in keinem anderen Spiel jemals so viele Kreaturen getötet. Die schiere Anzahl von Gegnerinnen stellt die Spielerin vor ganz pragmatische Grenzen. Da die Kämpfe rundenbasiert verlaufen und jede Kampfnachricht eine gewisse Zeit auf dem Bildschirm verbleibt, um lesbar zu sein, kann ein einzelner Kampf schon mal 30-60 Minuten in Anspruch nehmen. Zu dumm, wenn das letzte Monster die Party versteinert und man einen alten Spielstand laden darf…

Nichtsdestotrotz sind die Kämpfe in MM2 eine der Highlights der gesamten Serie. Die Schlachten spielen sich durch die größere Feindanzahl und die erweiterten Zaubersprüche wesentlich dynamischer und spannender als noch im ersten Teil. Zugleich ist es der letzte Teil der Serie, der solch strategische Tiefe in der Positionierung und Anwahl von eigenen Figuren und Monstern bietet. Ab MM3 wurde der Kampfmodus generalüberholt und erlaubt nur noch drei(!) gleichzeitige Gegnerinnen auf einem Feld.

Natürlich wurden auch andere Teile des Spiels stark erweitert. So wurde ein dynamisches +X System bei Gegenständen eingeführt, die die Grundwerte des Gegenstands verbessern. Es gibt neue Zaubersprüche, neue Monster und die Anzahl von Quests wurde mehr als verdoppelt.

Fazit
Might and Magic II ist das bessere Might and Magic I und ein herausragender Teil der Serie. Dies liegt nicht zuletzt daran, dass die Serie mit dem dritten Teil in eine neue Entwicklungsrichtung gezogen wurde. Wer sich an der etwas sterilen Präsentation mit nüchternen Grafiken und kaum Soundunterstützung nicht stört, findet ein spieltechnisch durchdachtes und herausforderndes Rollenspiel der ganz alten Schule.

Klarer Höhepunkt von MM2 sind die Massenschlachten mit mehr als 200 Gegnerinnen und der strategischen Tiefe von rundenbasierten Textkämpfen. Die integrierten Neuerungen sind größtenteils sinnvoll und lassen die Reise erahnen, die New World Computing mit den nächsten Teilen noch gehen wird. Weniger positiv ist das veraltete Speichersystem, bei dem nur beim Betreten einer Wirtschaft das Spiel gesichert werden kann. Wer sich daran stört: heutige Emulatoren bieten die Option, jederzeit Speicherabbilder zu verwalten.

Ich spreche dem zweiten Teil eine klare Spielempfehlung und einen hohen Retrofaktor aus.

Hübsche Grafiken fördernd den Entdeckungsdrang. Aber es lauert nur Tod.

Hübsche Grafiken fördernd den Entdeckungsdrang. Aber es lauert nur Tod.


by mandelbroetchen at November 27, 2014 03:37 PM

June 30, 2014

felis

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

rohieb

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::https://stratum0.org/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::https://stratum0.org/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:

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

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 rohieb.name master
~/stratum0-wiki$ git push rohieb.name 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 Bohrer@stratum0.org/mediawiki>
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.

Conclusion

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://git.rohieb.name/stratum0-wiki.git.

March 24, 2014 02:12 AM

March 18, 2014

Tinuqin

Dewdrops on the grass I’m growing for my cats













Dewdrops on the grass I’m growing for my cats

March 18, 2014 04:04 PM

March 10, 2014

Tinuqin

March 02, 2014

xinitrc

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.

Haskell

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

rohieb

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 speaking.io 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

xinitrc

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.

Example

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.

Haskell

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

xinitrc

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.

Graphs

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
      where
	      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
    where
	  f k (Matrix m) = matrix build
	    where
		  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.

Haskell

In Haskell this is equally simple

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

instance StarSemiring Bool where
  star x = one

Application

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
  where
      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.

Application

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)
  where
      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>.

Application

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.

Application

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

Tinuqin

In continuation of yesterday’s post, have some mermaid...





In continuation of yesterday’s post, have some mermaid themed fingernails.

Nail polish used:
Essence Wonder Wow! Man! (Limited Superheroes Edition)
P2 Lost in Paradise
Catrice Glitterazzi
Essence Party in a Bottle

February 09, 2014 11:48 PM

xinitrc

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.

Preliminaries

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.

Sets

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.

Examples

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>

Haskell

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.

Magma

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:

Examples

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.

Haskell

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 

Semigroup

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>.

Examples

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.

Haskell

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 

Monoid

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.

Examples

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 ;-).

Haskell

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.

Semiring

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

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.

Haskell

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>

Example

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.

Haskell

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

February 08, 2014

Tinuqin

I may or may not have a slight makeup problem. This is my...



















I may or may not have a slight makeup problem.

This is my collection of colorful and/or glittery nail polish and eyeliner. My problem, especially with the nail polish, is that I buy new stuff so frequently that I get to use each one only once or maybe twice. However, I am not ready to part with any of them, instead I am determined to wear nail polish more often, even if it takes a lot of time to put it on (glitter nail polish takes an awful long time to dry).

The eyeliner is less of a problem because I wear colorful eyeliner almost every day.

I wonder which will come first: The day I run out of room for all my stuff or the day I can walk past a new shade of glitter eyeliner without buying it.

February 08, 2014 01:34 PM

January 19, 2014

Tinuqin

Rainbow Hair + Glitter Make-up = <3 Also, my cat is tired of...











Rainbow Hair + Glitter Make-up = <3

Also, my cat is tired of my crap and would like to get away now kthxbai

January 19, 2014 12:00 PM

xinitrc

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.

XMonad

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!

Layouts

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

Tinuqin

Finished Project: Baby Jacket I made this jacket for my...





Finished Project: Baby Jacket

I made this jacket for my nibling*. Sadly, I don’t have a picture of them wearing it, because it’s still too big. I’m not yet able to estimate how long a specific project will take me to finish, so I cast this on a little bigger than necessary to make sure they will not have grown out of it already when it is finished.

*I have no idea who coined the term “nibling”, but I love it. I think I saw it first as “niblings”, as a shortened way to say “nieces and nephews”, but it makes a great gender-neutral term as well.

January 12, 2014 09:19 PM

xinitrc

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.

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.

Javascript

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.

Norwegian

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.

UX

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 29, 2013

Tinuqin

More chipmunks, because I went and took more (and better)...





















More chipmunks, because I went and took more (and better) pictures after the last post.

December 29, 2013 10:23 PM

December 25, 2013

rohieb

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 23, 2013

Tinuqin

I am currently on Fuerteventura for the holidays. There is a...









I am currently on Fuerteventura for the holidays. There is a colony of chipmunks living between my hotel and the beach, so I took my 300mm lens out for a spin.

December 23, 2013 07:15 PM

December 16, 2013

felis

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

xinitrc

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

Preparation

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

xinitrc

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.

Premise

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.

Problem

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.

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.

Conclusion

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

Tinuqin

Some sweet stuff I made last week: 1. Miniature Apple Rose Tarts...











Some sweet stuff I made last week:

1. Miniature Apple Rose Tarts (Recipe here)

2. Oreo Meringue Layered Dessert (Adapted from this recipe)

3. Traditional Apple Pie (Recipe here)

December 01, 2013 05:41 PM

xinitrc

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.

Evernote

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.

iAnnotate

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.

iSSH

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.

iAWriter

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.

Conclusion

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 24, 2013

Tinuqin

Nopetopus

Recently, when reading the comments to a post on Pervocracy, I came across this gem:

(…) I’d be riding the nopetopus out of there as fast as its eight legs would carry it.

The mental image this produced was hilarious, and as I’ve been wanting to try hand-drawn animation for a while now I decided to make this into a gif. This picture consists of nine panels (I thought about making more to make the animation more smooth but I then didn’t because lazyness).

Those of you who follow me on Twitter might have already seen the sneak preview I posted a few days ago:

This animation is meant to be a reaction gif, so feel free to use this picture wherever you like, to redistribute and even reupload it, as long as you don’t remove my watermark.

November 24, 2013 03:58 PM

November 19, 2013

felis

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.

Links:
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

felis

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:
skin.png

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:
skin_revised.png

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

rohieb

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

Problem

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
Strings
  • 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).
Names
starting with a forward slash, like /Type. You can think of them like identifiers in programming languages.
Arrays
enclosed in square brackets: [ -1 4 6 (A String) /AName [ (strings in arrays in arrays!) ] ]
Dictionaries
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.

%PDF-1.4

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

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
   >>
endobj

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 >>
    >>
endobj

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     >>
stream
q
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
BI
  /W 1653
  /H 2338
  /CS /G
  /BPC 8
  /F /FlateDecode
ID
x$¼[$;¾åù!fú¥¡aæátq.4§ [ ...byte stream shortened... ]
EI
Q
endstream
endobj

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
>>
stream
% [ raw byte data ]
endstream

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
>>
stream
% [ raw byte data ]
endstream

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

Unsichtbarer

Einschlafpornos

Eine ganze Woche lang nichts produktives auf die Reihe bekommen. Stupid Minecraft, always messing with time management…

Drum reaktivier ich einfach mal ein paar alte Verse, die ich schrobte, als das Sofakissen einst meinte: “Nene, den Laptop muss ich schon mitnehmen, ich brauch doch meine Einschlafpornos” (so oder so ähnlich).

Einschlafpornos

Einschlafpornos brauch ich heut,
Für morgen und für alle Zeit.
Ohne sie mag ich nicht sein,
Denn ohne sie schlaf ich nicht ein.

Am Tage sind sie wirkungslos,
Keine Beul’ in meiner Hos’.
Nur zu später Stunde dann,
Des Nachts, zur Dämm'rung dann und wann,
Wenn’s Stöhnen erklingt und Brüste wogen,
Besser zu sehn als Opern auf Logen.

Dies also betrachtend, nach Fellatio schmachtend.
Und man daraufhin vor Anstrengung keucht,
Am Körper Schweiß, die Hände feucht
Und man erschöpft is Kissen sinkt
Sich eines ruhigen Schlafes dünkt.

November 17, 2013 10:56 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 13, 2013

Tinuqin

Red tabby catdragons are a serious fire hazard.



Red tabby catdragons are a serious fire hazard.

November 13, 2013 06:11 PM

November 11, 2013

Tinuqin

Birthday cake! I have been wanting to try making a decorated...









Birthday cake!

I have been wanting to try making a decorated Swiss roll for a while now and I finally got the opportunity to make one for my mother’s birthday.
To get a pattern in a cake like this you first need to pipe the desired shapes on a baking sheet and the either bake or freeze it. This way, the colored batter doesn’t smudge when you add the rest of the batter. Also, if you want any writing on your cake it needs to be done in reverse. No matter how confident you are in your ability to write backwards, it’s probably best if you check the result in an actual mirror or you will get letters that are the wrong way round and you will be so embarrassed that you seriously consider trashing your cake and make a new one and never post any proof of your failure online. Trust me, I know.

All in all I’m pretty happy with how crisp and colorful the decorations turned out, though. Less so with how flat the cake is. Sturdier filling next time.

November 11, 2013 02:18 PM

November 10, 2013

grimegrrrl

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.

/schnitt/

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 09, 2013

Unsichtbarer

Smells Like Teen Sorrow

Donnerstag war super: gut getanzt, Spaß gehabt, mit Einladung für Freitag nach Hause gegangen.

Freitag war… nicht gut. Irgendwie nicht so locker wie am Vortag und dann genau den overthinking/overreacting-Kurzschluss-Scheiß gemacht, dessen Vermeidung mich am Tag zuvor noch so gut dastehen ließ. Und warum? Keine Ahnung. Deswegen ja overthinking/overreacting-Kurzschluss-Scheiß.

Klingt wirr? Ist es auch. “Was zur Hölle hast n angestellt?!” Nur was gesagt. Und dann was nicht gesagt. Und dann alles broken. Overthinking/Overreacting-Kurzschluss-Scheiß, sagte ich bereits, nein?

Und jetzt warte ich darauf, dass meine Entschuldigung gelesen und akzeptiert wird. Naja, zumindest gelesen, keine Antwort ist dann ja auch eine…

November 09, 2013 01:15 PM

November 08, 2013

Tinuqin

I started knitting again recently and this is the first project...











I started knitting again recently and this is the first project I finished.

I’m quite proud of my hair but I don’t like freezing my ears off so I needed something pretty to cover it up during winter. The lattice pattern was easier to knit than I thought and makes the hat tight and warm. If I have the time I will make matching mitts with the rest of the yarn.

November 08, 2013 11:24 PM

rohieb

A Lesser-Known Feature of kill(1)

Problem

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.

Solution

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
SEGV

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

Tinuqin

Catdragons This morning at breakfast I had the idea that cat...



Catdragons

This morning at breakfast I had the idea that cat dragons would be a cool thing to exist, so I drew my two cats as dragons. On the pro side, catdragons are awesome and can fly, on the con side, they have even more pointy ends than normal cats and the wings might interfere with cuddling? Next thing to find out: do catdragons breathe fire or do they, like, spit hairballs or something?

November 07, 2013 03:09 PM

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 03, 2013

Unsichtbarer

Female Fronted Music

Eigentlich wollte ich was über den zweiten Bildungsweg schreiben, bin damit aber nicht fertig geworden. Außerdem gibts dazu ja auch bei Pyyraa schon was zu lesen.

Stattdessen also, in Anlehnung zum femalefrontedhardcore-tumblr, eine Playlist mit durchweg empfehlenswerten Interpreten (im Gegensatz zu One-Hit-Wonders) mit weiblicher Frontperson.

Enjoy!

November 03, 2013 11:39 AM

November 02, 2013

grimegrrrl

grimegrrrl

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.

gender_versatzstücke.

gender.
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.

 

genderqueer. 
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.¹

 

¹ http://anarchieundlihbe.blogsport.de/
² queer hspva. an introduction to queer activism and hspva’s gender and sexuality alliance. http://zinelibrary.info/queer-hspva-introduction-queer-activism-and-hspvas-gender-and-sexuality-alliance#attachments
³ https://en.m.wikipedia.org/wiki/Cosplay
⁴ transkription aus heiterscheitern1 http://www.scheitern.org/?p=3

 

 

by grimegrrrl at November 02, 2013 11:43 PM

October 30, 2013

felis

Ü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

rohieb

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

grimegrrrl

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

rohieb

New Blag, yay!

Sooo. You might already have noticed that I moved my blag from wordpress.com 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 WordPress.com seemed like the best solution to get started with blogging.

However, the free plan at WordPress.com 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 rohieb.name

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

;; QUESTION SECTION:
;rohieb.name.               IN  AAAA


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

;; Query time: 3 msec
;; SERVER: 192.168.148.1#53(192.168.148.1)
;; 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

rohieb

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