Thursday, September 28, 2006

Nochmal Bauchgefühl

Nochmal ausgehend von der Frage, was denn das Bauchgefühl, oder die Intuition, ist und wie sie zustande kommt, aus ORF ON Science - Bauchgefühl und Logik: Zwei Arten der Entscheidung:
Die Intuition wird weitgehend gespeist aus unseren Erinnerungen, Sinneseindrücken und Empfindungen. Sie bezieht ihren Rohstoff aus dem, was wir ständig lernen, ohne uns des Lernprozesses bewusst zu sein. Das Gelernte steht uns dann bei passender Gelegenheit plötzlich und unerklärlich zur Verfügung.
(...)
Zu besonders guten intuitiven Lösungen kommen wir auf Gebieten, auf denen wir Experten sind.
Intuition, oder Bauchgefühl, hat man also nicht einfach so, sondern sie ist vielmehr die Folge und Frucht langer und langwieriger Lernprozesse. Oder anders gesagt: Erfahrungswissen. Erfahrungen, die man z.B. durch immer wieder erneutes Anrennen gegen typische Probleme beim Programmieren gewonnen hat, dieses immer wieder neue, auch immer wieder quälende Anrennen, die Stunden, Tage, Wochen des Kampfes mit irgendwas, und manchmal klappt es dann schon besser, wie habe ich es im Blogeintrag Managing Complexity ausgedrückt:
Ich glaube, dass ich schon ein wesentlich besseres "Gefühl" entwickelte habe ein "complicated problem" in "simple pieces" aufzubrechen, aber es ist jedes Mal wieder ein Unterfangen mit ungewissem Ausgang. Da gibt es kein Patentrezept, es hat eher was mit "Intuition" zu tun (die sich mit jedem Versuch weiter schult, und die auch gerne trügt).
Ja, manchmal funktioniert es schon sehr gut, und im Verlauf des Programmierens tauchen Probleme, mit denen man bei zunehmender Komplexität des Programms schon längst hätte rechnen müssen, erst sehr viel später, oder sogar überhaupt nicht auf. Hinterher weiß man nur, dass es diesmal viel besser gelaufen war als sonst. Und kann es nicht einmal wirklich begründen. Irgendwie war man scheinbar bei all den vielen kleinen Entscheidungen "zufällig" immer in die richtige Richtung gegangen.

"Zufällig"? Eben nicht, sondern scheinbar ein Wissen, das man sich unbewusst über all die Jahre angeeignet hat, und das dann so unauffällig und scheinbar mühelos daher kommt:
"Das, was ich weiß, von dem ich aber nicht weiß, dass ich es weiß."
Bauchgefühl eben. Und das hat man scheinbar nicht einfach so, sondern hat es sich mühsam über viele Jahre erarbeitet.

Wednesday, September 27, 2006

Kleine Exkursion zu "bellyfeel"

"Bellyfeel"? Das ist doch das Bauchgefühl im Deutschen! Mein Chef hat z.B. ein Bauchgefühl. Er lässt auch gerne sein Bauchgefühl entscheiden. Nicht, weil er nicht anders könnte, sondern weil vielleicht mit dem Bauch sowieso die besseren Entscheidungen getroffen werden, auch viele Top-Manager hören auf Ihr Bauchgefühl. In diesem Artikel ORF ON Science - Bauchgefühl und Logik: Zwei Arten der Entscheidung, wird allerdings eingeschränkt, dass wir "zu besonders guten intuitiven Lösungen auf Gebieten kommen, auf denen wir Experten sind". Aha.

In jenem Artikel erfährt man auch, dass sich im Bauchbereich mehr als 100 Millionen Nervenzellen befinden, mehr als im gesamten Rückenmark, dass 90% der Verbindungen vom Bauch zum Gehirn laufen, und dass man deswegen durchaus vom "Bauchhirn" oder gar vom "Zweiten Gehirn" sprechen kann.

Ob der Amerikaner allerdings dasselbe mit "bellyfeel" meint? Da bin ich mir nicht mehr so sicher, nachdem "bellyfeel" hauptsächlich in der List of Newspeak words - Wikipedia, the free encyclopedia auftaucht, jener Kunstsprache also, mit der das Denken in George Orwells Roman "1984" beeinflusst werden sollte. Und hier meint "bellyfeel" "blind, enthusiastic acceptance of an idea". Aha! Das ist doch ein wenig anders als die Intuition des Bauchhirns im Deutschen.

Interessant auch, dass es eines der Prinzipien von Newspeak war, dass alle Wörter sowohl als Substantiv (bellyfeel), als auch als Verb (to bellyfeel), als auch als Adjektiv (bellyfeelful), als auch als Adverb (bellyfeelwise) verwendet werden konnten.

Und was heißt dann Bauchgefühl auf Englisch? leo.org sagt: gut feeling, oder gut instinct. Was auch plausibel klingt.

Und wenn man nach "gut feeling" sucht , findet man z.B.: Learn To Trust That "Gut-Feeling" It just might save your life. Ja, das klingt nach unserem "Bauchgefühl"!

Und was heißt "gut" eigentlich genau? Bauch? Hoppala, das heißt eher "Darm"! Aus unserem Bauchgefühl wäre also im Englischen ein "Darmgefühl" geworden. Ja, haben die kein Wort für "Bauch"? Im Gegensatz zu "Magen"? Ja, Magen wäre eher stomache, und Bauch wäre eher "belly" und da sind wir wieder beim "Neusprech"-"bellyfeel"!

Und vermutlich hat George Orwell das "Bauchgefühl" einzueins vom deutschen "Bauchgefühl" ins Englische übersetzt. Und welch andere Bedeutung als "blindes, enthusiastisches Verfolgen einer Idee" sollte es angesichts Deutschland in der Nazizeit dann haben?

Bullshit Buzzwords

Schöner Artikel über Buzzwords say all the wrong things - Signal vs. Noise (by 37signals), mit Verweis auf den nicht minder wunderbaren Artikel Our industry is addicted to bullshit buzzwords, Zitat:

These days, high-tech companies don't release products, they provide solutions. And those products — er, solutions — don't just run a program or play a song. Instead, they enable experiences, optimize agility or even sometimes make people's passions come alive.

Und wenn man sich ein wenig im Internet umschaut, z.B. nach "enable empower adapt leverage" googelt, naja:
delivers unparalleled flexibility so that you can leverage existing technology, quickly adapt to new technology, easily connect with customers, partners, and suppliers, and rapidly adapt as market and business requirements change
Oder so:

... enables companies to succeed in today's economy ... and contributing to your bottom line ... get you started with a fully documented ... reusable prototype that you can turn into a productive solution quickly ... control costs, reduce risk, ... immediately experience the benefits of ... empower your company with ... a proven methodology that leverages a prototype approach to implementation ... proven preconfigurations of any size, for both new and existing customers ... easily adapt techniques ... meet your specific requirements ... put the power of ... in your hands.

Ja, ja, wunderbar, noch mehr:
...provides a suite of ... services that help manage and coordinate ... data and edge operations across a global operation ... creating a solid foundation for all use ... within enterprise-scale applications and business processes...

Fast schon rührend der nächste:

...solutions enabling our clients to make the right decisions at the right time using the right information ...

Aber den besten Bullshit kann doch SAP:

... Enterprise service-oriented architecture (enterprise SOA) is a blueprint for services-based, enterprise-scale business solutions that offer increased levels of adaptability, flexibility, and openness. With ... as its technical foundation, enterprise SOA moves IT architectures step-by-step to dramatically higher levels of adaptability -- and helps companies move closer to the vision of the real-time enterprise ... promise of enterprise SOA is twofold: facilitating business innovation while leveraging existing resources...

Ja! Das führt die "bullshit buzzwords" wahrhaftig zu "dramatically higher levels"! Immer noch nicht genug? Hier lässt sich übrigens Bullshit problemlos erzeugen: dack.com > web > web economy bullshit generator

Thursday, September 21, 2006

Excel und Autofilter mit VBA

Ziemlich schräg daher kommt bei Excel die Verwendung eines Autofilters von VBA aus. Oder ist es eigentlich ganz einfach, und nur die Hilfe ist (wie so oft) eine Katastrophe?

Es gibt nämlich:
  • diesen Autofilter, laut Hilfe:

    Die AutoFilter-Eigenschaft (des Worksheets) gibt ein AutoFilter-Objekt zurück.


    Gibt ein AutoFilter-Objekt zurück, sofern die Filterung aktiviert ist. Ist keine Filterung aktiv, wird Nothing zurückgegeben. Schreibgeschützt.
    Hinweise
    Zum Erstellen eines AutoFilter-Objekts für ein Arbeitsblatt müssen Sie die automatische Filterung für einen Bereich in dem Arbeitsblatt entweder manuell oder mit Hilfe der AutoFilter-Methode des Range-Objekts aktivieren.

  • und diesen Autofilter:

    AutoFilter-Methode (des Range-Objekts)

    Ausdruck.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

    Filtert eine Liste unter Verwendung von AutoFilter. Variant.

    Anmerkung Weisen Sie die AutoFilter-Eigenschaft einem Worksheet-Objekt zu, um ein AutoFilter-Objekt zurückzugeben.

    Was? Ich soll die Eigenschaft einem Objekt zuweisen, um etwas zurückzugeben? Oder vielleicht doch das Objekt der Autofilter-Eigenschaft?? Aber die ist doch schreibgeschützt (siehe oben)???

    Anmerkung
    Wenn keine Argumente angegeben werden, schaltet diese Methode lediglich die Anzeige der Dropdownpfeile von AutoFilter im angegebenen Bereich um.

    Was? Noch ne Anmerkung? Keine Argumente angeben? Also, quasi "range(...).autofilter"? Wieso schreiben die so dämlich, dass "lediglich die Anzeige der Dropdownpfeile" umgeschaltet wird? Wird der Autofilter selber da nicht ein- und ausgeschaltet?

  • und das AutoFilter-Objekt selber:

    Verwenden des AutoFilter-Objekts

    Verwenden Sie die AutoFilter-Eigenschaft, um das AutoFilterObjekt zurückzugeben.
    (...)
    Zum Erstellen eines AutoFilter-Objekts für ein Arbeitsblatt, müssen Sie die automatische Filterung für einen Bereich in dem Arbeitsblatt entweder manuell oder mit Hilfe der AutoFilter-Methode des Range-Objekts aktivieren.

    Die Erklärung hatten wir doch schon mal, oder?

  • und das gibt es auch noch:

    AutoFilterMode-Eigenschaft (des Worksheet-Objekts)

    True, wenn die Dropdownpfeile für AutoFilter momentan im Blatt angezeigt werden. Diese Eigenschaft ist von der FilterMode-Eigenschaft unabhängig. Boolean-Wert mit Lese-/Schreibzugriff.

    Hinweise
    Diese Eigenschaft hat den Wert True, wenn die Dropdownpfeile momentan angezeigt werden. Sie können diese Eigenschaft auf False setzen, um die Pfeile zu entfernen, jedoch nicht auf True, um sie einzublenden. Verwenden Sie hierzu die AutoFilter-Methode, mit deren Hilfe Sie eine Liste filtern und sich somit die Dropdownpfeile anzeigen lassen können.

    Was? Man kann die Eigenschaft auf False, dann aber nicht mehr auf True setzen? Ach, da soll man wieder mit der AutoFilter-Methode...?

  • Hilfe!!
Mich hat das verwirrt. Dass das Worksheet einen Autofilter (Eigenschaft!) und das Range-Objekt einen Autofilter (Methode!) hat, wobei die Methode ohne Parameter (range("b2:d2").autofilter) für b2:d2 einen Autofilter setzt (aber auch ausschaltet, wenn einer aktiv ist...), aber auch so funktioniert, dass bei range("a1:z5000").autofilter die ersten Zellen mit Inhalt für den Autofilter sucht (Automatismus!), dass mit der gleichen Methode (mit Parametern verwendet) aber auch Kriterien für die einzelnen Filter gesetzt werden können (activesheet.Cells.AutoFilter field:=3, visibledropdown:=False), die mit der Filters-Auflistung des Autofilter-Objekts des Worksheet-Objekts dann nur lesend angesprochen werden können (debug.print range(...).autofilter.filters(3).criteria1). Sehr, sehr eigenartig das alles!

Monday, September 18, 2006

Eine gute Idee

Also, wenn man irgendwas mit Web Services in SAP XI einfüttern kann, und Lotus Notes kann Web Services (In dieser Version, oder erst in der nächsten? Ach, egal! Was heißt das eigentlich, dass Lotus Notes Web Services kann? Ach, egal!)! Das ist doch die halbe Miete, oder? Dann schicken wir eine Mail (oder was auch immer) an SAP XI und veranlassen etwas bei SAP! Ja! Wenn das nicht EAI ist? Das könnte man doch mal ausprobieren, oder?

Was sollen jetzt die blöden Fragen, was ich unter einem Web Service verstehe? Oder unter einem Web Service bei Lotus Notes? Was da bei SAP passieren soll? Mensch, wen interessiert das denn? Es geht doch um das Große und Ganze! Um die gute Idee! Das muss man doch einsehen, dass die Idee wahnsinnig gut ist, Lotus Notes mit SAP zu verbinden (wenn die schon beide Web Services können)! Und außerdem hat Lotus Notes jeder! Das alleine ist doch schon Grund genug, oder?

Kokolores mit SOA, SOAP und Konsorten

Holla, mit SOA, SOAP und Konsorten lässt sich doch wieder wunderbar schwafeln, tagträumen, bramarbasieren und schwadronieren, mal ganz abgesehen von, nur zum Beispiel, also SAP meint:
"SAP XI is also a foreshadowing for future enterprise applications. SAP predicts SOA (service-oriented architecture) will be the next stop on the EAI (enterprise application integration) continuum."
Ah, foreshadowing(BTW: Hat "wirft seine Schatten voraus" nicht eine ganz andere Bedeutung im Deutschen?), auch Sun meint:
Service-Oriented Architecture (SOA) and Web Services: The Road to Enterprise Application Integration (EAI)
Man könnte auch sagen (einer von Microsoft?!):
You know I see EAI as a subset of SOA, it’s just one of the ways that SOA is used. B2B would be another one.
Spätestens da ist man fertig, oder? Irgendwie verwirrt. Und eigentlich will man das eh nicht so genau wissen, oder? Entscheidend ist doch das Versprechen, das da drin liegt, die große Verheißung, oder? SERVICE!! WEB!! INTEGRATION!! Ja, muss man denn so pingelig sein, und ständig alles hinterfragen? Warum kann man nicht einfach mal BEGEISTERT sein? Wer will denn nicht endlich mal guten SERIVCE haben? Und das mit der INTEGRATION ist doch auch wunderbar, oder?

Oder ist das doch anders? Eher wie immer, siehe Service Oriented Architectures - Separating Hype From Reality:
When it comes to fads, software technologists are no better than teenagers. We chase the latest thing in hopes it will solve our problems. We falsely assume the next new technology is a step forward. The facts are that we work on hard problems, that technology doesn't always take forward steps,(...)
Und "fad" heißt übrigens irgendwas in der Richtung von "schnelllebige Mode", "Modeerscheinung". Und das letzte Mal, als ich dachte, dass eine neue Software "alle Probleme löst" und ein echter "Schritt vorwärts" ist, war übrigens die Ablösung von Microsoft Exchange/Outlook mit Lotus Notes! Oijoijoijoi, welch ein Missverständnis....

Wednesday, September 13, 2006

Nachtrag zu "Ich kann nicht mehr"

Kleiner Nachtrag zu Ich kann nicht mehr. Wenn ich mir vor Augen halte, was Edsger Dijkstra über Tools sagte:
The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.
Und dann nochmal Paul Grahams Anmerkung, dass Nasty little problems dumm machen..., Was macht dann ein Tool, dessen Bedienung aus nichts als "nasty little problems" besteht? Ja, vermutlich macht es dumm! Es müsste eigentlich dumm machen....

Tuesday, September 12, 2006

Ich kann nicht mehr

Ich kann nicht mehr! Ich muss eigentlich nur eine Kleinigkeit in das "StückScheiße!(nur echt mit dem Ausrufezeichen)" bringen..., aber ich glaube, es wäre einfacher, einen Text in Stein zu meißeln! Wie war das? Ja, eine Software, die mitdenkt! Und im entscheidenden Moment alle Pläne durchkreuzt und jeglichen Erfolg vereitelt. Hinterlistig, arglistig, fies, pervers umständlich, höhnisch langsam, eine Myriade an Absonderlichkeiten, von ganz kleinen Icons, die kaum zu treffen sind, bis zu Buttons, die irgendwas anderes machen als der Text, der auf ihnen steht, einem weismachen will, eine kafkaeske Darbietung, man dreht sich im Kreise, man weiß schon nicht mehr, wo vorne und hinten ist, oben und unten, schwindelerregende Absurditäten, ein Monster an offensichtlichem Unfug, ein Schreckenskabinett an Blödsinn, Bäume, in die man sich hinunternavigieren muss, aber jeder Knoten klappt erst nach endloser Wartezeit auf, oder erst beim zweiten Mal Klicken, oder gar nicht, es ist wie in diesen Alpträumen, in denen man sich nur quälend langsam bewegen kann, ja, wieder ein Knoten, und warten, und warten, der ganze Baum mit ich weiß nicht wie vielen Knoten muss ja neu aufgebaut werden, wenn ich einen Knoten öffne, alles was schon zu sehen war, ist dann weg, und muss neu vom Server geholt werden, tausende Einträge, nein, es müssen hundertausende sein, womöglich Millionen, und dann, und dann, womöglich ein falscher Klick? Was? Nein? Nein!!!! NEEEEEEEEIIIIIIIINNNNNNNN! Das Fenster ist weg!!!!! Du musst von vorne anfangen!!!! Du musst wieder hinuntertauchen in diesen Scheißbaum, aber du hast es ja beim letzten Mal schon kaum mehr ausgehalten, das ist wie Apnoe Tauchen, du sollst jetzt wieder 15 Minuten lang die Luft anhalten?, und dich bis auf den Grund dieser Abscheulichkeit hinunterhangeln, nein, du kannst nicht mehr, das kann kein Mensch von dir verlangen, alles sträubt sich in dir, das ist pervers, du musst raus, du musst Luft holen, nein, ich kann nicht mehr....

Saturday, September 09, 2006

Was geht denn jetzt ab?

Nicht nur, dass Tim Bray an der Spezifikation von XML und XML Namespaces beteiligt war, dass er der "Director of Web Technologies at Sun Microsystems" ist, nicht nur, dass er Ruby attraktiv (was?), und dafür sehr nette Worte findet (s. ongoing · On Ruby) (nein, wirklich?):
"Ruby is remarkably, perhaps irresistibly, attractive....unreasonable amount of work done in a ridiculously short period of time...intuitive enough...getting it right first time...Ruby code shouts its meaning out louder and clearer than any other language...find Ruby easier to read, only a week in...low barrier to entry...results in me writing little teeny methods..."
Nein, und jetzt werden auch noch auf seine Initiative hin zwei OpenSource Entwickler bei SUN eingestellt, die bisher an JRuby, einer Portierung des Ruby-Interpreters nach Java, gearbeitet haben, und dies jetzt hauptberuflich bei SUN fortführen sollen.

Was geht da ab? SUN goes Ruby? Sollte ich das jetzt mal anführen, wenn mir wieder mal Unverständnis über die Verwendung von Ruby entgegenschlägt? Dass selbst einer der Direktoren bei SUN, und übrigens einer der Väter von XML, und überhaupt, auch.....?!

Friday, September 08, 2006

"Enterprise Software"

Justin Gehtland hat angesichts der immer wieder aufflammenden "Was ist Enterprise Software?"-Debatte in einem sehr erhellenden Artikel eine Unterscheidung in "Enterprise-class software" und "software that runs the enterprise" vorgenommen.

Enterprise-class software sind demnach "diese Monster, die 10 Millionen Transaktionen pro Minute ausführen, die über 5 Datenbanken und drei verschiedene Hardwareplattformen verteilt sind. Sie brauchen drei Jahre, um entwickelt zu werden, und weitere drei Jahre, bis sie wirklich brauchbar sind".

Software that runs the enterprise, auf der anderen Seite, sind für ihn beispielsweise "das interne Portal, um Ansprechpartner in einer bestimmten Abteilung zu finden, das Programm, das in der Marketingabteilung aus zig Word- und Exceldateien Kontaktdaten extrahiert, das Programm, das automatisch Amazon nach Produkten der Firma absucht und zur späteren Analyse bereitstellt", alles an EDV also, mit dem "jeder in der Firma letztlich zu tun hat". Die Software, mit der diese Firmen betrieben werden.

Und es ist keine Frage für ihn, dass "Enterprise-class software" in der Regel mit Java oder .NET geschrieben würde, dass sich aber für die "Software that runs the enterprise" mehr und mehr und durchaus ernsthafte Leute Ruby und Rails zuwenden. Eben weil "sich Tag für Tag eine unendliche Anzahl von Anforderungen ergibt", sei es die "Eingliederung neu hinzugekommener Geschäftsbereiche", "Änderungen in der technischen Infrastruktur",morganisationen, weil sich all diese Variablen immer schneller ändern, muss sich die Software anpassen, um mithalten zu können. Und gerade dynamische Sprachen wie Ruby sind dazu in der Lage.

Und er malt im letzten Absatz eine Welt, in der jeder versteht, dass "The Enterprise" sehr verschiedene Ansprüche hat, und dass es eine große Bandbreite an Werkzeugen gibt, diese zu befriedigen. In der pragmatisch das Werkzeug gewählt wird, das am geeignetsten ist. Und dass sie ganz tief davon überzeugt sind, dass Ruby und Rails einen wirklichen Umschwung für die Fähigkeiten ihrer Softwareplattformen und Entwicklungsteams darstellt. Und dass dies Großartiges für "The Enterprise" bedeuten kann.

Problem and Solution

Und noch ein kleines Fundstück aus Code Complete, Second Edition:
Overly costly, ineffective designs arise from three sources:
  • A complex solution to a simple problem
  • A simple, incorrect solution to a complex problem
  • An inappropriate, complex solution to a complex problem
Ja, ja, "complex solutions to simple problems", ein echter Klassiker, siehe dazu auch Rube Goldberg Contraptions weiter unten. Andererseits ein Segen für jede EDV-Abteilung, quasi der Königsweg sich unentbehrlich zu machen! Wo kämen wir denn hin, wenn man einfachen, überschaubaren, verständlichen Lösungen den Vorzug geben würde? Ojeoje, das wäre der Anfang vom Ende!

Thursday, September 07, 2006

Fahnenfreudigkeit

Nachdem Deutschland zur Weltmeisterschaft ja den kollektiven Flaggen- und Fahnenrausch entdeckt hatte, war eigentlich klar, dass das nicht gleich das Ende sein konnte, aber überrascht war ich dann doch, als ich in der heutigen lokalen Tageszeitung folgende Anzeige las:
Wir haben die Papstflaggen!
Autoflagge 5.- Euro
Stockflagge 4.- Euro
Erhältlich bei Ihrer Lokalzeitung
Solange Vorrat reicht!
Papstflaggen! Wieso heißen die eigentlich nicht Papstfahnen? Oder sind das Vatikan-Flaggen/Fahnen? Hat der Vatikan eine eigene Flagge? Sollte er als Staat natürlich haben, oder? Ist es normal, dass auch ein Papst eine eigene Flagge hat? Hatte jeder der Päpste eine eigene Flagge? Oder gibt es eine für alle? Ist dies dann eine Papst-Benedikt-Flagge? Hätte es ohne WM dieses Jahr auch "Papstflaggen!"(nur echt mit dem Ausrufezeichen) gegeben? Ach, man muss nur googeln, und schon erfahren wir bei heute.de - Papst-Bär und Weihrauchbier, dass nämlich:
Der Zentralpräses der rund 6000 Mitglieder starken Congregation hatte die Idee zur "Papstflagge" - korrekter zur Autoflagge des Vatikanstaats, mit Tiara und gekreuzten Schlüssen. "Wir wollen an die Fahnenfreudigkeit der WM und des Weltjugendtages anknüpfen. Für uns Katholiken ist es eine große Freude, einen deutschen Papst zu haben. Die Flagge ist ein Zeichen öffentlicher Solidarität und des Glaubens. Meine Vision ist, dass bald alle nur noch beflaggt durch Regensburg fahren." Der Prälat hat die Autoflagge bereits auf der Autobahn getestet: auch bei 120 bis 140 Stundenkilometer noch gute Haltbarkeit. Über 700 Bestellungen liegen bereits vor, die Lieferung erfolgt stückweise á 100 bis 150.
Fahnenfreudigkeit! Welch Wort, sofort googeln:
"Wir wollen an die Fahnenfreudigkeit der WM und des Weltjugendtages anknüpfen", erklärte Prälat Heinrich Wachter, Zentralpräses der Marianischen ...

"Wir wollen an die Fahnenfreudigkeit der WM und des Weltjugendtages anknüpfen. Für uns Katholiken ist es eine große Freude, einen deutschen Papst zu haben. ...

Beeindruckend! Genau 2 Treffer! Das Wort "Fahnenfreudigkeit" hat scheinbar Prälat Heinrich Wachter überhaupt erst erfunden?! Vielleicht ein Geheimtip für das (Un)-Wort des Jahres?

Aber nochmal zur Papstflagge, zur "Autoflagge des Vatikanstaats" (heute.de). Was ist denn die offizielle Flagge des Vatikanstaats? Aha, Flagge Vatikan, Flaggen Vatikan, Fahne Vatikan, Fahnen Vatikan, Vatikanfahne, Vatikanflagge - Europa meint dazu:
zwei vertikale Streifen (gelb, weiß) mit den gekreuzten Schlüsseln des heiligen Petrus auf dem weißen Streifen.
Ach so, dann war das ein Tippfehler bei heute.de ("mit gekreuzten Schlüssen"), das sind "gekreuzte Schüsseln", kruzifix, jetzt habe ich mich auch noch vertan, nein, es sind "gekreuzte Schlüssel"!

Aber was war jetzt die Idee von Heinrich Wachter?
Die normale Vatikanflagge als "Papstflagge" zu vermarkten (um an die "Fahnenfreudigkeit" der Deutschen anzuknüpfen (ach Blödsinn, er sagte, "Fahnenfreudigkeit der WM"))?

Fahnenfreudigkeit der WM? Papstflagge? Ja, soll das alles sein? Warum sollte der Papst nicht an die WMFreudigkeit anknüpfen? Und bei einem ökumenischen Benefizspiel in Altötting gegen eine evangelische Auswahlelf antreten?

Managing Complexity

Angeblich ein Klassiker unter den Büchern über Software soll "Code Complete" von Steve McConnell sein. Es wurde kürzlich als "2nd Edition" neu herausgebracht, und hat auch ein Heim im Internet: Code Complete 2 - Code Complete, Second Edition Im online verfügbaren Kapitel 5 fielen mir folgende Anmerkungen zum Thema "Importance of Managing Complexity" auf:
The goal is to minimize the amount of a program you have to think about at any one time. You might think of this as mental juggling-the more mental balls the program requires you to keep in the air at once, the more likely you’ll drop one of the balls, leading to a design or coding error.
Oh ja, die Problematik kenne ich nur zu gut! Obwohl das Bild, das ich immer vor Augen hatte, ein wenig anders war: Viele, viele Fäden, die ich irgendwie mühsam zusammen halten musste und keinen verlieren durfte! Und man hat ja nur zwei Hände frei, kann vielleicht noch irgendwas unter die Achsel klemmen, vielleicht noch etwas mit dem Fuß balancieren, vielleicht noch.....
Humans have an easier time comprehending several simple pieces of information than one complicated piece. The goal of all software-design techniques is to break a complicated problem into simple pieces. The more independent the subsystems are, the more you make it safe to focus on one bit of complexity at a time. Carefully defined objects separate concerns so that you can focus on one thing at a time.
Ja! Ja! D'accord! Es gelingt sogar schon......manchmal. Ich glaube, dass ich schon ein wesentlich besseres "Gefühl" entwickelte habe ein "complicated problem" in "simple pieces" aufzubrechen, aber es ist jedes Mal wieder ein Unterfangen mit ungewissem Ausgang. Da gibt es kein Patentrezept, es hat eher was mit "Intuition" zu tun (die sich mit jedem Versuch weiter schult, und die auch gerne trügt).
Keeping routines short helps reduce your mental workload.
Ja, unbedingt! D.h., vor nicht zu langer Zeit kam es mir noch sehr merkwürdig und eigentlich übertrieben vor, Ruby-Methoden von anderen mit einigen wenigen Zeilen, manchmal nur einer(!) Zeile Code zu sehen. Inzwischen stört es mich fast schon, wenn eine Methode länger als 10 Zeilen ist, und auch den Einzeiler habe ich inzwischen hingebracht (und ich hatte gute Gründe dafür!):

def meth_for(name)
obj_for(name).method(name)
end
Genau.
Writing programs in terms of the problem domain, rather than in terms of low-level implementation details, and working at the highest level of abstraction reduce the load on your brain.
Ja! Ja? Beispiel? Vielleicht, ja vielleicht, ganz winziges Beispiel, also nur zum Beispiel:
"if doc.savable? then...." => "wenn das Dokument speicherbar ist, dann..." (fast schon Klartext)
im Gegensatz zu
"if doc.parameters.additional_bits.s = 1 then...." => Jedes Dokument hat Parameter, da wurden irgendwann mal noch einige Bits dazugefummelt, von denen eins aussagt, ob das Dokument speicherbar ist, ich glaube, es war, wenn "s" auf 1 gesetzt ist....

-------------------
Nachtrag, weil ich in Tor Norbye's Weblog (SUN Mitarbeiter, der mit dem Project Semplice (Visual Basic for the Java platform) zu tun hat) folgendes entdeckte:

Die Problemdomäne für die Umrechnung von Fahrenheit nach Celsius ist diese Umrechnungsformel:
celsius = (fahrenheit - 32) * 5/9
In Basic könnte man dies bei einem Knopf, der den Inhalt des Textfelds "fahrenheit" in Celsius umrechnet und dann in das Label "celsius" schreibt, so hinterlegen (kaum ein Unterschied):
celsius.text = (fahrenheit.text - 32) * 5/9
Mit Java würde das so aussehen (Wie gut ist die Formel hier noch zu lesen und zu erkennen?):
celsius.setText(Integer.toString((Integer.parseInt(fahrenheit.getText())-32)*5/9));

Wednesday, September 06, 2006

Und wirklich gute Software?

Nachtrag zu Unbeschreiblich mies , weil ich User Experience - Decrease Stress, Increase Joy aufgelesen habe:
There are two kinds of software experience you want for your end users,
  1. Invisibility - the software they use in their daily life enables them, doesn't get in their way and certainly doesn't make them want to hurl the computer out the window.
  2. Smile on My Face - something about the way the software empowers them, what it lets them create, makes them feel like they want to go show Mum what they just did.
Hmm, "Invisibility", und das ist vielleicht der Punkt, wirklich gute Software ist in der Regel völlig unspektakulär, sie geht nicht im Weg um (nett: "doesn't get in your way..."), sie nimmt sich zurück. Und wirkt durch ihre "Unsichtbarkeit", mal kurz und oberflächlich von außen betrachtet, vielleicht nicht sonderlich beeindruckend. Was dann schon wieder direkt unfair ist....

Eindruck schinden natürlich jene Katastrophenschöpfungen und Missgeburten, mit denen man zunächst mal rein gar nichts, mit sehr viel Schweiß, Mühen, Nerven und Aufwand nach Lösung diverser "nasty little problems" zumindest ein bisschen was zustande bringt...

Nasty little problems machen dumm...

Was sagt Paul Graham in seinem Artikel Great Hackers u.a.:
It's pretty easy to say what kinds of problems are not interesting: those where instead of solving a few big, clear, problems, you have to solve a lot of nasty little ones.

Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers.
Da sag ich jetzt einfach nichts dazu, oder? Das lasse ich jetzt einfach kommentarlos stehen, oder?

Schönes Englisch: Wanderlust

Holla, das gibt es wahrhaftig im Englischen: wanderlust
Etymology: German, from wandern to wander + Lust desire, pleasure
Gefunden im Dog Owner's Guide Profile: The Beagle:
The Beagle is a well-muscled, small-to-almost-medium-sized dog with a keen sense of smell and a wanderlust that can lead him into trouble.
Direkt gemütliche Hunde scheinen das ja nicht zu sein...

Tuesday, September 05, 2006

Unbeschreiblich mies

Es gibt Programme, und eins hatte ich heute wieder in der Hand, und es tut überhaupt nichts zur Sache, um welches Programm es sich im Einzelnen handelte, es gibt viele in ähnlicher Art, es ist eine eigene Gattung an Software, die Gattung der wirklich schlechten Software, Programme also, die so ärgerlich, so unbeschreiblich schlecht, so mies sind, dass man um Worte ringt, dass es wirklich schwierig, fast schon anstrengend wird, genügend obszöne Worte, einigermaßen adäquate Schimpfworte und Kraftausdrücke zu finden, die auch mit "Stück Scheiße" (wörtlich aus dem Englischen übertragen von "piece of crap", die hätten dann noch "pile of crap" (Haufen Scheiße?) oder "steaming pile of crap" (dampfender Haufen Scheiße?)) nicht annähernd zu charakterisieren sind, auch nicht mit "Dreckstool" (siehe auch www.dreckstool.de), Programme, deren Anschaffung einer Lizenz zum Geldverbrennen gleich kommt, Programme, deren Bedienung bei jedem Klick körperliches Unbehagen verursacht, fast schon Übelkeit, auf jeden Fall Widerwillen, aber wie komme ich darauf, ach ja, es gibt Programme, und eins hatte ich heute wieder in der Hand, und es tut überhaupt nichts zur Sache, um welches Programm.....