Kategorien
Diplomarbeit

Javascript aus FF-Erweiterung in der Webseite benutzen

Langer Titel, kurzer Blogeintrag. Ich bastel gerade daran rum, diverse Javascript-Funktionen innerhalb der HTML-Seite zu benutzen. Das kann ziemlich hässlich werden:

var head = this.getContentDocument().getElementsByTagName("head")[0];
var script = this.getContentDocument().createElement("script");
var showImage = this.getContentDocument().createTextNode("function showImage(id) { "
		 + "var image = document.getElementById(id);"
		 + "image.style.display = \"inline\"; "
		 + "image.parentNode.previousSibling.addEventListener(\"mouseout\",
		 function() {"
		 + "window.setTimeout(fadeImage, 1500, id);"
		 + "}, false)"
		 + "}");
script.appendChild(showImage);
head.appendChild(script);

Alles doppelt escapen und so. Kein Spass. Hässlich zum Lesen. Lösung:

var head = this.getContentDocument().getElementsByTagName("head")[0];
var script = this.getContentDocument().createElement("script");
script.setAttribute("src", "resource://jslibs/foobar.js");
script.setAttribute("type", "text/javascript");
head.appendChild(script);

Nix spektakuläres, aber innerhalb der Datei „foobar.js“ kann man jetzt ‚ganz normales‘ Javascript schreiben. Ich freu mich über sowas 😉

Kategorien
Diplomarbeit Sonstiges

Registry Pattern in Javascript

Wer globale Objekte vermeiden will, aber trotzdem globalen Zugriff will (z.B. auf eine Datenbankinstanz) baut sich eine Registry. Im Prinzip nur das Singleton-Pattern mit get und set-Methoden:

registry = (function() {
	// private attributes
	var blubb = new Array();
	// private methods
	var getIndex = function(_name) {
		for (var i = 0; i < blubb.length; i++) {
			if (blubb[i].name == _name) {
				return i;
			}
		}
		return null;
	};

	return {
		// public attributes

		// public methods
		setValue : function(_name, _value) {
			var foo = this.getValue(_name);
			if (foo == null) {
				var temp = new Object();
				temp.name = _name;
				temp.value = _value;
				blubb.push(temp);
			} else {
				blubb[getIndex(_name)].value = _value;
			}
		},
		getValue : function(_name) {
			for (var i = 0; i < blubb.length; i++) {
				if (blubb[i].name == _name) {
					return blubb[i].value;
				}
			}
			return null;
		}
	}
})();
// registry is already available
registry.setValue("foo", "bar");
registry.getValue("foo"); // gives "bar"
registry.getValue("bar"); // gives null
[/sourcecode]

Siehe auch: http://yuiblog.com/blog/2007/06/12/module-pattern/

Kategorien
Diplomarbeit Spass

Wie man das Laden einer Seite abfängt …

Ohne Witz. Seit 4 Wochen doktor ich daran rum und ENDLICH hab ich den richtigen (bzw. funktionellen) Weg gefunden wie man es macht:
overlay.xul:

<overlay id="extensionId" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script type="application/x-javascript" src="chrome://extensionId/content/myJs.js"/>
</overlay>
</pre>
<strong>myJs.js:</strong>
<pre lang="javascript">
Components.utils.import("resource://jslibs/test.js");
function startupWrapper() {
	var appcontent = document.getElementById("appcontent"); // browser
	if (appcontent) {
		appcontent.addEventListener("DOMContentLoaded", function() {
					justATest(getBrowser());
				}, true);
	}
}

test.js:

var EXPORTED_SYMBOLS = ["justATest"];
justATest = function(gBrowser) {
	var body = gBrowser.mCurrentBrowser.contentDocument.getElementsByTagName('body')[0];
}

Herzlichen Glückwunsch. Vorher hab ich „nur“ auf DOMContentLoaded gehört, das hat mir dann aber beschert, dass meine Funktion pro XUL-Dokument aufgerufen wurde, also z.B. für die Web Developer Toolbar, die Locationbar, den Browser an sich und dann erst die Webseite. Vorher hab ich das kläglich mit

if (gBrowser.mCurrentBrowser.contentDocument.documentURI != "about:blank") {
  // do something
}

abbeholfen, aber das ist ja doof 🙂 Jetzt gehts. Hooray

Kategorien
Diplomarbeit Sonstiges

Javascript-Objekte

Guter Artikel über Objekte in Javascript. Eher nur Grundsätzliches, trotzdem lesenswert: JavaScript’s class-less objects im JavaRanch Journal.

Kategorien
Diplomarbeit

xUnit

Testen von Programmen ist wichtig. Das wurde schon recht früh erkannt. Ich hab ja schon früher über Unit-Testing und Refactoring geschrieben. Jetzt les ich gerade das Buch „xUnit Test Patterns – Refactoring test code“ von Gerard Meszaros (ISBN-13: 978-0-13-149505-0). Dicker Schmöker mit knapp 890 Seiten. Ich werde hier jetzt ab und an ein paar Gedanken zu diesem Buch verfassen und wahrscheinlich auch Kapitelweise eine Zusammenfassung. Eigentlich dient das nur meinem Verständnis, aber vielleicht hat auch jemand anderes was davon 🙂

The Fragile Test Problem

In meinem Praxissemester bin ich über WinRunner gestolpert. An sich eine schöne Idee, einfach ein paar Mausbewegungen und Klicks aufzeichnen und schauen ob auch das rauskommt, was rauskommen sollte. Scheitert aber schon an diversen Sachen, z.B. wenn man die Sprache im Programm umstellt. Zwar sollte sowas nicht die Funktionalität eines Programmes verändern, aber wer weiss, Bugs sind überall. Meszaros kategorisiert das ganze (er nennt es „The Fragile Test Problem“) in vier Fallgruben aufgeteilt.

Behaviour Sensitivity

Wenn sich das Verhalten eines Systems ändert (weil sich z.b. die Anforderungen geändert haben), dann ist die Wahrscheinlichkeit, dass die Tests, die die geänderte Funktionalität prüfen, scheitern sehr gross (uff, was ein Satzbau). Das ist jetzt nichts spezielles für so Programme wie WinRunner, das ist immer so. Wenn ich bei einem Auto auf vier Reifen teste, die Requirements aber plötzlich ein Dreirad wollen, dann MUSS das schiefgehen. Richtig fies wird es erst, wenn wir uns auf die Funktionalität verlassen um das System in einen Status zu bringen, in dem wir einen Test ausführen.

Interface Sensitivity

Grundsätzlich ist das Testen einen Systems über die Benutzeroberfläche eine schlechte Idee. Jede minimale Änderung bringt jeden Test zum Scheitern. Und dies ist völlig unabhängig von der Benutzeroberfläche (GUIs wie QT oder GTK, CLI (Command Line Interfaces) oder Weboberflächen (Buzzword: Ajax, Web 2.0)).

Data Sensitivity

Alle Tests starten an einem Zeitpunkt, an dem bestimmte Konditionen gegeben sind. Irgendwelche Datenstrukturen sind vorhanden und werden genutzt. Solange man nich immensen Aufwand investiert um die Tests von diesen Daten unabhängig zu machen, ist es höchstwahrscheinlich das die Tests scheitern.

Context Sensitivity

Nachdem der Datenkontext schon wichtig ist, kommen natürlich noch andere externe EInflüsse dazu. Das können so simple Dinge wie die Uhrzeit sein (Sommer-/Winterzeitumstellung), aber auch Geräte wie Drucker oder Server.

All diese Abhängigkeiten machen das deterministische Wiederholen von Tests sehr, sehr schwierig. Natürlich gibt es viele Möglichkeiten diese Abhängigkeiten zu umgehen, aber egal welche Methode man nimmt, sie bleiben bestehen. Die xUnit-Familie stellt ein paar Muster zur Verfügung die uns einen grossen Grad an Kontrolle ermöglichen. Wir müssen nur noch lernen sie zu nutzen.

Dieses Testen wird übrigens „regression testing“ genannt. Regression bedeutet auf Deutsch „Rückwärtsbewegung“ und spiegelt das auch gut wieder. Wir haben ein fertiges Produkt und bewegen uns beim Testen von Vorne nach Hinten (Von der GUI zum Backend). Einen völlig anderen Ansatz spielt hier die testgetriebene Entwicklung (test-driven development), die das Prinzip umkehrt. Mittels dieser Methode wird eher das Verhalten von Software die noch geschrieben wird beschrieben, als die fertige Software rückwärts getestet.

Kategorien
Diplomarbeit

Javascript dynamisch laden

Heute habe ich mich hauptsächlich damit beschäftigt, wie man Javascript-Dateien innerhalb von Javascript-Dateien includiert. Mein erster Ansatz war (etwas XUL-spezifisch, aber prinzipiell klappt das auch im HTML-DOM):

var jsFiles = [
    "chrome://myEntension/content/lib/domain.js",
		"chrome://myExtension/content/lib/helper.js",
    "chrome://myExtension/content/lib/js_locale.js",
		"chrome://myExtension/content/lib/urlParser.js"
    ];
var root = document.getElementById("someId")
for (var i = 0; i < jsFiles.length; i++) {
	var scriptElement = document.createElement("script");
	scriptElement.setAttribute("type", "application/x-javascript");
	scriptElement.setAttribute("src", jsFiles[i]);
  root.appendChild(scriptElement);
}

Das hat auch eigentlich soweit ganz gut geklappt, im DOM waren alle drin. Nur war irgendwie keine der includierten Funktionen … verfügbar. So als ob die Knoten in den DOM reingehängt wurden, aber das src-Attribute nicht ausgelesen und .. geparst.

Nunja, nachdem ich damit eine Weile rumgedoktert habe, wurde im im Mozilla-IRC-Channel auf Components.utils.import hingewiesen. Das ist doch genau das was ich brauche. Also sieht das jetzt so aus:

var jsFiles = [
    "chrome://myEntension/content/lib/domain.js",
		"chrome://myExtension/content/lib/helper.js",
    "chrome://myExtension/content/lib/js_locale.js",
		"chrome://myExtension/content/lib/urlParser.js"
    ];
for (var i = 0; i < jsFiles.length; i++) {
  Components.utils.import(jsFiles[i]);
}

Wunderhübsch. Klappt nur nicht, weil chrome://-URLs nicht erlaubt sind. Man braucht file:// oder resource://. Also schreibt man ins chrome.manifest:

resource jslibs content/lib/

und schreibt obige chrome://-URL um in:

"resource://jslibs/helper.js"

Wunderprächtig. Jetzt klappts. Fast. In jede Datei die man importiert muss man noch reinschreiben was denn exportiert werden soll. Klingt umständlich, der tiefere Sinn hat sich mir noch verschlossen, aber erstmal egal für die Funktionalität:

var EXPORTED_SYMBOLS = ["LOG"];
function LOG(msg) {
    Components.classes["@mozilla.org/consoleservice;1"]
            .getService(Components.interfaces.nsIConsoleService);
            .logStringMessage(new Date().toLocaleString() + ": " + msg);
}

Am obigen EXPORTED_SYMBOLS gibt man an welche Variablen nach außen hin sichtbar sein sollen. Voila, es ist geschafft.

Kategorien
Diplomarbeit

XML, XUL, XSLT und XPath

Jede Menge X kommen in dieser Überschrift vor. Ich erzähle hier nichts Neues, und wer schon damit was gemacht hat, wird mich vermutlich sofort korrigieren (warum hält sich bei mir eigentlich immer noch die falsche Schreibweise „korregieren“?). Kommen wir also mal zu

XML

XML kommt aus der Gegend Gemünden, Rheinland-Pfalz, Menge SGML. Vielfach wird XML als Dialekt beschrieben, allerdings ist XML „nur“ eine Untermenge von SGML. Letztendlich ist aber eigentlich jedem klar was man mit XML meint, egal ob Dialekt oder Untermenge. Wer den genauen Unterschied wissen will, kann das gerne beim W3 (http://de.wikipedia.org/wiki/World_Wide_Web_Consortium) nachlesen (XML vs. SGML).

Nunja, als XML erfunden wurde, legte man folgende Ziele für XML fest (*):

  • XML soll sich im Internet auf einfache Weise nutzen lassen.
  • XML soll ein breites Spektrum von Anwendungen unterstützen.
  • XML soll zu SGML kompatibel sein.
  • Es soll einfach sein, Programme zu schreiben, die XML-Dokumente verarbeiten.
  • Die Zahl optionaler Merkmale in XML soll minimal sein, idealerweise Null.
  • XML-Dokumente sollten für Menschen lesbar und angemessen verständlich sein.
  • Der XML-Entwurf sollte zügig abgefasst sein.
  • Der Entwurf von XML soll formal und präzise sein.
  • XML-Dokumente sollen leicht zu erstellen sein.
  • Knappheit von XML-Markup ist von minimaler Bedeutung.

(*) Im Originalwortlaut heisst es hier shall, was eigentlich sollen bedeutet. RFC 2119 sagt allerdings das shall dasselbe bedeutet wie must. In der deutschen Übersetzung steht wieder sollen. Der feine Unterschied wurde mir freundlicherweise vom W3C.DE/AT klargestellt: Wenn shall grossgeschrieben ist (SHALL), dann ist es eine zwingende Anforderung, wenn es klein geschrieben ist, dann ist es keine formale Anforderung. Also: SHALL == müssen und shall == sollen.

XML sollte also klein, schön und leicht lesbar sein. Diese Ziele wurden tatsächlich erreicht.

XSLT und XPath

Zuallererst: XSL ist nicht dasselbe wie XSLT. Deswegen definieren wir erstmal den Unterschied.

XSL

XSL ist die Extensible Stylesheet Language, d.h. die erweiterbare Gestaltungssprache. Furchtbare Übersetzung. Letztendlich definiert XSL zwei Teile:

  1. XSLT, als Sprache zur Transformierung von XML-Dokumenten
  2. XSL-FO, eine Seitenbeschreibungssprache. Diese dient dazu den exakten Aufbau einer Seite zu beschreiben, so dass diese nachher unverändert an den Drucker oder sonstige Ausgabegeräte geschickt werden kann.

Um XSLT ordentlich benutzen zu können (wir stellen uns mal ein XML-Dokument als Baum vor), muss man ja irgendie die einzelnen Äste und Zweige des Baums ansprechen können. Da die nicht auf Hans oder Georg hören, wurde „XPath“ erfunden.

XPath

XPath kann man sich vorstellen wie den Verzeichnisbaum unter *nux. /home/pennywise greift auf den Knoten pennywise zu, der an den Knoten home gehängt wurde. Es gibt noch implizit den root-Knoten, da wurde dann home dran gehängt.

Genau so kann man sich auch XPath vorstellen. Ich nehm hier mal das Beispiel aus der Wikipedia:

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<dok>
  <!-- ein XML-Dokument -->
  <kap title="Nettes Dokument">
    <pa>Ein Absatz</pa>
    <pa>Noch ein Absatz</pa>
    <pa>Und noch ein Absatz</pa>
    <pa>Nett, oder?</pa>
  </kap>
  <kap title="Zweites Kapitel">
    <pa>Ein Absatz</pa>
  </kap>
</dok>

Beispiele für XPath-Ausdrücke:

  • /dok selektiert das Wurzel-Element dok
  • /* selektiert das Wurzel-Element unabhängig vom Namen (jedes wohlgeformte XML-Dokument hat genau ein Wurzel-Element)
  • /dok/kap selektiert alle kap-Elemente innerhalb eines dok Elements
  • /dok/kap[1] selektiert das erste kap-Element innerhalb eines dok Elements
  • //pa selektiert alle pa-Elemente auf allen Ebenen (Vorsicht: langsam)
  • //kap[@title=“Nettes Dokument“]/pa selektiert alle Absätze des Kapitels „Nettes Dokument“.

Jetzt können wir also auf ein XML-Dokument zugreifen, fangen wir an mit dem transformieren:

XSLT

Auch hier will ich nichts neues erfinden und verweise einfach auf die Wikipedia.

XUL

Und was hat XUL damit zu tun? Nun, XUL, XML User Interface Language, wird z.B. benutzt um den Firefox anzuzeigen. Dieser ist komplett in XUL gefertigt. Bevor ich in meinem nächsten Post mit weiteren Begriffen um mich schmeisse, langt das erstmal.

Kategorien
Diplomarbeit Studium

Firefox Addons selbst erstellen

Dieser Artikel ist aus dem Jahr 2008. Inzwischen hat sich jede Menge geändert, insbesondere im Zusammenhang mit Firefox Addons. Nachfolgende Informationen sind veraltet und werden höchstwahrscheinlich nicht mehr funktionieren. Ich empfehle jetzt eher die Lektüre von https://addons.mozilla.org/en-US/developers/builder

Meine Diplomarbeit wird ein Firefox-Addon sein (früher hiessen die noch Extensions), also schreib ich hier gleich mal meine Erfahrungen bezüglich dessen nieder. Wird mir helfen Text für meine Diplomarbeit zu generieren. Zuerst ein paar Links

Dann die Erklärung, wie man die Entwicklung „leichter“ gestaltet. Alles prima erklärt auf der Seite von Mozilla, aber ich schreibs auch nochmal hin. Zuerst brauchen wir einen Entwickler-Firefox, als besser gesagt, ein Entwickler-Profil. Dazu machen wir Folgendes

  1. Erstelle eine Batchdatei (z.B. auf deinem Desktop): firefox-dev.bat
  2. Innerhalb dieser Batchdatei schreibst du:
    • start "" "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev
  3. Speichern und schliessen.

Dieses Profil füttern wir dann mit ein paar hilfreichen Extensions

Ich benutze zur Zeit die Spket IDE, allerdings ist die schon etwas älter, d.h. die Extensions sind erstmal nur FF 2.0 kompatibel. Das lässt sich zwar mit einer Zeilenänderung ändern, aber ist lästig.

Um dem neuen Profil („dev“) auch die Erweiterung bekannt zu machen, gibt es folgende Möglichkeit:

  1. Herausfinden an welcher Stelle die chrome.manifest Datei liegt. Bei mir z.B. unter ~/workspace/projektA/chrome.manifest
  2. In das Profilverzeichnis von „dev“ gehen. Dort in den Unterordner extensions
  3. Im selben Verzeichnis wie die chrome.manifest befindet sich auch die install.rdf. In dieser gibt es den XML-Knoten <em:id>foobar@example.com</em:id>. Diese Id merken wir uns (hier: foobar@example.com).
  4. Wir erstellen im Profilverzeichnis/extensions eine Datei mit dem Namen foobar@example.com. Innerhalb dieser Datei geben wir den Pfad zur chrome.manifest an (z.B. ~/workspace/projektA/)

Fertig. Ich werde diesen Artikel wohl noch erweitern und verbessern im Laufe des nächsten halben Jahres 🙂

Kategorien
Praxissemester

Nachlese

Viele Mitarbeiter haben mich gefragt, wie ich denn jetzt Amerika gefunden hätte. Nun, das ist eigentlich nicht in einem Satz zu sagen. Ausser man gibt sich mit „Es war gut“ zufrieden.

Wenn mich jemand fragen würde: „Was hat dir nicht gefallen?“, wäre es auch nicht einfacher zu beantworten. Irgendwie war Amerika nicht viel anders als in Deutschland. Klar, es gab die offensichtlichen Dinge wie kaputte Strassen, kein öffentliches Verkehrsnetz ausserhalb der Grossstädte, Autos im Schnitt so gross wie meine Wohnung in Karlsruhe und alle Leute sprechen Englisch, aber das sind nur die Oberflächlichkeiten. Es gab prinzipiell nur zwei Sachen die mich beeindruckt haben. Also insofern, das, was hängen geblieben ist:

New York und der Service

Fangen wir mit dem letzteren an. Wenn ich in meinem kleinen Heimatdorf aufs Amt gehe, dann gibt es prinzipiell zwei Möglichkeiten:

  1. Es hat nicht offen

  2. Es gibt eine Schlange, so lange das ich die Geduld verlier.

Bei Öffnungszeiten von 9-16 Uhr (Donnerstags auch mal länger, sogar bis 18:00) ist es dem normal arbeitenden Bürger fast unmöglich dort rechtzeitig einzutrudeln. Öffnungszeiten gibt’s natürlich auch in Amerika, nicht alles ist 24/7 (rund um die Uhr offen). Aber man muss kaum warten, weil jede noch so kleine Vorortkascheme von mindestens 4 Leuten betreut wird. Die Stadt Greenwood hat knapp 40000 Einwohner und zählt somit in Amerika als Kaff. Merkt man auch wenn man da durchfährt. In Deutschland ist sowas schon einigermassen gross, bei uns ist aber auch alles viel gedrängter. Gerade in Stuttgart, so wie es im Kessel liegt, drängt sich ein Haus an das nächste und von einem eigenen Garten träumt man nur.

In Amerika kostet ein 3-Schlafzimmer-Haus (irgendwie wird dort nach Schlafzimmern abgerechnet), zweistöckig mit Keller, in Greenwood knapp 150.000 Dollar. Also 100.000 Euro. Für soviel Geld kriegt man allerhöchstens eine 3 Zimmerwohnung in einem Vorortkaff von Stuttgart. Der zugehörige Garten ist so gross wie ein Fussballfeld und der Ehemann verbringt dort 2h jede Woche mit Rasenmähen. So wird einem wenigstens nicht langweilig.

Aber genug abgeschweift, kommen wir zum Service. Sowas fängt bei Kleinigkeiten an wie „Klar kannst du mein Fahrrad haben“ oder „Ja, ich kann dich zur Führerscheinstelle fahren“ oder „klar kann ich für dich bürgen, weil du keine Kreditkarte hast“. Letzteres ist mir letztes Jahr zugestossen, als wir leichtgläubig der deutschen Hertzauskunft geglaubt haben, die da sagte: „Klar können Sie den Mietwagen bar bezahlen“. Ja, konnten wir auch. NACHDEM wir eine Kreditkarte vorlegen, damit die uns am Wickel haben falls was passiert. Wir merken also: ohne Kreditkarte kein Service. Das ist auch in Amerika nicht anders.

Nagut, ganz so richtig ist das auch nicht. Sobald man denen zu verstehen gibt, das man doch Deutscher ist, und gerade fleissig das schöne Amerika erkundet und alles so toll ist, sind dich gleich noch viel freundlicher. Da kriegt man mal auch den Führerschein, wenn man keine Klemptnerrechnung vorzuweisen hat, die beweisen würde das man da wohnt, wo man vorgibt zu wohnen.

Um gleich mal wieder abzuschweifen: Führerschein. Spätestens als ich im Gymnasium gemerkt hatte, das man mit 16 schon in Amerika fahren durfte, war ich neidisch. Da werden Jungspunde auf die Menschheit losgelassen und das bei einer lächerlichen Führerscheinprüfung. Ich durfte die ja auch selber mitmachen. Theoretische Prüfung ist Multiple-Choice, die man jeden Tag wiederholen kann, für umsonst. Solange man will. Spätestens nachdem man einmal die Strassenverkehrsordnung von Amerika (bzw. in meinem Fall Indiana) durchgelesen hat, kann man da bestehen.

Die praktische Fahrprüfung ist auch lächerlich, man muss ja nur Gas geben, bremsen, keine Schüler überfahren und an Kreuzungen blinken. Achja, einparken musste ich auch noch, sogar parallel. Das war dann aber auch schon der „schwierige“ Teil. Voila, Führerschein. Jeder Trottel kann den machen.

Nun aber zum Grund warum das so einfach ist: Ohne Auto ist man in Amerika aufgeschmissen. Total. Ausser man lebt in einer Grossstadt und kann da Bus/Bahn benutzen. Da klappt das auch prima. Sobald man aber mehr als 30min ausserhalb wohnt, ist man schon aufgeschmissen. Richtig Stephan?

Wieder zurück zum Service. Mein Sozialversicherungsausweis. In die Stadt, brav alle Formulare abgegeben. Ein zu 75% vorausgefülltes Formular in die Hand gedrückt gekriegt und eigentlich nur noch „hier, hier und hier unterschreiben“. Prima. Die machen es einem einfach. Wahrscheinlich kamen die auch so in die Immobilien-/Kreditkrise, weil jeder immer brav „hier, hier und hier unterschrieben“ hat.

Jo, der Service. Sobald was schiefläuft, kriegt man was umsonst. Oder wenn man nett fragt:

„Meine Pizza hat ja Speck drauf“ – „Oh, das tut mir leid, hier dieselbe ohne Speck für umsonst“.

Oder:

„Oh, jetzt hab ich ja wieder den Mocha Frappuchino bestellt, dabei wollte ich doch mal Strawberries & Creme probieren“ – „Ich mach Ihnen einen, den können Sie dann mitnehmen“

Klappt fast immer. Mit Service meine ich aber auch die Bereitschaft für einen etwas zu tun. Bestes Beispiel sind meine Nachbarn, die bei meiner Reifenpanne ohne Weiteres meinen Bruder + Verlobte zum Flughafen kutschiert haben. Kann ich mir bei meinen Nachbarn in Karlsruhe nicht vorstellen. Dort aber auch nur, weil keiner ein Auto hat 🙂 In meinem Heimatkaff nicht, weil unsere Nachbarn da …. speziell sind. Speziell mit Spucken aufs Auto und blockieren von Parkplätzen.

Allerdings scheint manchmal „Freundschaft“ anders definiert zu sein als in meine Maßstäben. Gut, ich muss zugeben, ich bin manchmal ein lausiger Freund, da ich mich manchmal echt lange nicht mehr melde, aber sowas mache ich nicht aus böser Absicht. Eher aus Dämilichkeit. Aber ich arbeite dran.

Amerikaner machen sowas aus Eigennutz. Freundschaften werden solange erhalten, wie sie von Nutzen sind. Gut, das ist absolute Pauschalisierung hier, aber wohl auch gängige Lehrmeinung. Wenn man in einen anderen Staat zieht, und der langjährige Geschäftskollege, mit dessen Kindern deine Kinder im Sandkasten gross geworden sind, einen besuchen kommen will, da sagt man nicht „Was, wieso dass denn?“. Zumindest als Deutscher. Etwas verwirrend das Ganze, weil man den Amerikaner doch nachsagt, das sie nicht so drekt sind und alles schön blumig umschreiben. Ein „Nein“ wird meist eher als „Das solltest du dir nochmal überlegen“ oder als „Hast du auch bedacht das XYZ noch mit einwirkt“ getarnt.

Nicht so bei Freundschaften. Wahrscheinlich, weils da nicht um „Business“ geht. „We don’t do friendships“ um mal den Handwerker zu mimen. Sobalds aber um Geld geht, dann können sie wieder freundlich sein.

Bis zum Erbrechen. „Hi, how are you“ ist so ziemlich der meist gesagt Satz in Amerika. Meist gefolgt von einem Wort das grob beschreibt wie es einem geht. Auf einer Skala von „good“ bis „very good“. Schlecht geht es niemanden, sowas geht ja auch niemanden was an. In einem Land in dem es verboten ist nach dem Geschlecht zu fragen (auf Einwohnermeldebögen z.B.),  geht die Gesundheit eines Menschen NIEMANDEN was an. Ausser man geht zum Arzt.

Beim Arzt wird man gelöchert. Wer mal Dr. House angeschaut hat, der weiss, dass der immer die ganzen Familien-Krankengeschichte haben will. Und in der Tat, das ist nicht nur im Fernsehen so. Und dort wird Service leider nicht mehr gross geschrieben, dort muss man sich höchst selbst durch die seitenlangen Fragebögen quälen und die Wehwehchen der Grossmutter aufschreiben. Denn die Gesundheit geht ja niemanden was an, das soll man schön selber machen. Witzig.

Nunja, genug des Services. kommen wir zur Sprache (ja, zu New York kommen wir nachher, keine Sorge).

In Amerika wird Englisch gesprochen. Behaupten Sie zumindest. Zumindest meistens kamen da irgendwelche Wörter aus den Mündern heraus, die vor Jahrzehnten mal grob was mit Englisch zu tun hatten. Aber das ist ja in Deutschland nicht anders. Bei Basel das Allemanische hab ich auch nicht verstanden. Und ich wohne ja nur … 200 km davon entfernt.

Englisch kam in den buntesten Mischungen vor. Mexikanisch-Englisch war da mit Abstand die Furchtbarste. Die Witzigeste war das Südstaaten-Englisch. Aber am Meisten verbreitet war gut verstehbares .. Amerikanisch. Quasi British-English mit ein paar anderen Worten und ohne komischen britischen Akzent. Wobei der auch vorkam, mein Chef ist ja Brite. Mit typisch britischem Humor. Wobei wir da schon beim nächsten sind.

Der Humor. Amerikaner scheinen bei allen Gelegenheiten ein Witzchen zu reissen. Auch an für uns Deutsche echt unpassenden Momenten. Z.B. Nachrichtensprecher der US Streitkräfte über den Irakkrieg. Mal wieder sind ein paar Soldaten im Krieg gestorben. Was in Deutschland mit tragischer ruhiger Miene erlitten wird, kommentiert der Pressesprecher mit: „Dafür fliegen die jetzt erste Klasse nach Hause“. Oehmja, Witzle. Ich Deutschland würde da eine Stimmung herrschen, wie wenn jemand einen Naziwitz reissen würde, über sowas macht man ja keine Witze. „Aber jetzt mal im Ernst“ gibts in Amerika nicht. Hier muss man mindestens 5x das Wort „seriously“ in einen 10-Wörter-Satz einflechten, bevor man mal ernst über eine Sache redet.

Was bei weitem nicht so schlimm war wie gedacht, war die Sache mit dem „sexual herrasment“. Da mag ein Schreibfehler drinne sein bei dem Wort, aber ich habe gerade kein Wörterbuch da. In diversen Foren/Blogs hab ich so Sachen gelesen wie „Falls Sie mit einer Frau zusammen alleine in einem Büroraum sind, lassen sie die Tür offen“. Wahrscheinlich damit Mann leichter flüchten kann. Oder Frau. Wie auch immer. Ich war also in dem Glauben rübergeflogen, dass hier jedes „Oh, neue Frisur? Schön!“ sofort zu einer Klage führt. Nunja, ich bin wohl im falschen Staat für sowas gelandet. Zumindest war in der Firma keine Frau anwesend, bei der sich eine Anklage gelohnt hätte. Ok, das war gemein, aber 15 Jahre älter war die Jüngste.Muss nicht sein.

Kommen wir also zu New York.

Was soll ich sagen, ich war ja nur ein Wochenende da. Vermutlich hab ich also nur die guten Sachen mitgekriegt und nix von den schlechten, die sich immer erst nach ein paar Wochen rausstellen. Aber das Wochenende hat mich echt beeindruckt. Grossartige Stadt (naja, eigentlich nur Stadtteil, ausser Manhatten hab ich ja nix gesehen), viele Leute, viel zu sehen, massig Busse/Taxis/Subways, prima Einkaufen, tolle Kneipen und endlich mal Frauen im passenden Alter. Selbst die Tatsache das man erst 1,5 Stunden (gefühlte 3) unterwegs sein muss, um endlich in Manhatten zu sein ist erträglich. Lohnt sich ja in jedem Fall. Ich hab zwar keine Rooftopbar gesehen, aber man kann ja nicht alles haben. Ich find New York war toll. Bissle toller als Chicago, wobei ich Chicago auch toll finde. Deswegen war ich da auch zweimal. Kenn ich da schon fast aus 🙂 Mehr als in Stuttgart. Da würd ich gerne arbeiten. Ob ich in so einer Grossstadt leben würde? Wahrscheinlich nicht so gerne, weil in meiner Preisklasse nur ein Zimmer ohne Fenster in Chinatown in einer 12er WG möglich wäre. Richtig Stephan? Genau.

Kleiner Absatz über New York und auch schon wieder vorbei. Und weils immer einfacher ist alles zu erzählen was einem negativ aufgefallen ist, kommt jetzt eine unvollständige Liste

  1. Amerikaner haben keine Ahnung von gutem Essen. Soviel ich gesehen und gegessen habe (und ich hab VIEL ausprobiert) gibt es kein amerikanisches Nationalgericht. Und irgendwie gibts überhaupt kein „amerikanisches“ Gericht. Naja, Spare-Rips könnte ich durchgehen lassen, weil ich nicht weiss ob die nicht z.B: eigentlich aus Argentinien kommen. Die USA scheinen einfach zu jung zu sein, um einen eigenen Kochstil erfunden zu haben. Ok, das ist so nicht richtig. Drei Dinge, an denen man amerikanische Restaurants/Fastfoods erkennt:
    1. Free Refill bei Getränken. Eine echt gute Erfindung
    2. Mindestens eine Seite voller „Sandwiches/Burgers“. Oder nur diese eine Seite
    3. Alle 45 Sekunden kommt ein Kellner und fragt obs schmeckt. Allerdings fragt der erst, wenn er sieht das du einen Stück Fleisch im Mund hast, so dass du ja nicht antworten kannst.
  2. Brot. Brot gibt es in Amerika nicht. Gut, als Deutscher bin ich verwöhnt mit 300 verschiedenen Brotsorten, aber hier in Amerika gibts nur Toastbrot. Das gibts zwar in verschiedenen Sorten, die unterscheiden sich aber nur in der Farbe und Anzahl aufgestreuter Haferflocken. Die gummiartige Konsistenz bleibt. Ausnahme: Panera Bread. Grossartiges Brot. Richtiges Brot. Weiter so
  3. Wurst/Käse: In Amerika scheint keiner weiter als bis drei zu zählen. So gibt es drei Käsesorten: Cheddar, Pepper Jack und American Cheese. Der erste ist Gummi-Gaudo, der zweite ist gepresstes Toastbrot mit Pfeffer in milchigweisser Farbe und der dritte das Ganze ohne Pfeffer. Bei der Wurst ist es genauso. Bologna (Fleischwurst), Hinterschinken und ein Äquivalent zur Schinkenwurst. Alles zwar essbar, aber kein Genuss. Die Fleischwurst muss man mit Senf erdrücken, damit sie annähernd gut schmeckt.
  4. Autofahren. Die meisten Amerikaner können Autofahren. Für amerikanische Verhältnisse. Wenn alles nur in Quadraten aufgebaut ist und die Höchstgeschwindigkeit überhaupt bei 120km/h liegt, wundert mich das auch nicht. Einzige tolle Sache ist: die Stopschilder. Ein Rechts-Vor-Links kennen die nicht, hier gibts einfach entweder Ampeln, oder Stopschilder. Kommt man an eine Viererkreuzung mit einem 4-Wege-Stop, fährt jeder an die Haltelinie und der erste der gehalten hat, darf auch wieder als erster fahren. Klappt unglaublich gut . Könnte man in Deutschland auch machen. Aber wahrscheinlich spart man mehr Blech mit Rechts-Vor-Links. Ist ja auch nicht schlecht. Dafür sparen die Amerikaner an jeglichen anderen Schildern. Sobald man von den Interstates runter kommt, ist man verloren. Man muss genau wissen welche Strassennummer jetzt die Richtige ist (US 31 oder doch I-128? Oder wars SR 2?). Und innerhalb der Städte isses noch schlimmer, da sind die Strassenschilder teilweise so ca. 10cm lang und 4cm hoch. Mit weisser Schrift auf grünem Hintergrund. Exzellentnicht zu lesen. In Deutschland wird mittels Städten navigiert (Auf die Autobahn Richtung München), in Amerika mittels Nummern und Himmelsrichtungen. Zuerst war ich verwundert, woher die Amerikaner denn so genau wissen wo Norden ist, ob die alle bei den Pfadfindern waren? Könnte durchaus sein, aber meistens haben die einfach einen Kompass im Rückspiegel. So kanns ja jeder. Ist allerdings auch echt lästig, im Dunkeln einen Baum zu finden an dem Moos wächst um die Himmelsrichtung festzustellen bei bewölktem Himmel.
  5. Machoverhalten. Das mag jetzt auch wieder pauschalisiert sein, aber irgendwie sind Amerikaner Machos. Schema F in Amerika läuft so ab: High School => College/Universität => Heirat. Dann sind die Frauen versorgt. Können ja 2h lang den Rasen mähen. Achnein, das ist ja wieder Männersache. Dann halt Kinderkriegen und die dann grossziehen. In Amerika ist es nix besonderes mit 50-55 scesetethon Grossmutter zu sein. Ist ja auch patriotisch. Die Sache die mich am Meisten irritiert hatte, war diese Meinung: „Wozu soll ich denn Erziehungsbücher lesen, sowas geht doch auch ohne. Hat man früher auch schon ohne gemacht“. Ja, stimmt. Früher hatten wir auch noch Dampfmaschinen und Tierhautkleidung. Wozu überhaupt weiterbilden. Man könnte ja was lernen.
  6. Lernresistenz. Haben auch die Amerikaner gepachtet. Kommt wahrscheinlich im Kombipack mit „Wir sind die Besten“. Wenn man ganz oben ist, braucht man ja nichts mehr lernen, ist ja schon ganz oben. Auch mit Logik haben die nicht viel am Hut. Besten Beispiel: O.J. Simpson. Das war der Fall, bei dem seine Frau und ein Mann getötet wurden und 2 Jahre lang Hickhack im Fernsehen gezeigt wurde. Nach 2 Jahren kam dann endlich der Juryprozess. Nach ner halben Stunde kamen die wieder und meinen „Unschuldig“. Gut, die waren sich wohl sicher. Also gibts keine Anklage wegen Mord, da Juryprozesse endgültig sind und unanfechtbar. Ob zwölf Laien über sowas entscheiden sollten, ist eine andere Geschichte. Nunja, im Zivilprozess, bei dem der Vater der Frau OJ verklagt hat auf Schadensersatz (in so einem Fall muss man die Schuld nicht beweisen, nur hinreichend Indizien haben). Somit wurde OJ verklagt auf Schadensersatz weil er der Frau körperlichen Schaden zugefügt hat. Anhand der Tatsache das er Blut im Auto hatte und an den Händen und in der Nacht überstürzt weggeflogen ist. Das reicht für Schadensersatz, weil ja offentsichtlich kein Anderer das gemacht haben kann. Als Begründung für eine Mordanklage reichts aber nicht. Somit hat OJ die Dame umgebracht, ohne sie umzubringen. Jop, die Logik.
  7. Der „dämliche Mob“. Das ist der grosse Teil der Wählerschaft der keine Ahnung hat was er tut. Wer den Film „Swing Vote“ anschaut, der weiss was ich meine. Ist aber kein US-Spezifisches Problem. Nur leider kann der US-Präsident der so gewählt wird ne Menge Unsinn anstellen in der Welt.

Abschliessen werde ich diesen langen Eintrag mit der Frage an mich: Würde ich nochmal in die USA kommen?
Antwort: Ja, wahrscheinlich schon. Wenn Sie mich noch reinlassen. Weil trotz allem ist Amerika ein schönes Land mit netten Leuten. Es wird nur nach Aussen hin unglaublich schlecht repräsentiert. Und komische Sachen wie: „elektronische Voranmeldung für US-Reisende“ die jetzt gerade eingeführt wird ist prinzipiell ja keine schlechte Sache. Wenns genau dafür verwendet wird. Aber wahrscheinlich ist das wider nur ein Mittel zu einem Zweck um Amerika weiter von „allem Bösen“ abzuschotten. Bis die sich mal selber ordenltich ins Knie schiessen. Hoffentlich gewinnt Obama, ein Schwarzer als Präsident wird einiges verändern.

Kategorien
Praxissemester USA

Elvis is about to leave the building

So, Apartment ist geputzt, ich geh jetzt nochmal duschen. Schön wars. Eventuell schreib ich noch ein Resumee. Mal guggn wie sich der Flug so ergibt.