Archive zu Kategorie 'Vermisstes'

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.

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

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.

Idee: Dokumentations-Plugin f. Eclipse mit Codeausschnitten

Ein Syntaxfehler in Codebeispielen für Fachliteratur könnte nicht erfolgen, wenn man die Code-Beispiele immer direkt aus der IDE nähme; diese zeigte sofort den Fehler an.

Daher wäre ein Eclipse-Plugin, etwa für DocBook-Dokumentation nützlich, wo man für <programlisting>-Tags auf einen Code-Ausschnitt verweisen könnte, den man direkt aus der "lebenden Klasse" ;-) nehmen könnte.

 

 

Idee

Kleine Idee für eine “Killerapplikation”, während eines Gesprächs mit einer Kollegin (Dazzlog) entstanden:

Eine Sticky-Notes-Anwendung, die nicht nur ermöglicht, Reminder zu setzen etc. Vielmehr wird ermöglicht, Anwendungen, ggf. auch den ganzen Rechner zu sperren (auch nach einem Neustart).

Um die Blockade zu sperren, kann festgelegt werden, dass entweder eine bestimmte Zeit abgelaufen sein muss, oder (und das ist der Clou) eine andere Person ein E-Mail/SMS/HTTP-Request schicken muss, um die Sperre wieder aufzuheben. Hintergrund ist der, dass Nerds auch soziale Kontakte pflegen müssen, aber oft Zwang brauchen, um vom Rechner loszukommen. Ebenso Spielsüchtige.

Das Konzept ließe sich beliebig erweitern – z.B. PayPal-Zahlungen müssten eingehen etc. etc.

Humane Interface – Shift it to the IDE…?

Based on an article in Martin Fowler’s Bliki, an interesting discussion has started, roughly six months ago (have a look at the overview at Joe de Villa’s Blog).

To make it short – some people like to use a very reduced API for a programming language, others can’t get enough “comfort methods” and interfaces and the rest likes something in between these extremes.

OK – here’s my personal proposal in a howto-manner:

An API could support different levels of, let’s say, “feature sets”. E.g. there could be a “feature set” with an identifier like “REDUCED”-”BASIC”-”NORMAL”, or just “1″-”2″-”3″ and so forth.

The implementation of such “feature sets” could be implemented in Java with annotations e.g.

@feature-set BASIC
public void doSomething() { /* ... */ }

etc.

A developer now should have the chance to decide which “feature set” to use. How could she/he do this?

On the one hand, the compiler could support an argument that e.g. checks that only those methods are used that match the specified API “feature set” interfaces, classes, methods etc.

On the other hand, the IDE could support the developer in specifiying the API’s “feature set” and then display only the matching interfaces, classes, methods etc.

In my opinion an interface for programming is basically adressed to humans. If so, the “taste” and the experience of human programmers can differ extremely. So why should the API not allow the human programmer to select the range of features of it?

That such “feature sets” are feasible, is clearly shown with the Eclipse Mylar project.

Here, very individual “feature highlighters” are built based on single tasks and the dynamik activities of the programmer. Following this approach, one could even think giving programmers the ability to define their own, individual “feature sets” for a common API.

What do you think?

Computersprache

In der letzten Zeit in meine ‘künstliche’ Sprache (insb. die Poemata) Kommentare aus der Programmierersprache eingeführt. Z.B.:

/* gesicht */
cor/*o?*/naleiden,
nicht das übersetzte
deine hand in rom.

jetzt dein blick in
meinem kopf, deine hand
an der stirn 

schritten wir glücklichen
am lido, könnte dein
blick mich nur nicht halten

unerhört! unerhört. meine
haut, dein hauch. unsre

ersten lächler, die schneeïchten
tropfen, verrostete
fossilien, /* lilien */ butterblumen.

/* atzenbrugger deutsche.*/
/* ah, ye mouth! */
/* 1418 1792 die flucht. */

Nur jemand, der zumindest ein wenig mit dem Programmieren vertraut ist, wird die “Symbole” (i.e. Kommentarsyntax) zu lesen wissen.

Allerdings denke ich, dass in Zukunft weitaus mehr und andere Menschen als die Programmierer dazu in der Lage sein können und werden: Wir werden den Computer wohl niemals vermitteln können, unsere menschliche Sprache vollständig zu verstehen.

Aber wir können uns selbst beibringen, die Sprache zu verstehen, die wir den Computern beibringen.