Adobe AIR auf Linux 64bit

Nun ist Adobe AIR in Vers. 2 seit Mitte Juni 2010 verfügbar. Nach wie vor wird Linux stiefmütterlich behandelt: Für den Betrieb unter einem 64-Bit-Linux muss man sich zufriedenstellen mit einem völlig behelfsmäßigen 32-Bit-Layer, der umständlichst zusammengefrickelt wird: http://kb2.adobe.com/cps/521/cpsid_52132.html#ins_air2_64bit_ubuntu904

Ich mochte Flash noch nie: Mag es den schlechten Entwicklern zuzuschreiben sein, oder der Technologie: Tastaturunterstützung wird nur selten und dann meist extrem instringent angeboten.

Die Flash-Anwendungen nehmen gern die gesamte Rechenleistung dauerhaft in Anspruch (auf meinen Linux-Rechnern, “nbviewer.bin”), selbst nach Beenden des Browser-Threads.

Eingebettet in Webseiten sind Flash-Anwendungen oft nur in einer hartcodierten Auflösung verfügbar und passen damit meistens nicht richtig ins Browserfenster (aktuell zum Beispiel die Adobe-Hauptseite, was für ein technologisches Problem spricht. [Einfach mal mit gedrückter Strg-Taste das Scrollrad auf- oder abrollen.]).

Dass zum Beispiel der Software & Support-Verlag mit seinem “Intellibook” auf AIR setzt, dürfte in diesem Zusammenhang interessant sein. “Die müssten es doch wissen” – immerhin könnte der Verlag sicherlich auf das Know-How und Feedback seiner Autoren zurückgreifen.

Tatsächlich funktionert die Anwendung auf keinem meiner Linux-64-Bit-Systeme, weil ein 32-Bit-Acrobat erwartet, aber nicht gefunden wird (dazu ggf. ein gesonderten Eintrag). Tastaturbedienung ist nicht möglich, einen HTTP-Proxy einzutragen, eine Tortur, Login und Passwort können auch nicht gespeichert werden etc. etc. etc.

Das Marketing von Flash und AIR funktioniert wirklich prima. Nur die Software nicht.

Schland (TM)

Kürzlich erst erfahren, dass sich der TV-Unterhalter Stefan Raab im Jahr 2005 die Wortmarke “Schland” sicherte (zum ganzen ein Wikipedia-Artikel “Schland o Schland“).

Wenn aber der selbsternannte “Wortwart der Nation”, Detlef Gürtler, erklärt, Stefan Raab hätte das Wort Schland erfunden, irrt er.

Ich behaupte, dass jeder halbwegs selbständig denkende Abiturient, der Leistungskurs Geschichte oder Deutsch gewählt hat und über einer Klausur zum Thema Deutschland i.w.S.  brütet, beginnt, das Wort zu sezieren und mit den Silben herumzuspielen, um schließlich über die Bedeutungsmöglichkeiten des Wortes “Schland” zu sinnieren .

Das war jedenfalls in meinem Freundeskreis eine allgemein geteilte Erfahrung.

Immerhin hab ich das nachweislich festgehalten in einem Tagebucheintrag, der so schlecht ist, dass es mir die Schamesröte ins Gesicht treibt. Nicht meines mangelnden Patriotismus wegen. Da bekenne ich gern, dass ich mich nicht so sehr als Deutscher, denn als Europäer sehe, dem Italien, Österreich, die Schweiz, Großbritannien, und Frankreich genausoviel wie Deutschland bedeuten.

Aber dann doch nicht so sehr als Europäer denn als Wesen, das auf diesem Planeten lebt und diesem alles verdankt. Der die Gemeinsamkeiten zu allen Menschen lieber sieht und aufzudecken versucht als die Unterschiede, die vorhanden sind z.B. zwischen den Frohnauern, die jenseits und diesseits des Ludolfinger Platzes wohnen, zwischen Reinickendorfern und Zehlendorfern, Berlinern und Potsdamern, Brandenburgern und Bayern, Deutschen und Holländern, Europäern und Afrikanern etc.

Was mich peinlich berührt ist, wie miserabel und bodensätzig dieser – im Tagebuch immerhin durchgestrichene, d.h. verworfene – Eintrag vom 21.02.1992 daherkommt. Wie humorlos (von den letzten beiden Punkten abgesehen).

Sei’s drum, das Wort “Schland” kommt eindeutig darin vor, damit beanspruche ich den zeitlichen Primat :-)

Deutschland.
Deut, deut, deut -
die [Dichter und] Denker
Schland, Schland, Schland -
[die Richter] und Henker.
Die D Oi Oi tschand.
Der Deutschen
deutsche Vita:
Bier, Stumpfsinn und Überheblichkeit.

----------------

In Reit im Winkel
kegeln und brüllen
saufende Vereine.
Bis zur Wi_dervereinigung...
"Was war da noch mit Schlesien?"

----------------

'''Mein''' ''Deutschland'', die Fiktion,
war immer schon vernichtet,
der Traum der Exilanten,
war immer nur ..

Alternativprogramm

Wer behauptet, das Theater sei tot, schaue sich zum Beispiel “Dämonen” in der Schaubühne an und staune.

Das Stück des schwedischen Dramatikers Lars Norén handelt von Zwang. Zwang, der angstgetriebene Menschen davon abhält, ihre Vorstellungen von Freiheit und Nähe zu verwirklichen, was zu brutalen Aggressionen gegen sich und ihr Umfeld führt.

Diese Problematik ließe sich auch mit dem Repertoire vergangener Jahrhunderte umsetzen (etwa Onkel Wanja).

Ein zeitgenössisches Stück überzeugt mehr: Dynamik, die sich aus gesellschaftlichen Konflikten ergibt, muss nicht herausgefiltert oder bemüht umgedeutet werden. Es genügt, die finanzielle Lage (wohlhabend – nicht so wohlhabend, beide Paare in einer Mietwohnung lebend) und die personelle Lage (keine Kinder – zwei Kinder) anzudeuten, um der Psychotragikomödie freien Lauf zu lassen.

Die perfekte Bühnenbild- und Videotechnik, die detailbetonte Inszenierung, lassen den Betrachter an einem Schauspiel aus unserer Zeit, für uns, teilhaben, wie es keine klassische Repertoireinszenierung vermöchte.

Das überragende Spiel von Lars Eidinger, dessen Facettenreichtum (letztlich drei ausgeprägte Psychosen über-, durcheinander) von Video-Close-Ups besonders wirksam verstärkt wird und von Brigitte Hobmeier, der es gelingt, Katarinas Teufelskreis aus emotionaler und materieller Abhängigkeit, Hass, Aggression und Schwäche in immer wieder neuen Pirouetten vorzuführen, lässt über gewisse Längen und Instringenzen hinwegsehen.

Mich verwunderte schließlich, dass Schauspieler und Schaubühne dieses brillante Spiel offensichtlich unter das des aktuellen Fußballspiels stellten: Insgesamt acht Hinweise auf das WM-Spiel, einschließlich des Spielstands, zählte ich mit. Hier hätte ich mir bewusste Irreführung gewünscht oder einen anderen Weg, denjenigen im Publikum eine zwanghafte Abhängigkeit vorzuführen, die lieber auf einen Fernseher gestarrt hätten als das packende Geschehen auf der Bühne zu verfolgen.

Ubuntu Lucid: Mal wieder kein Ton

Sehr unregelmäßig versuchen wir, im Familienkreis (mit drei Kindern) Videos zu betrachten, etwa aus der Sendung mit der Maus, Muppets oder Barbapapa.

Leider zickt hierbei regelmäßig und zuverlässig auf dem Notebook (mit Ubuntu Lucid/10.4) die Soundausgabe.

Dieser Link half mir, den Ton überhaupt zurückzuerhalten, wiewohl die Feinjustierung der Lautstärke (immer viel zu laut) bislang noch nicht gelang.

Die Kinder, anfänglich von Linux begeistert, denken, Linux wäre das Betriebssystem für Menschen, die nicht hören können.

OpenOffice/Samba/CIFS-Probleme: “Could not create backup copy”

Ein Problem, das in Foren und Bugtrackingeinträgen immer wieder auftaucht, ist folgendes: Man öffnet oder erstellt eine Datei mit OpenOffice. Die Datei ist auf einem Samba-Share gespeichert. Beim Versuch, die Datei nach einer Änderung zu speichern, erhält man eine Fehlermeldung wie etwa

“Error creating object. Could not create backup copy”.

Das Problem trat – bei mir – nur auf Linux-Clients auf. Diese verbinden sich via CIFS mit dem Samba-Share. Um genauer zu sein: Mit autofs und zwar, wie hier beschrieben.

Mir gelang es trotz vieler Versuche und Einstellungsänderungen (seitens Samba, seitens der smbclient-Optionen) nicht, diesen Fehler zu beseitigen.

Bis ich auf Charlie Harveys Artikel gestoßen bin, der zumindest eine Lösung parat hält: Die Option nobrl (no byte range lock), mit der verhindert wird, dass Dateien so gelockt werden, dass wahlfreier Zugriff auf einzelne Abschnitte durch mehrere Anwendungen möglich ist (siehe Wikipedia [en]).

Mit der Zeile

* -fstype=cifs,nobrl,credentials=/home/[username]/.smb/[workgroup],directio,domain=[workgroup],iocharset=utf8 ://${host}/&

in der /etc/auto.[workgroup].sub und einem Neustart von autofs ist dieses nervige Problem behoben :-)

Git

Auch wenn es einige gewichtige Argumente gegen Git gibt: Bei der Lektüre von Scott Chacons Buch Pro Git (gedruckte Version) wird mir das ganze Potential der postklassischen Versionskontrollsysteme klar: Auch wenn mir das Offline-Branching bislang immer am wichtigsten war (auf diese Weise kann ich im Zug einfach einen experimentellen Branch erstellen), bietet die Idee, stets das Repository bei sich zu führen (von Server-Hooks abgesehen), doch erheblich mehr Vorteile.

Zudem gefällt mir besonders gut, dass man Versionen einer Datei auch dann wiederherstellen kann, wenn der Branch (sollte eigentlich “das Branch” heißen, aber dagegen sträubt sich mein Sprachempfinden) gelöscht wurde. Das ist in Subversion z.B. nicht möglich. Ebenso ist das Konzept des “Staging” (geänderte Dateien werden erst nach einem expliziten Stage-Befehl committed [kann man auch deaktivieren]) für mich sehr nützlich – in Subversion habe ich bislang (vor allem graphisch) andersherum gerade in größeren Projekten gearbeitet: Aus der Fülle der geänderten Dateien musste ich immer die “herauspicken”, die nicht committet werden sollten, was sehr zeitraubend war. Jetzt geht es andersherum: Nur die Dateien, die wirklich wieder ins gemeinsame Repository sollen, gehen nach “Staging”, alle anderen bleiben erst einmal lokal.

Nun beleuchtet Zack Voase in seiner Gegenüberstellung des Quellcodes Gits und Mercurials, dass für eine vergleichbare Funktionalität ein Quellcodeverhältnis von 10 (Git) zu 1 (Mercurlal) vorhanden ist.

Da frage ich mich natürlich, wann endlich der Git-Nachfolger programmiert wird. Und zwar in Scala :-)

Vermisst: Hardware-Benchmark für Entwickler

Ein Umstand, der in Unternehmen auf Entscheiderebene außerhalb des IT-Umfelds gerne verdrängt wird: Softwareentwickler sind Spezialisten und benötigen deshalb spezielle Hardware. Wer denkt, dass “Software schreiben” ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen.
Oberflächlich mag der typische Softwareentwickler Quellcode schreiben, was nicht so entfernt vom Schreiben von Textdateien zu sein scheint.

Tatsächlich ist der Quellcodeeditor nur ein Bestandteil von vielen, die die Integrierte Entwicklungsumgebung (“IDE”) eines Entwicklers ausmachen: Damit der Quellcode überhaupt ausgeführt werden kann, muss er kompiliert werden. Bisweilen muss ein Entwickler während der Ausführung des Programms an bestimmten Stellen den Ausführungsfluss Schritt-für-Schritt  überwachen (“debuggen”), wozu die Anwendung in den Arbeitsspeicher geladen werden muss.

Der Quelltext bewegt sich auch nicht im luftleeren Raum: Anwendungen werden in Projekte und Bibliotheken aufgeteilt, häufig handelt es sich um einige hunderte bis tausende Dateien, die gemeinsam kompiliert und in den Arbeitsspeicher geladen werden müssen. Allein das Lesen der Quelltexte und das Erstellen der Kompilate kann bei mittelgroßen Anwendungen mehrere Minuten, bei größeren sogar viele Stunden andauern.

Auch wenn IDEs inkrementelles Kompilieren ermöglichen, wird des öfteren ein “Build” (alle Kompilate und dazugehörige Dateien) wieder gelöscht und vollständig neu erstellt.Zudem sind Softwareanwendungen im Unternehmensumfeld verteilt und kommunizieren mit Datenbanken, anderen Systemen und/oder der im Unternehmen eingesetzten Middleware.

Normalerweise ist der Entwickler bestrebt, auf seinem Rechner die Bedingungen, unter denen seine Anwendung später ausgeführt werden soll, en miniature nachzubilden: Auf diese Weise ist er unabhängig von Wartezeiten und kann ggf. auch offline (z.B. im Zug) arbeiten.

Was deshalb wirklich entscheidend für einen Entwicklerrechner?

Die Leistung:

Ein Softwareentwickler benötigt ein für seine Ansprüche äußerst leistungsfähiges System, was sich insbesondere auf

a) die Festplatte
b)
den Hauptspeicher
c)
die CPU und
d)
Grafikkarte + Display bezieht.

Die Festplatte ist deshalb so wichtig, weil zum Erstellen von “Builds” oft tausende Dateien gelesen und geschrieben werden. Normalerweise liegt in langsamen Festplatten der Schwachpunkt von Entwicklersystemen (abgesehen von Virenscanner, die die Buildverzeichnisse überwachen). Sinnvoll können hier Solid State Discs (flash-basiert) oder RAID-Systeme (RAID 0 oder 0+1, aber nicht 5) mit SATA oder SAS sein, die den Datendurchsatz erhöhen.

Der Hauptspeicher muss sehr großzügig dimensioniert sein: Zur Zeit sollte ein Rechner für die Anwendungsentwicklung verteilter Systeme über mindestens 8 GByte Hauptspeicher verfügen, besser wäre gleich das Doppelte (einige Notebook-Workstations bieten mittlerweile 16 GByte an).

Softwareseitig bedingt dies den Einsatz von 64-Bit-Betriebssystemen.Wird mit virtuellen Maschinen gearbeitet (was immer mehr zunimmt), ist ein Mehrprozessor- wenigstens ein Multicoresystem sinnvoll. Um die Fülle an Informationen einer IDE wie Eclipse, Netbeans oder Qt auf einen Bildschirm zu bekommen, empfiehlt sich zudem ein hochauflösendes Display und eine entsprechende Grafikkarte.

Wie separat dargelegt, macht sich eine Leistungssteigerung bei Entwicklerrechnern schnell bezahlt. Um Entscheidern (und nach besserer Hardware strebenden Entwicklern) eine objektivere Entscheidungsgrundlage an die Hand zu geben, würde ich mir einen Benchmark wünschen, der

a) die Leistungsfähigkeit eines Systems hinsichtlich der o.a. Kriterien für einen Entwicklerrechner misst,
b)
kostenlos verfügbar,
c)
plattformunabhängig und
d)
einfach bedienbar ist.

Ein Benchmark der mit Referenzprojekten arbeitet, der gängige IDEs startet, auf denen kleine, mittelgroße und große Referenzprojekte mit der IDE erstellt werden, wobei dies noch mit parallel laufenden Middlewareservern kombiniert werden sollte.

Falls jemandem ein solcher Benchmark bekannt ist, wäre ich dankbar für einen Hinweis ()! Interessenten, die ein derartiges Projekt auf die Beine stellen möchten, können mich gerne ansprechen.

Der wahre Preis billiger Hardware

In Unternehmen verdrängen Entscheider außerhalb des IT-Umfelds gerne, dass Softwareentwickler Spezialisten sind und deshalb spezielle Hardware benötigen. Wer denkt, dass “Software schreiben” ungefähr mit dem Schreiben von Textdokumenten vergleichbar ist, liegt in etwa so richtig wie jemand, der meint, Autofahren hieße, auf einem Stuhl zu sitzen und beide Füße unregelmäßig auf- und abzubewegen.

Tatsächlich ist das Schreiben von Quellcode nur die Spitze des Eisbergs: Auf dem Entwicklerrechner wird dieser Quellcode nicht nur zu ausführbarer Software gemacht, sondern häufig eine vollständige Simulation der Unternehmensanwendungen ausgeführt, in deren Umgebung die Software verwendet werden soll. Also Datenbanken, Webserver, E-Mail-Server etc. etc.

Für den Entwicklerrechner bedeutet dies, dass er um ein Vielfaches leistungsfähiger sein muss als die Rechner, die man zur Erfüllung von Büroaufgaben verwendet.

Im Gegensatz zu Joel Spolsky statten viele Unternehmen ihre Softwareentwickler aber mit billiger Standardbürohardware aus. Meist muss schon die Aufrüstung des Arbeitsspeichers gesondert beantragt werden.

Was bedeutet das für die Entwickler? Vor allem müssen sie längere Wartezeiten in Kauf nehmen: Beim Kompilieren, beim Debuggen und Testen ihrer Anwendungen sowie beim Starten der IDE.

Was bedeutet das für die Unternehmen? Berechnen wir das einmal an einem Beispiel (aus meiner Praxis):

Die Entwickler eines größeren Finanzdienstleisters arbeiten mit Eclipse, die Anwendung wird in der Programmiersprache Java erstellt und ist in 10 voneinander abhängige Projekte (genauer: Maven-Module) gegliedert. Insgesamt handelt es sich um über viertausend Dateien, die kompiliert werden müssen (zuzügl. einiger Konfigurationsdateien).

Der durchschnittliche Rechner der Entwickler benötigt für das Erstellen eines Builds eine knappe halbe Stunde (mit Virenscanner über zweieinhalb Stunden).

In dieser Zeit können die Entwickler zumindest nicht programmieren, häufig nicht einmal mehr E-Mails lesen, weshalb der Arbeitsalltag so ausgerichtet ist, dass vollständige Builds zum einen vermieden und zum anderen auf den Morgen (Rechnerstart – Zeit für einen Kaffee) und die Mittagspause verlegt werden.

Im Team wird verteilt gearbeitet und regelmäßig integriert (d.h., Entwickler, die an Modul A arbeiten, stellen ihre Änderungen zur Verfügung, Entwickler, die an Modul B arbeiten, holen sich die aktualisierten Quelltexte von der Versionsverwaltung, was häufiger zur Folge hat, dass ein vollständiges Build erzeugt werden muss), wodurch zwei vollständige Builds am Tag die Regel sind.

Gehen wir vorsichtig von einem Durchschnittsgehalt von 60 T EUR für einen Entwickler mit mehr als sechs Jahren Berufserfahrung aus, ergeben sich folgende Kosten (Berechnungsgrundlage 223 Arbeitstage: 365 Kalendertage abzügl. Wochenenden (104 Tage), Feiertage (8 Tage) und Urlaub (30 Tage), 40-Stundenwoche):

Stundensatz
60.000 / 223 / 8 = 33,62 EUR

Auf zwei Builds zu je einer knappen halben Stunde am Tag bezogen bedeutete dies im ungünstigsten Fall (die Entwickler warten einfach nur, während das Build erstellt wird und sind ansonsten nicht weiter produktiv) jährliche Kosten von

223 x 33,62 EUR = 7.497,26 EUR pro Entwickler und

16 x 7.497,26 EUR = 119.956,16 EUR für das aus sechzehn Personen bestehende Team.

Die Verdopplung des Arbeitsspeichers und der Einbau schnellerer Festplatten bewirkte, dass ein vollständiges Build in gut 15 Minuten erstellt werden konnte.

Vergleicht man die Kosten für die Aufrüstung pro PC (450,- EUR für die Hardware, etwa 150,- EUR Personalkosten [Einbau durch Supporttechniker, Procurement] ) sieht man sofort, dass sich selbst bei einem geringeren Produktivitätsausfall als 100 % eine Investition in bessere Hardware schnell amortisiert:

Ersparnis rein rechnerisch:
119.956,16 EUR / 2* = 59978,08 EUR abzüglich 9.600,- EUR Hardwarekosten = 50.378,08 EUR

*Halbierung der Kompilierzeit

(Aufs Jahr bezogen wird somit eine Aufrüstung rentabel, sobald die festgestellte Produktivitätseinbuße bei über 8% liegt, was in jedem Fall gegeben ist.).

Weiterhin ist interessant, dass dieselben Rechner auch allen extenen Beratern zur Verfügung gestellt wurden. Deren Stundensatz lag dabei weitaus höher, wodurch sich die Investition noch schneller amortisierte.

Positive Seiteneffekte des Einsatzes leistungsfähigerer Entwicklerrechner sind zudem verbessertes Time-To-Market (offensichtlich) sowie ein besseres Betriebsklima (lange Buildzeiten frustrieren Entwickler, schnelle Rechner hingegen erfreuen sie).

Leicht zu übersehen

Das Bedürfnis, Reparaturen im Haushalt zu erledigen, wird mittlerweile bei vielen verdrängt durch den Wunsch, die eigene Software zu "reparieren": Wir müssen die alltäglichen Anwendungen aktuell halten und das Betriebssystem, sogar für mobile Geräte; mal müssen Kontaktdaten gepflegt und von einem Social Network zum anderen synchronisiert werden, mal die Skindateien für den Audioplayer. Die Karten des Navigators sind aktuell zu halten und letztens kam der Kundendienst vorbei, um die Waschmaschine zu patchen.

Sicherlich werden Updates manchmal vereinfacht, sie somit unter Linux und vielen Open-Source-Anwendungen nicht so gräuslich umgesetzt wie die "Patch-Days" der Microsoft-Welt, die viele Angestellte kennen. Und fürchten.

Debians Paketaktualisierung oder die Aktualisierung des Firefox’ sind auf der Anwenderseite leicht umzusetzen. Und dennoch: Sie erfordern Aufmerksamkeit. Sie verlangen auf der Anwendungsebene meist, dass man die Anwendung neustartet, um die Aktualisierung zu erhalten. Das kostet Zeit und ggf. Nerven.

Und die Beschäftigung mit den Updates, vor allem den sicherheitskritischen, stellt eine weitere "Baustelle" dar, die einem vielleicht eine bessere, sicherere Software bringt, aber eines bestimmt nicht: Sinnvoll verbrachte Lebenszeit.

Hier mit dem Trade-Off zu argumentieren, man müsse noch viel mehr Zeit verbringen, wenn man sich aufgrund nicht aktualisierter Software mit Sicherheitslücken beschäftigen müsse etc., greift nicht: Die Aktualisierungen könnten auch so erfolgen, dass man nicht unterbrochen wird, sondern z.B. an einer zentralen Stelle sich die Information darüber holt (von mir aus als RSS-Feed vom Betriebssystem, der wiederum aggregiert wird aus den Updatemeldungen der Applikationen).

Wertschätzende Gespräche oder Fachdidgeridoo

Bizarre Situation erlebt: MitarbeiterIn A stellt MitarbeiterIn B eine fachliche Frage. B kümmert sich ein wenig darum und gibt auf Nachfrage von A eine mündliche Antwort. Während der Ausführungen Bs nimmt A eine leere Wasserflasche und fängt an, auf deren Rand zu blasen und dadurch Töne zu erzeugen. Zwei Nachfragen von B an A werden mit diesen Tönen ebenso beantwortet wie Bs Gruß an A, als B die Büroräume verlässt.

Meiner Einschätzung nach wird B das Verhalten A nicht übelnehmen. Aber es lässt Rückschlüsse auf die Fähigkeit von A zu, Wertschätzung auszudrücken. Ich frage mich, ob mich ein Arbeitsumfeld reizen würde, in dem jemand arbeitet, der sich derart unreif vor allem in Stresssituationen verhält.

(In dieser Umgebung habe ich übrigens zuerst den mir unbekannten Spruch nett ist die kleine Tochter von scheiße gehört, der mich wegen seiner grundlegenden Dümmlichkeit überraschte und gleichzeitig das Denken und die Ethik derjenigen widerspiegelt, die ihn "zitieren" [Provenienz ist mir unklar]).

 

 

68.586.311! :-)

Mit großer Freude kann ich mitteilen, dass endlich der Durchbruch bei meinem "Akkordpermutationsprogramm" erfolgte: Das Programm ist in der Lage, die möglichen 68.586.311 Akkorde zu berechnen und zu speichern, alle Testabfragen gegen die Datenbank liefen erfolgreich.

Der Quellcode ist auf Google Code veröffentlicht, wenn auch noch nicht "gesäubert".

Für mich rückt die Fertigstellung eines musikalischen Projekts, das mich nunmehr seit über zwanzig Jahren begleitet, wieder in den Bereich des Realen.

Die Berechnungszeit dauert nur noch etwa 2 Tage, der erforderliche Speicherplatz ~35 GByte (im Vergleich zu mehreren Wochen und mind. 120 GByte). Auch wenn ich sie liebgewonnen hatte, bin ich von der H2-DB wieder zu MySQL zurückgekehrt, da H2 offensichtlich kein Index-based Locking unterstützt und mit versetzten Transaktionen nicht zurechtkam.

Für alle Nichteingeweihten: Was das Programm bewirkt, warum es sinnvoll sein kann, über 68 Millionen Akkorde zu berechnen und zu speichern, folgt später in einem ausführlicheren Beitrag.

Fundamente einer IT-Strategie (3): Eine IT-Strategie entwerfen

(Fortsetzung von Teil 2). Was ist beim Entwurf einer IT-Strategie zu beachten und wie macht man das in der Praxis?


Eine IT-Strategie entwerfen

Wesentlicher Leitsatz ist: Die IT-Strategie hat sich an der Unternehmensstrategie auszurichten und muss dabei die Produktstrategie tragen. Sie darf dabei die Produktstrategie, in manchen – gar nicht so seltenen – Fällen auch die Unternehmensstrategie, zu neuen Visionen anregen. Keinesfalls darf die IT-Strategie das Unternehmen und die Produkstrategie behindern.

Das klingt im luftleeren Raum schön und einfach, ist es in der Praxis aber nicht: Häufig widersprechen sich die Bedürfnisse des Produktmanagements und der IT-Führung.

Die Kunst besteht gerade darin, einen angemessenen Ausgleich zu schaffen und die IT-Strategie so zu formulieren, dass die IT der Produktentwicklung und dem Vertrieb ausreichend Spielräume verschafft, andererseits aber nicht zum bloßen Befehlsempfänger wird, der reaktiv versucht, die Produktentwicklungen des Vorjahres in die Backendsysteme zu “quetschen”, während längst schon andere Produkte verkauft werden.

Das Zusammenspiel ist hier allein erfolgversprechend und erfordert hochkommunikative Persönlichkeiten auf allen Seiten. Wünschenswert ist daher eine allgemein anerkannte Kommunikationskultur im Unternehmen, etwa basierend auf dem Harvard Principle of Negotiation.


Am Anfang ist das Ist

Nehmen wir nun an, dass die Mitarbeiter aus den betroffenen Abteilungen miteinander nutzbringend kommunizieren können. Wie soll es dann weitergehen? Man könnte, gewissermaßen im luftleeren Raum, eine Strategie ausarbeiten und dann alles tun, dass sie “irgendwie” umgesetzt wird.

Hier würde aber etwas fehlen: Die Einschätzung der aktuellen Lage, die Ermittlung einer zwar unbekannten, aber durchaus vorhandenen IT-Strategie. Ohne diese sind Sie gar nicht in der Lage, Vorgaben zu machen: Ähnlich wie bei einem Navigationssystem müssen Sie zunächst ermitteln (lassen), wo Sie sich gerade befinden.

Wie macht man das?


Die vier P: Personen, Prozesse, Philosophie, Performance

Einen guten Anhaltspunkt bieten vier Kriterien, die aus der Investmentbranche stammen (siehe z.B. hier), und möglicherweise eine Abwandlung des 4P-Prinzips von Toyota darstellen.

Diese vier Prinzipien sind deshalb so gut dafür geeignet, eine strategische Ausrichtung zu entwickeln, weil sie

a) den menschlichen Aspekt der IT berücksichtigen helfen (wenn Sie die Bücher De Marcos/Listers noch nicht kennen, wird es Zeit…);

b) ermöglichen, die Auswirkungen der eingeschlagenen IT-Strategie zu messen (und auf aktuelle Entwicklungen zu reagieren).

Ab Teil 4 werden diese Kriterien genauer betrachtet. Wir werden uns dabei fragen, wie sich das Unternehmen bezüglich dieser Prinzipien aktuell positioniert.

Fundamente einer IT-Strategie (2): Auf der Suche

(Fortsetzung von Teil 1).

Was ist IT-Strategie?

Als IT-Strategie im weiten Sinn verstehe ich:

Die Antwort auf die Frage, wie durch den Einsatz von Informationstechnologie die Unternehmens- und Produktstrategie unterstützt werden soll.

Die Frage…

“Welche IT-Strategie hat das Unternehmen eigentlich?”

…sollte eigentlich jeder Manager, insbesondere einer aus der IT, unmittelbar beantworten können. Sie/er sollte in der Lage sein, in wenigen Sätzen zu erläutern,

a) was die Unternehmens- und was die Produktstrategie ist;

b) wie der Einsatz von Informationstechnologie diese unterstützen soll.

Die Strategie ist verschwunden!

Häufiger als man denkt, ist die IT-Strategie aber unbekannt. Dies ist in jedem Fall ein ernstzunehmendes Krankheitssymptom für jedes Unternehmen, das IT einsetzt und ohne sie nicht funktionieren kann.

Variante 1: Keine Unternehmensstrategie

Woran kann das liegen? Der übelste Fall wäre, dass die Unternehmensstrategie noch nicht entwickelt wurde. Hier hilft nur, darauf hinzuwirken, dass dies schnellstmöglich erfolgt und die Strategie von der Unternehmensführung an alle Mitarbeiter kommuniziert wird.

Falls man keine Einflussmöglichkeiten in diese Richtung hat, muss man sich ernsthaft mit dem Gedanken auseinandersetzen, wie lange ein Unternehmen existieren kann, ohne über eine (nachhaltige) Unternehmensstrategie zu verfügen.

Variante 2: Keine Produktstrategie

Abgeschwächt könnte zwar eine Unternehmensstrategie vorhanden sein, aber die Produktstrategie fehlen (also die Antwort auf die Frage: mit welchen Produkten möchten wir unsere Unternehmensstrategie wie umsetzen?). Ohne Produktstrategie lässt sich aber keine IT-Strategie entwickeln. Hier sollte jeder IT-Mitarbeiter sehr daran interessiert sein, wie sich die Produkte des eigenen Unternehmens im Wettbewerb plazieren und nötigenfalls mit der Suche bei Monster etc. beginnen.

Variante 3: IT-Strategie vorhanden, aber nicht kommuniziert

Schließlich kann die IT-Strategie unbekannt sein.

Dass eine IT-Strategie unbekannt ist, kann unterschiedliche Ursachen haben. Beliebt ist die Konstellation, dass (irgend)eine IT-Strategie zwar im Kopf der leitenden Manager vorhanden ist (üblicherweise pro Kopf eine unterschiedliche Strategie), diese aber nicht kommuniziert und transparent gemacht wird und deshalb in summa unbekannt bzw. vage und widersprüchlich ist.

Dem kann verhältnismäßig einfach entgegengewirkt werden: Der oberste Chef der IT hat die IT-Strategie zu formulieren und nach unten zu kommunizieren. Dass dies auch erfolgt, ist Sache der Unternehmensleitung. Diese muss die IT-Strategie als Ausprägung der Unternehmensstrategie tragen und (deshalb auch: inhaltlich nachvollziehen können.).

Variante 4: Keine IT-Strategie

Schlimmer ist, wenn die IT-Strategie unbekannt ist, weil sie nicht entwickelt wurde. In diesem Fall muss die IT-Strategie erarbeitet werden (wir sind der Ansicht, dass sich die IT-Strategie von der Unternehmens- und Produktstrategie ableitet, und gehen hier davon aus, dass beide bereits vorhanden sind.) .

Wie man beginnt, eine IT-Strategie zu entwickeln, findet sich in Teil 3.

Fundamente einer IT-Strategie (1): Motivation

Gerne verrate ich: IT-Strategie ist meine geheime Passion. Als Angestellter in der IT-Branche mit ambivalentem Hintergrund (Volljurist, der als Softwareentwickler, -architekt und IT-Berater tätig war und jetzt als Systems Engineer eine 100%ig passende Schnittstellenposition besetzt) reflektiere ich seit Beginn meiner Tätigkeit in der IT die Motivationen hinter unternehmerischen Entscheidungen mit unmittelbaren Einfluss auf die IT.

Immer wieder stoße ich auf die Frage (oder – schlimmer – werde gestoßen) welche IT-Strategie zu konkreten Handlungen oder Handlungsanweisungen in Unternehmen führt.

Die häufig wiederkehrenden Beispiele für konzeptionslosen, von keiner Strategie getragenen Aktionismus sind Legion:

  • um Kosten zu reduzieren, wird die Softwareentwicklung der zentralen Transaktions- und Bestandsanwendungen “outgesourced”;
  • Vertriebsmitarbeiter eines externen Softwareunternehmens bieten die neueste Version ihres Produkts an – das Management lässt daraufhin prüfen, welche Möglichkeiten es gibt, dieses einzusetzen (anstelle eine Software dann zu evaluieren, wenn sie benötigt wird);
  • das von allen Mitarbeitern eingesetzte Helpdesksystem wird fachlich einem externen Mitarbeiter überantwortet; als dieser das Unternehmen verlässt, bleibt die Position vakant und wird einem Programmierer übertragen, der das System auch noch gleich warten soll;
  • die technologisch kompetentesten Mitarbeiter aus der Softwareentwicklung müssen die Systeme selbst betreuen, weil kein Maintenance-Konzept vorliegt und Software nicht so entworfen wird, dass sie von Mitarbeitern ohne Programmierkenntnisse gewartet werden kann.
  • für Softwareentwickler/Techniker ist kein Karrierekonzept vorhanden – sie können lediglich ins Management wechseln, um sich finanziell zu verbessern oder ihren Verantwortungsbereich zu vergrößern – dies führt dazu, dass sie entweder das Unternehmen verlassen oder sich “arrangieren” i.S.v. innerlich kündigen;
  • Jungmanager werden ohne Assessment ausgewählt; am Beginn ihrer Karriere steht ihnen niemand zur Seite, der sie einarbeiten könnte; anstelle Mitarbeiter zu führen, verwalten sie diese und wundern sich, dass der Spaß an der Arbeit abnimmt und sich die Arbeitsergebnisse verschlechtern;
  • ohne Rücksprache mit dem Entwicklungsteam wird versucht, die Qualität der Softwareprodukte zu messen, die verwendete Methodik berücksichtigt weder den Kundennutzen noch die Arbeitsweise des Teams.

All dies sind gute Beispiele, die sofort die Frage aufkommen lassen, was IT-Strategie ist und welche IT-Strategie ein Unternehmen hat. Die Antwort darauf findet sich in Teil 2.


Eclipse + Maven: Debuggen im Sourcecode benachbarter Projekte


Problem

Bei der Arbeit mit Maven und Eclipse an einer modular aufgebauten Anwendung (mehrere Eclipse-Projekte, Maven mit dem m2Eclipse-Plugin, "Mama-POM" und Modulprojekte) vermeide ich abhängige Projekte, da es einen Unterschied macht, ob man mit dem physikalischen Ergebnis, also dem Maven-Artefakt, oder mit einem verknüpften Eclipse-Projekt arbeitet.

Vielen Probleme damit führten dazu, standardmäßig Disable Workspace Resolution und Disable Nested Modules zu wählen.

Das macht aber das Debuggen schwierig: Beim Debuggen möchte man beim Debuggen direkt in den Quellcode der mit der Startanwendung verbundenen Modulprojekte springen.

Defaultmäßig ist das nicht möglich, vielmehr wird die .class-Datei im Editor angezeigt. Hier hilft auch nicht, den Ort des Source-Codes in den Maven-Abhängigkeiten manuell mitzuteilen.

Verlinkte Quellordner (siehe linked resources) helfen hier nicht.


Lösung
In den Debug-Einstellungen als Quellordner die Modulprojekte angeben über Debug->Open Debug Dialog->Source.


Tip

Wenns beim Debuggen von WTP-Projekten dennoch nicht funktioniert, daran denken, den Server im Debug-Modus zu starten ;-)

Java: Use DB2 Timestamps with Nanoseconds in Java

Sometimes you need to run your unit tests using DB2 TIMESTAMP values in your test data to match specific records. You can’t just use a Date() objekt because you have to specify nanoseconds.

As I couldn’t find any code snippet via Google, this might be helpful for you, dear reader.

Example: You want to check for a timestamp of ’2006-02-15 12:05:19.861555′ (within quotes, as shown by one of my favourite SQL clients, SQuirrel SQL).

DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
Date theMilliDate  = formatter.parse( "2006-02-15 12:05:19" );
Timestamp timestamp = new Timestamp(theMilliDate.getTime());
// Note the trailing zeros!
timestamp.setNanos(861555000);
// validFrom would be of type java.util.Date
myEntityObjekt.setValidFrom(timestamp);

This – at least – does the trick, if you know of a better solution, please share it :-)

Kubuntu 8.10 ‘Intrepid Ibex’ : Netzwerkprobleme mit statischer IP

(English users: See Kubuntu 8.10 ‘Intrepid Ibex’ : Networking problems with static IP address)

Nach einigen hartnäckigen Problemen mit dem aktuellen Lenny-Snapshot auf einem neuen Rechner hab ichs mal mit dem brandaktuellen Kubuntu 8.10 aka "Intrepid Ibex" versucht. Wesentlicher Grund war, das neue KDE 4.1.2 ausprobieren zu können.

Die Installation verlief weitgehend problemlos, vorhandene Partitionen wurden zwar erkannt, mussten aber den Mountpoints neu zugeordnet werden. (Könnte man das nicht noch besser machen und die vorhandene /etc/fstab einlesen und defaultmäßig vorschlagen [ich meine mich dunkel entsinnen zu können, dass SUSE 10.2 das so gemacht hat]?
Oder wenigstens dies ermöglichen?).

VGA-Mode in den Terminals ist immer noch 640×480, das machen andere Distributionen schon lange, lange besser. Aber immerhin kann man die /boot/grub/menu.lst nachträglich bearbeiten.

 

Der erste Start von KDE4 dauerte eine ganze Weile, höchstwahrscheinlich, weil viele Dateien im Home-Verzeichnis angelegt werden mussten.

 

Nach der Anmeldung flackerte der Bildschirm etwa alle 2-3 Sekunden, was mich beunruhigte. Meine Vermutung, dass keine NVidia-Treiber installiert waren, bestätigte sich, immerhin folgte sofort ein Hinweis von "Jockey", der Software für die Verwaltung proprietärer Treiber, dies solle man ändern.

Indes wurde meine Auswahl, Release 177 des Nvidia-Kernels zu verwenden, nicht übernommen.

 

Schnell war deutlich, weshalb: Die Netzwerkverbindung war nicht hergestellt. Zwar ist ein Icon im Systray vorhanden, das einem ermöglichen soll, die Netzwerkkarte zu konfigurieren. Nur werden die dort hinterlegten Einstellungen nicht in /etc/network/interfaces übernommen.

Also hab ich die Netzwerkkarte manuell dort eingetragen, entsprechend der Konfiguration auf dem anderen Debian-Lenny-Rechner:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
  address 192.168.9.19
  netmask 255.255.255.0
  network 192.168.9.0
  broadcast 192.168.9.255
  gateway 192.168.9.1

Und noch /etc/resolv.conf erstellt, und dort die Arcor-Nameserver hinterlegt:

nameserver 145.253.2.75
nameserver 145.253.2.11

Leider half jetzt nicht einfach…

sudo su
/etc/init.d/networking stop
ifconfig eth0 down
/etc/init.d/networking start

… auszuführen, vielmehr musste ich den Rechner neustarten. Danach war die Netzwerkverbindung hergestellt.

Posts in den Ubuntuforen (hier und hier) lassen vermuten, dass es sich um ein generelles Problem handelt. Das ist nicht  benutzerfreundlich gelöst, so eine Distribution darf man durchschnittlichen Anwendern nicht in die Hand geben, es sei denn, man möchte sie für Linux vergraulen.

 

Nachdem die Netzwerkverbindung aufgebaut war, ließ sich das Grundsystem einigermaßen komfortabel einrichten. Der NVidia-Treiber war schnell installiert (über den "Jockey"-Dialog), ebenso ein aktuelles Java

sudo su
apt-get-install sun-java6-jdk

Danach noch Synaptic installiert, da Adept mir völlig kryptisch erschien, die Suche nach Paketen nichts brachte und die Hilfedatei nicht verfügbar war.

Jetzt läufts, allerdings mit Einschränkungen: Gnome-Programme erkennen das Scrollrad nicht, die Tabs im Firefox (nachinstalliert) sehen gräuslich aus. Generell scheint mir noch viel manuelle Nacharbeit nötig zu sein.
Ein Blick in /etc/X11/xorg.conf zeigt, dass keine spezifischen 3D-Features für die Graphikkarte eingetragen sind, was möglicherweise aber anders funktioniert als bei Lenny (???).

Ansonsten macht KD4 einen recht guten allgemeinen Eindruck, vieles scheint mir aber auch noch überhaupt nicht ausgereift. Die Einstellungsanwendung ist in meinen Augen weitaus schlechter als das alte KDE Control Center, hier wünschte ich mir die frühere Anwendung zurück.

 

 

 

 

 

 

 

 

 

 

Maven: test-jar für andere Projekte erstellen.

Manchmal benötigt man ein JAR, das nur Testklassen enthält, um diese in mehreren Projekten zu verwenden. Dieses erstellt man wie folgt:


1. Test-JAR im Ausgangsprojekt erstellen

In der pom.xml des Projekts, dessen Testklassen verwendet werden sollen, erstellt man ein separates JAR über eine Änderung des maven-jar-plugins:

<plugins>
<!-- Weitere Plugins -->    
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>test-jar</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>

 

2. Test-JAR verwenden

In der pom.xml eines Projekts, welches das JAR mit den Testklassen verwenden soll, trägt man eine Dependency mit einem classifier ein:

<dependency>
  <groupId>de.buergel.bas</groupId>
  <artifactId>bas-spring.server</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <scope>test</scope>
  <classifier>tests</classifier>
</dependency>

Siehe dazu den ausführlichen Blogeintrag von Walter Cedric (Englisch).

Debian: Wenn der PC-Lautsprecher wieder nervt

Früher half, das Modul pcspkr zu deaktiveren. Das hat sich offenbar geändert. Jetzt also in /etc/modprobe.d/blacklist

blacklist snd_pcsp

eintragen.

Hibernate JPA-Bug with Composite-Keys

Legacy systems often contain composite natural keys, i.e. identifiers composed from different database fields.

Hibernate offers three ways to deal with it. One is the @IdClass annotation that allows you to create an annotation-free class containing all the fields you like to use and use those fields again in your annotated entity class, annotating them with @Id.

Normally you need to map the class member name with the database field name. I.e. if you use the members userId and versionId, it’s quite likely you have to map them to database fields named USER_ID and FIELD_ID.

With the JPA annotations you do so using the @Column-annotation. But there is a bug. Hibernate completely ignores the @Column annotation if used in conjunction with other annotations, e.g. @Id.

See http://opensource.atlassian.com/projects/hibernate/browse/ANN-756

Please vote for fixing this ugly, ugly bug.

Ich wünsche mir…

Wunschlisten gibt es einige im Netz. Angefangen von Amazons altbewährtem Wunschzettel über die biedere kommerzielle Variante wishlist.com hin zum trendigeren wishlistr.com. Eine deutsche Variante ist OpenWishes.

 

Diese Dienste sind aus einem Grund vorhanden – ihre Betreiber möchten Geld verdienen. Bei Amazon ists offensichtlich, dass jeder Wunsch sich auf ein Produkt im eigenen Warensortiment bezieht. (Zudem helfen die Wunschlisten, das Käuferprofil zu verfeinern, auch das kann Geld wert sein).

 

Bei den anderen Diensten ist das Geschäftsmodell nicht ganz offensichtlich, ich vermute, dass da eine Mischung aus Werbeprovisionen (via Google Adwords bei wishlistr) und Provisionen (wishlist) im Fall eines Kaufs zu Einnahmen führen soll.

 

An diesen Angeboten stört mich, dass sie sich überhaupt nicht mit dem zentralen Thema, dem Wunsch eines Menschen auseinandersetzen. Die Wünsche einer Wunschliste werden artig als ausschließlich materielle Wünsche betrachtet.

 

Schaut man sich den Action Tracker auf We are what we do an, sieht man, dass z.B. der Wunsch, die Welt lebenswerter und schöner zu machen, etwas ist, das viele antreibt, aber nicht durch redundanten Konsum erfüllt werden kann. Viele Wünsche sind immateriell oder bestehen aus einer Mischform (mit jemandem in ein Café/Museum/Konzert gehen etc. etc.).

Dass selbst wishlistr und OpenWishes als jüngste und "innovativste" Plattformen eine (ja: genau eine) Wunschliste ermöglichen, die man überhaupt nicht strukturieren kann, ist wirklich traurig.

Da genügt es doch, sich eine Wunschliste z.B. auf sein Blog zu packen und zu hoffen, dass jemand die dort geäußerten Wünsche erfüllt (die Blogger-Prominenz hätte da echte Chancen, auch unwahrscheinlichste Wünsche erfüllt zu bekommen).

Meine Wunschliste bestünde zur Zeit aus einem Wunsch, den könnte ich auf den o.a. "Diensten" aber gar nicht äußern: Ich wünsche mir eine Wunschlistenanwendung im Internet mit folgenden Eigenschaften:

 

  • Wünsche können materieller und immaterieller Natur sein;
  • beliebig viele Wunschlisten können erstellt werden;
  • Wünschen können Kategorien/Tags zugeordnet werden;
  • Wünsche können anderen zugänglich gemacht werden (Sichtbarkeitseinstellungen: Public – Work- Private – Friends – Individuals), wobei dies auf die gesamte Wünsche, einzelne Wunschlisten, Kategorien/Tags und einzelne Wünsche beschränkt werden kann;
  • man sollte einen fremden Wunsch erfüllen können: die wünschende Person kann festlegen, ob man sie wegen des Wunschs kontaktieren kann oder ob die wunscherfüllende Person anonym bleibt;
  • Preisangaben sind möglich (zu einem festgelegten Preis würde man sich selbst/einer anderen Person einen materiellen Wunsch erfüllen können/wollen, ggf. mit der Option, automatisch einen Kaufvertrag abzuschließen); diese Preisfestlegung sollte zeitlich begrenzbar sein;
  • mehrere Personen mit demselben materiellen Wunsch können sich zu Preisabreden treffen, um gemeinsam kaufen zu können;
  • berufliche Wünsche können geäußert werden, insbesondere "Aussteigerwünsche" (diese wären wegen der dahinterstehenden hohen Motivation für Personalberater interessant);
  • Wünsche/Wunschlisten können beliebig sortiert, gefiltert, zusammen- und auseinandergeführt werden;
  • URL-Snippets können per Drag&nDrop zu einem Wunsch hinzugefügt/ein Wunsch aus diesen erstellt werden;
  • Alternativen können zu einem Wunsch geäußert werden;
  • wenn ein Wunsch erfüllt wurde, ist dies sichtbar, es sei denn der Wunsch wird unsichtbar gemacht (letzteres kann per Einstellung bestimmt werden);
  • Statusmeldungen zu Wünschen über Direct Messages bei Twitter;
  • nichtmaterielle Wünsche via Twitter (sonst verspamt Twitter zunehmend);
  • Nach Menschen mit ähnlich gelagerte Wünschen suchen können.
  • Mashups mit anderen Diensten.

Wer eine entsprechende Seite kennt, kann mir ganz einfach diesen Wunsch erfüllen. Oder jemand schreibt eine entsprechende Anwendung. Da helf ich auch beim Programmieren :-)

berlin.jar 2008

Ralph Bergmann, Student an der FHTW Berlin, hat mit viel Energie und Elan die Java User Group Berlin-Brandenburg (re-)vitalisiert. Höhepunkt seiner Aktivitäten ist die erste Berliner Fachkonferenz um die Programmiersprache Java, die berlin.jar.

 

Im Vergleich zu den großen kommerziellen Java-Konferenzen (in Deutschland die JAX, US-international die Java One) nimmt sich die berlin.jar bescheiden aus:

 

Alle Besucher (zumindest, die mit denen ich sprach) wurden von Ralph Bergmann persönlich begrüßt.

Nett.

Jedenfalls etwas ganz anderes als die spektakulären Bühnenbegrüßungen von Sebastian Meyen, der ansonsten auf der JAX stets recht arrogant/gestresst agiert, wenn man sich nicht durch Anzug oder Speaker-T-Shirt ausweisen kann.

 

An zwei Tagen werden Samstags vier Vorträge in fünf Tracks angeboten, am Sonntag drei. Daneben können Samstags noch Workshops besucht werden (v.a. Eclipse RCP und Tomcat 6).

 

Die Konferenz findet – naheliegend – in den Räumen der FHTW Berlin in der Treskowallee statt. Menschen von der User Group und offenbar auch Studenten (?) unterstützen die Veranstaltung, ein einem Gang sind drei Stände aufgebaut.

Essen wird an Grill und Suppenküche ausgegeben, leider alles nicht ganz mit den Veranstaltungszeiten koordiniert. Für die erste Veranstaltung dieser Art, zudem nichtkommerziell, ist das akzeptabel.

 

Was macht aber eine Konferenz wertvoll? Natürlich die mobile Massage in der Relax-Lounge! Mögen manche sagen. Andere finden eher die Qualität der Vorträge entscheidend. Hier braucht sich die berlin.jar nicht zu verstecken: Von Oliver Böhm über Peter Roßbach (!Tomcat Workshop!) zu Eberhard Wolff sind viele Größen der deutschen Java-Community vertreten. Die Qualität der von mir besuchten Vorträge braucht sich zumindest hinter denen der Vorträge auf der JAX nicht zu verstecken.

Alles in allem eine lohnende Veranstaltung, für den lächerlich niedrigen Eintrittspreis (15,- EUR im Vorverkauf, Verköstigung inklusive) bekommt im Vergleich zu den kommerziellen Veranstaltungen ein Vielfaches als Gegenwert.

 

Dieses Angebot nutzten am ersten Tag nach meiner Einschätzung (Mittagessen und "Abendparty") mehr als 100, aber sicherlich weniger als 250 Teilnehmer, davon etwa 3% Frauen (leider nicht eine einzige Vortragende, sehr schade, dass Angelika Langer nicht anwesend war).

 

Hochachtung verdient Ralph Bergmann und seinen Helfern für den Einsatz, der weitaus mehr von einer Begeisterung für die Technologie spricht als von reinem Profilierungsdrang. Dazu wurde zuviel gelächelt.

 

Social DNA

Letztens eine Nachricht über XING erhalten. Der Absender zeigte sich erfreut über meine dort hinterlegten Interessen, als da wären:

 

Softwareentwicklung mit agilen Methoden, Java EE (JEE), J2EE, Java2EE, Java, Ruby, Linux, JSF, Spring, Hibernate, SCALA, JBoss Seam, Maven, Apache Software Foundation, Eclipse, Eclipse RCP, NetBeans, Rules Engines, Middleware, SOA, BPM, ITIL, TOGAF, Zachman, Lean Management, IT-Strategie, Neue Musik, Klassische Musik, Musizieren, Klavier, Klarinette, Literatur (speziell Lyrik), Literatur, Bildende Künste, Kunst, Kulturgeschichte, Kunstgeschichte, Berlin, London, Venedig, Paris, Florenz, Rechtsinformatik, Italien, Großbritannien, English Literature, English Verse. Werke u.a. folgender Personen: Fowler, Tiepolo, Eisenstein, Braudel, Schnitzler, Ligeti, Knuth, Pushkin, Satie, Bellini, Monteverdi, Adams, Veronese, Shelley, Brecht, Dowson, Brahms, Montaigne, Schumann, Kubrick, Rameau, Bartok, Huizinga, Mahler, v. Bingen, Lenau, Frisch, Lenz, Olbrisch, Brunelleschi, Lichtenberg, Turner, Günther, Trakl, Scelsi, Redon, Streeruwitz, Flaubert, Friedell, Naso, Wilde, Bernhard, Erasmus, Gernhardt, Klimt, Palladio, Rückert, Härtling, Flaccus, v.d. Weyden, Balthus, Reynaldo Hahn, Caroll, Borodin, Verlaine, Mörike, Schobert, Villon, Greenaway, Heym, Thelen, Watteau, Abschatz, Jelinek, Bach (4x), Huysmans, Schiele, Ravel, Walser, V. Klemperer, Augustinus, Kling, Mann (2x), Gombrich, Stroustrup, Auster, Brüder Limburg, Franck, Purcell, Fellini, Truffaut, Hofmannsthal, Pollock, Schubert, Bresdins, Ariès/Duby, Bulgakow, Lenz, Proust, Neruda, de Beauvoir, Brouwer, Fragonard, Degas, Kurtag, Zelenka, Pepys, Rimbaud, Giorgione, Bachmann, Vian, Wilder, Wilmot/Rochester, Brinkmann, Callot, Opitz, Couperin, Ockeghem, Giacometti, Celan, Klinger, Catull, Sterne. Laufen, Laufsport, Joggen, Marathon.

 

Diese hatte ich schon vor längerer Zeit einmal zusammengekramt, um einer schmerzhaft Geliebten zu erkennen zu geben, ich wäre der richtige für sie, allein meiner Interessen wegen. (Magisches Denken, Zaubersprüche der Kindheit, nur transzendiert.).

 

Tatsächlich erkannte ich nach einer Weile, dass diese Frau sich weder für mich noch für wenigstens 10% der aufgeführten "Inhalte" hinter den Namen interessierte.

Wär mir letzteres wiederum von Anfang an bekannt gewesen, hätte ich gar nicht damit begonnen, ihr nichtvorhandene Gemeinsamkeiten zu unterstellen (Gegengeschlechtlichkeit ist ja wirklich keine Gemeinsamkeit.).

Und auch kein ernsthaftes Interesse für sie entwickelt.

 

Das wirft bei mir die Frage auf, ob es nicht irgendeinen Social-Web-Dienst gibt, bei dem man solche Informationen nicht hinterlegen kann, um eine "Interest Map" zu erstellen, die man dann mit der anderer Nutzer vergleichen kann. Auf diese Weise könnte man eine Sozial-DNA erstellen, und Menschen finden, die ähnliche Interessen haben / Ziele verfolgen.

 

Am besten noch mobil die Sozial-DNA gegeneinander abgleichen können. Und das noch für berufliche Profile und private. Und eine "Heat Map", die anzeigt, wo sich im Raum die Leute befinden, mit denen man zumindest die Interessen teilt. Etc. Etc. (z.B. mit sozioökonomischen und politischen Kriterien).

 

Datenschutz wäre da ein noch sensibleres Thema als bei den gängigen "Social Tools". Mir erschiene so etwas jedenfalls sinnvoller als die ganzen "Legacy DNA" Startups wie Navigenics etc., die einem alles und nichts zu der eigenen DNA mitteilen. Die Möglichkeit, die "Social DNA" (die keinen Status ausdrückt, sondern mikroindividuelle Differenzierung) verändern zu können, ist hier entscheidend: Jeder Mensch hat ja die Möglichkeit, sein Profil zu verändern. Ggf. sollte man sogar von vornherein angeben können, in welche Richtung man sich entwickeln möchte, was man nicht kennt, aber kennen möchte etc.

 

Konkreter sollte das ganze so gestaltet sein, dass für den Grunddatenbestand eine Anzahl von etwa 100 unterschiedlichen "Leads" (Schlüsselpersonen) ihre inhaltlichen, kulturellen, religiösen, sportlichen, politischen Interessen und Kenntnisse, Ziele und Vorlieben mitteilen, am besten über eine Liste von Stichwörtern wie oben dargestellt.

Diese wird dann geparst, bestehenden Schlüsselobjekten und semantisch zugeordnet. Danach erfolgt dann eine Auswertung / Neuindexierung der ermittelten Objekte durch die Nutzer. Sind die Schlüsselbobjekte zugeordnet, werden sie bewertet: Bei "Werken", Künstlerinnen, Musikstücken (kristalline Intelligenz) vor allem nach Vorlieben (mag ich / mag nicht / mir unbekannt), bei konzeptionellen Schlüsselobjekten (fluider Intelligenz) auch nach Fähigkeit (verstehe/kann ich, verstehe/kann ich nicht / mir unbekannt).

Dieser Grunddatenbestand kann dann von anderen übernommen und weiter angepasst werden.

 

Das ganze mit der Möglichkeit, sich mit anderen Nutzern "zu verbinden", von ihnen Objekte zu übernehmen und für sich selbst zu bewerten, zu suchen und sich finden zu lassen und sich eine Timeline anzeigen zu lassen, aus der man später ermitteln kann, wie sich die eigene Social DNA verändert hat.

 

Falls jemand einen solchen Dienst kennt, wär ich für einen Hinweis sehr dankbar :-)

Eine ideale Dirigentensite

Der Twitterer philharmoniker, hinter dem sich Frank Tentler verbirgt, mitverantwortlich für den Web 2.0-Auftritt des GMD/Chefdirigenten der Duisburger Philharmoniker, Jonathan Darlington, stellte jüngst eine Anfrage, was man sich als ideale "Dirigenten-Website" vorstellte.

Nur mit ausgefeilten Kompressionsalgorithmen könnte ich meine Gedanken dazu in eine 140 Zeichen umfassende Textnachricht quetschen. Das Entschlüsseln dauert länger als die Entschlüsselung der Pepysschen Tagebücher. Also gleich ins Blog damit.

Ausgehend von der Frage, wer sich eigentlich für solch eine Seite interessieren könnte, kommen mir folgende Zielgruppen in den Sinn:

  • Menschen, die an Aufführungen interessiert sind, die der Dirigent leitet;
  • Menschen, die sich fürs Dirigieren allgemein interessieren
    • solche, die gar nicht wissen, was ein Dirigent eigentlich macht
    • solche, die es wissen, aber mehr erfahren möchten
  • Menschen, die sich fürs Dirigieren als berufliche Tätigkeit interessieren (Nachwuchsdirigenten)
  • Menschen, die speziell an der Person des Dirigenten interessiert sind und mehr über seine ästhetische, musikalische, künstlerische Auffassung erfahren möchten.

Ausgehend von diesen Zielgruppen lassen sich folgende Angebote entwickeln:

Menschen, die an Aufführungen interessiert sind, die der Dirigent leitet

Für diese sollte ein stets aktueller Terminkalender verfügbar sein, aus dem alle geplanten Konzerte, öffentliche Generalproben, Vorträge etc. etc.  hervorgehen. Wenns geht, mit direkter Bestellmöglichkeit und Early Bird-Rabatten ;-)

Für die Daheimgebliebenen Live-Streams der Aufführungen.

Menschen, die sich fürs Dirigieren allgemein interessieren
>>Solche, die gar nicht wissen, was ein Dirigent eigentlich macht
Für die FUDers sollte es eine kleine Einführung in die Techniken des Dirigierens geben (ich erinnere dunkel ein Karl Böhm-Zitat, nach dem die Schlagtechnik als in einer guten Stunde vermittelt werden kann). Wenn Geld keine Rolle spielt: Wii-Spiel entwickeln und kostenlos verteilen, mit dem man Dirigieren üben kann (oder ist so etwas schon vorhanden?) :-)

Ferner etwas zur Historie, z.B. zum Taktstock des Tanzmeisters, zur Orchesterleitung vom Cembalo aus. Zum Taktstock und Dirigierstilen (z.B. Boulez), jeweils mit Videos. Zu Ensembles, die ohne Dirigenten auskommen.

Dann ein wenig Statistik (Flash-Animationen, mit denen man die Lebenswartung einer Dirigentin vergleichen kann mit der, sagen wir, eines 2.en Posaunisten, einer Konzertmeisterin etc. oder, wenn das Stat. Bundesamt mitspielt, auch mit der von Politikern, CEOs, Serienkillern :-)

>>Solche, die es wissen, aber mehr erfahren möchten
Hier wären zum einen Live-Streams von Aufführungen oder Proben sehr interessant. Ggf. auch fertige Aufnahmen zum Reinhören.

Ebenfalls interessant fände ich, Ergebnisse der Probenarbeit zu vergleichen mit den ersten Proben.
Also von einem Stück, das noch ganz neu und roh ist (nicht im Repertoire, aber auch keine Aleatorik ;-) eine für den Dirigenten wichtige Passage finden lassen, die in jedem Fall intensiv geprobt wird. Dann von allen Proben diesen Ausschnitt aufnehmen und nebeneinander stellen (als Stream).

Vielleicht Antworten auf die Fragen, wie genau geprobt wird, was sich der Dirigent als Ergebnis der Proben vorstellt.

Und etwas zu der Frage, inwieweit der Dirigent in die Verwaltung und die Programmgestaltung einbezogen wird, vielleicht als Interview.

Schließlich in jedem Fall etwas dazu, wie gefährlich und teils lebensgefährlich dieser Beruf ist, mit Verweisen auf Lully, der sich ja am Fuß beim Taktstampfen verletzte, ferner auf den Mahler-Vorgänger (?Nachfolger? erinnere ich gerad nicht aus dem Kopf und hab meine Bibliothek nicht parat) und zB. http://klassische-musik.suite101.de/article.cfm/dirigenten_und_taktstoecke

Menschen, die sich fürs Dirigieren als berufliche Tätigkeit interessieren (Nachwuchsdirigenten)

Antworten auf Fragen wie "muss ich ein absolutes Gehör haben, um Dirigent werden zu können?", "ich kann keine Noten lesen, aber mit einem Baseballschläger hantieren, reicht das?", "wenn ich Partituren mehrstimmig zwar nicht auf dem Klavier, aber auf der Posaune (Obertöne!) spielen kann, werde ich dann ein guter Dirigent?", "was ist das eigentlich: Diligent?"  Etc.

Also eine ehrliche Aussage des Dirigenten dazu, was die Grundvoraussetzungen sind, um sich beruflich mit dem Dirigieren zu beschäftigen. Ggf. mit ein paar interaktiven Gehörbildungstrainings (finde den falschen Ton in Probenaufnahmen). Und Links zu den einschlägigen Musikhochschulen(Universitäten, Verbänden, Ansprechpartnern, Portalen.

Menschen, die speziell an der Person des Dirigenten interessiert sind (…)
Viele möchten sicherlich gerne etwas erfahren, welcher Mensch hinter der musikalischen Position steht. Das kann sich auf private Details beziehen (Familiensituation, wie sieht ein typischer Arbeitstag aus?), aber auch auf ästhetische – Hör- und Lese- und Sehempfehlungen wären nett, ebenso eine Antwort auf die Frage, weshalb der Dirigent eigentlich Dirigent und nicht Programmierer geworden ist (was heutzutage doch immer die erste und offensichtliche Wahl wäre, oder?).

Schließlich wäre hier auch Platz für Autogrammanfragen oder für die Kontaktaufnahme, ebenso für die Registrierung zu Workshops etc.

Ob man spezielle Seiten für Kinder erstellen soll, die sich mit dem Dirigieren beschäftigen, wage ich zu bezweifeln. Aus eigener Erinnerung (und Beobachtung "meiner" [sind nicht mein Eigentum, nur meine Schutzbefohlenen] und andrer Kinder) sind die Instrumentalisten, ist das Orchester, viel interessanter als die Dirigentin. Weil diese ja keine (oder nur unpassende) Geräusche macht. Ggf. könnten Mitschnitte der Probenarbeit speziell für Kinder sinnvoll sein, besser wären aber Konzerte speziell für Kinder ITRW.

Und dann sollte noch unbedingt aktuelle Verweise auf so interessante, neuartige Projekte aus dem Umfeld des Dirigenten wie z.B. "Stockhausens Erben" von anachorete, schwarzesgold, philharmoniker et al. vorhanden sein, die beweisen, dass der Dirigent selbst hinter der Site steht und nicht die Marketingfirma seines Plattenlabels.

Tomcat-Startup: java.util.zip.ZipException: invalid entry size

Dieser Fehler kann auftreten, wenn eine Archivdatei (*.jar) aus irgendeinem Grund ungültig ist. Abhilfe schafft hier am ehesten

  • das jar noch einmal zu bauen, wenn man es selbst mit Maven, Ant oder der IDE erstellt hat;
  • wenn man einen Archivmanager (insb. WinZip) verwendet hat, um das jar manuell zu erstellen, einen anderen Archivmanager, etwa 7-zip oder izarc zu verwenden;

Natürlich muss man erst einmal das schuldige *.jar ermitteln, was unter Umständen gar nicht so leicht ist. Wenn die webapp zuvor problemlos lief, am besten nach absteigendem Datum alle jars nacheinander entfernen.