Friday, February 23, 2007

Microsoft Access, eine Klasse für sich

Nachdem ich mich nochmal ganz fürchterlich über Microsoft Access aufregen musste, nun doch zur Frage, was einen an dieser Software so wahnsinnig machen kann. Vielleicht liegt es an dem eigenartigen Spagat, dass es einfach eine stinkenormale relationale Datenbank ist, mit allen Haken und Ösen, mit allen Komplexitäten (referentielle Integrität, m:n Beziehungen, usw.), aber beständig und krampfhaft versucht wird dies vor einem zu verheimlichen. Auf Biegen und Brechen, mühsam und angestrengt, mit Verrenkungen und Kapriolen, mit Assistenten und "gutgemeinten" Dialogen, letztendlich aber doch nur lückenhaft und unvollständig.

Letztendlich steht man Joel Spolsky's so formuliertem Law of Leaky Abstractions gegenüber:
"All non-trivial abstractions, to some degree, are leaky."
So gutgemeint Abstraktionen auch sein mögen, bis zu einem bestimmten Grad sind sie löchrig, d.h. sie schaffen es nicht vollständig, die Komplexität, die sie abstrahieren sollen zu verdecken.

Wobei der Grad der Löchrigkeit eigentlich ganz egal ist, weil jedes noch so kleine Loch einen irgendwann dazu zwingt sich mit den zugrundeliegenden Details zu beschäftigen.

Wobei sich das Verhältnis von "gelungener Abstraktion" zu "Löchrigkeit der Abstraktion" in Access allerhöchstens die Waage hält. Das sind dann auch nicht wirklich Löcher, das sind Scheunentore. Man könnte auch sagen, dass der Abstraktionsversuch letztendlich misslungen ist. Komplett misslungen. So was von misslungen!

Was heißt das? Zunächst mal: Ärgerlich! Ärgerlich!! ÄÄÄÄÄrrrrrggggerrrrliich!!!!!!!!!!!!! Was heißt das noch? Mit unendlich viel Aufstand wurde eine Missgeburt erzeugt! Ein Software-Frankenstein! Eine armselige Kreatur! Ein bemitleidenswertes Geschöpf!

Aber ist das vielleicht Microsoft-typisch? ASP.NET versucht ja auch, sämtliche kleinen Details von HTTP und Browsern und wasweißich wegzuabstrahieren! Und, klappt das etwa?

Was heißt das? Heißt das, dass die vermutlich Mannjahrhunderte versemmelt haben, um eine relationale Datenbank benutzerfreundlich und verständlich erscheinen zu lassen, und es nicht einmal annähernd erreicht haben?

Ja, diese Unentschiedenheit! Wie heißt das auf Englisch? To be everything to everyone. Irgendwie alles für jeden zu sein.

Warum haben die ihr Talent, ihre Begeisterung, ihre Zeit nicht für etwas wirklich Interessantes eingesetzt? Eine Datenbank, die einen SQL-Phobiker wie mich wirklich, nochmal: wirklich, ich meine: wirklich!! von diesem ganzen krampfigen Popanz mit m:n Beziehungen und referentieller Integrität und Fremdschlüsseln und anderen Schlüsseln und Schüsseln und was weiß ich ---- einfach erlöst!

Stattdessen bauen sie Dialogboxen und übersetzen diese in zig Sprachen, die mit Begriffen wie "Beziehungen" daherkommen, "Beziehungen bearbeiten", mit "Referentieller Integrität" und "Aktualisierungsweitergabe an verwandte Felder", Mensch, ich habe genug zu tun mit meinen Beziehungen und meiner Verwandschaft!! Und euer "Verknüpfungstyp..." interessiert mich nicht die Bohne!

Was heißt hier "löchrige Abstraktionen"? Das ist die Titanic, nachdem sie mit dem Eisberg zusammenstieß!

Letztendlich muss man Berge von Abstraktionsschrott, Abstraktionsmüll wegräumen, um ungefähr in eine Region vorzudringen, wo man ein wenig Produktives zustande bringt.

Für mich machen die nicht Schwieriges einfach, nein, ein lustiges Vexierspiel wird angezettelt, vordergründig Schwieriges stellt sich als einfach heraus, Einfaches als schwierig, Simples als unmöglich... Nichts ist, was es ist.

Ein wenig Wahrheit dann doch im "Beziehungen bearbeiten"-Dialog: Beziehungstyp: Undefiniert.

Ach, leckt mich doch....

Alptraum!!! Nightmare!!!!!! Microsoft Access")=§($&"§$ZU)=H

Den mit Abstand allergrößten Bullshit kann man wahrscheinlich mit Microsoft Access erleben. Ein Alptraum. Ein echtes Desaster, eine Katastrophensoftware sondergleichen!! Nicht vergleichbar mit dem Stück Scheiße , nein, Microsoft Access schafft es in noch ganz anderen Dimensionen ärgerlich, fürchterlich, unerträglich, bescheuert, beschissen, krampfig zu sein!!! Dieser ganze krampfige Kuddelmuddel und Firlefanz, diese Eigenschaftenfenster mit Hunderten Optionen, diese dämliche Syntax mit eckigen Klammern, die man aber doch nicht immer braucht, oder Ausrufezeichen, die man aber auch weglassen kann, aber nicht immer, was soll denn sowas??? Für wie masochistisch halten diese Softwareentwickler einen eigentlich!! If Me.Dirty Then Me!btnUndo.Enabled = True... kein Witz, die haben doch einen an der Waffel!!!! Ganz zu schweigen von diesen sogenannten Assistenten, die die eigenen Pläne im entscheidenden Moment durchkreuzen... Inzwischen scheitere ich an einer Kombobox...es ist unendlich frustrierend. Dieses Meer an Optionen, Irrwegen, das ist ähnlich hoffnungslos wie das Suchen einer Stecknadel im Heuhaufen! Wahrscheinlich werden tausendseitige Machwerke über Komboboxen geschrieben, das ist halt nicht so einfach, haahaahaaa! Man fühlt sich wie in so einem Jahrmarktsirrgarten mit Spiegeln, der nur dazu gemacht ist, auf umständlichste Art und Weise und unter ständigem Anhauen diverser Körperteile zur Belustigung der Umstehenden wieder herauszufinden....

Wednesday, February 21, 2007

Project Code Names

Wie bin ich heute auf Project Code Names gekommen?
  • Ach ja, weil Netvibes seine nächste Version Coriander nennt (nach Anise und Cinnamon). Nett, und die Namen von Gewürzen werden denen so schnell nicht ausgehen.
  • Wobei mir sofort die Raubkatzen von Apples Betriebssystemversionen einfielen, die ich immer verwechselt und nie auseinanderhalten konnte: Jaguar, Tiger, Panther, Leopard, .... (Wieviel Raubkatzenarten gibt es eigentlich?)
  • Wobei Microsoft oft Städtenamen bevorzugte: Chicago (Windows 95), Memphis (Windows 98), ..., siehe auch List of Microsoft codenames - Wikipedia, the free encyclopedia.
  • Wobei der Codename der nächsten Version von Lotus Notes auch nach einer Stadt (the next generation of lotus notes hannover), und zwar Hannover, jaja, der deutschen Stadt, die bei einer Spiegelumfrage zur langweiligsten Stadt der Republik..., immerhin auf dem zweiten Platz landete (Hannover - Wikiquote). Wie war das noch? Nomen est omen?
  • Ein weites Feld, manchmal erhalten selbst Programmiersprachen (absichtlich oder nicht) den Namen von Kinderkrankheiten (A Case of the MUMPS - The Daily WTF), was natürlich eine weite Welt eröffnen würde: Codenamen wie MASERN, RÖTELN, SCHARLACH....(was zumindest den Stand so mancher Software exakt beschreiben würde)!
  • Es gibt natürlich auch ziemlich schlimme Software. Dann vielleicht Codenamen wie: PEST, CHOLERA?
  • Katastrophale Software: TSUNAMI, SCHLAMMLAWINE?

Tuesday, February 13, 2007

Lokalzeitung, letzte Seite

Und manchmal liegt die Lokalzeitung einfach so herum, mit der letzten Seite oben, und man schaut eigentlich gar nicht hin, warum auch, was ist schon interessant an dieser letzten Seite mit diesem eigenartigen Sammelsurium von persönlichen Glückwünschen mit Bild ("Da Rupp, der oide Sack, hod jetzt 22 Jahr auf'm Gnack!"), Ankündigungen irgendwelcher Gastwirtschaften ("Montag Salat-Tag"), winzigen "Kontaktanzeigen" ("Sxx-Treff gesucht?"), naja, dann schaut man doch mal hin, weil die Zeitung eben gerade so daliegt, und plötzlich springt es einen förmlich an:
  • "Skisafari in Südtirol"
    Um Gottes willen, was ist eine Skisafari? Heißt das so, weil es so schön alliteriert, S..s...S...? Ist man da mit Schiern unterwegs und knipst Gemsen? Oder schießt auf sie?!
    "Urbino, die schönsten Hügel Italiens"
    Ich habe noch nie in meinem Leben von Urbino in Italien gehört?! Tippfehler? Hoppala, nein, Provinz Pesaro und Urbino (Wikipedia) liegt in den Marken (und da mag es durchaus schöne Hügel geben, oder?)!
  • "Bullenbrustkern", "Tilapiafilet"
    Das eine was für "Fischkenner", das andere "ideal als Tellerfleisch".
  • "Pulsator-Prüftage, Lassen Sie ihre Pulsatoren überprüfen! Geprüft werden Pulsatoren aller Fabrikate!"
    Ich weiß nicht, was ich eher assoziieren soll...., ein Starkbier (...Triumphator und so...)? Einen Herzschrittmacher? Eine neue Generation von Vibratoren? Einen Massagesessel? Was sagt das Internet dazu? Beispielsweise hier: Pulsator Informationen Hersteller, Zulieferer und Händler?
    "Der Luftstrom tritt in einen Pulsator ein, mit welchem eine periodische Anregung mit definierter, einstellbarer Amplitude und Frequenz möglich ist. Der Volumenstrom strömt durch eine Wirbelfadendüse,..."
    Was? Ojeoje! Ist das doch so ein Dings, so ein....., so ein..., ach, was weiß ich! Sxxdings (jetzt isses raus).
  • "Unsere Praxis bleibt vom 19. bis zum 32.2.07 geschlossen"
    Jetzt hat der Februar maximal 29 Tage, heuer sogar nur 28, aber selbst längere Monate kommen höchstens auf 31 Tage. Wie kommen die auf den 32. Februar? Hat da einer gesagt: "Ich weiß nicht, bis wann wir geschlossen haben, auf jeden Fall ab 19. Dezember für 14 Tage..." und dann ein anderer: "19, 20, 21, 22, ..., 31, 32!"
Das wars eigentlich. Und alles auf nur der Hälfte der letzten Seite.

Thursday, February 08, 2007

In Memoriam

In einem Anfall von .... interessierte ich mich für Microsoft Access und Word und Serienbriefe, kam hier vorbei: Bugs: Mailmerge starts new instance of Access (samt schrägem Workaround, wunderbar), und ich weiß jetzt auch nicht, warum mir gerade dies auffiel (caught my attention), dass ganz unten im Menu, nach "..., Reports, Modules, APIs, Strings, Date/Time, ...." der Punkt In Memoriam (!) stand:
In Memoriam
Cheryl Fischer
Microsoft Access MVP
Born August 5, 1944 - Died July 20, 2004

Nicht ganz 60 Jahre wurde sie alt, oder? Und das hat mich dann doch sehr gerührt, auch folgende Anmerkung auf der Seite (und ganz abgesehen davon, dass mir Microsoft Access eigentlich fürchterlich auf den Senkel geht...):
SELECT [Cheryl] INTO [PeacefulRest]
FROM [Earth]
HAVING [Talent]="Exceptional";
(...und ich nicht wirklich weiß, warum man manches in [eckige] Klammern schreiben muss...). Wobei mir Frank Kabel einfällt, ein Excel-MVP, der...(siehe Excelformeln - FORMELN - Übersicht - Tabellennavigation (9) - Letzte benutzte Zelle in einer Zeile oder Spalte (Frank Kabel in memoriam)):
=VERWEIS(2;1/(A1:A65535<>"");ZEILE(A:A))
=VERWEIS(2;1/(A1:A65535<>"");A:A)
Diese geniale Formel erhält den Namen: "Frank Kabel - Lösung".
(Frank verunglückte tödlich im Januar 2005.)
Fotos von u.a. Frank Kabel bei Infos. Eine, die ihn kurz zuvor noch traf ist Monika Weber aus der Schweiz (ebenfalls Excel-MVP), der sogar in Japan ein schwarzer Gürtel als "Cell Master" (This black belt is yours) verliehen wurde: Colo's Excel Junk Room - the road of the cell masters : Monika Weber, und die scheinbar Orchideen mag und hegt und pflegt. Eine "Kauffrau mit Eidgenössischem Fähigkeitsausweis"(!! Was ist denn das? Wie kann man das erwerben?). Da fällt mir nur noch but she's a girl... ein (es gibt eh so wenige girl geeks(?), geek girls(?) in diesem Metier, sie scheint eine davon zu sein, eine selbsterklärte "femina geekoides"). (Abgesehen von Christine mit ihrem "fotografischen Gedächtnis").

Und wann ist das nächste "Girl Geek Dinner"? Ah, da: Upcoming.org: London Girl Geek Dinner 10 Sponsored by Amazon! at Balls Brothers (Wednesday, February 21, 2007)
Wo ist Balls Brothers? Aber da ich weder im Februar in London noch Girl bin....ach....

Monday, February 05, 2007

Was mögen Programmierer jetzt am liebsten?

Scott Rosenberg zitiert in seinem wunderbaren Buch "Dreaming in Code" Larry Constantine, der wohl behauptete, dass Programmierer hauptsächlich programmieren wollen (und nicht etwa den Code von anderen lesen, verstehen und womöglich wiederverwenden wollen):
And programmers, as I quote Larry Constantine in my book, programmers are programmers because they like to code -- given a choice between learning someone else's code and just sitting down and writing their own, they will always do the latter.
Wobei Larry Constantine das angeblich noch um einiges prononcierter ausdrückte:
"Unfortunately, most programmers like to program. Some of them would rather program than eat or bathe. Most of them would much rather cut code than chase documentation or search catalogs or try to figure out some other stupid programmer's idiotic work.... Other things being equal, programmers design and build from scratch rather than recycle."
Interessant ist die Entgegnung von Jonathan Rentzsch, der meint, dass Programmierer nicht wirklich gerne programmieren, sondern gerne Probleme lösen würden (wobei das oft notgedrungen das Schreiben von Code beinhalten würde):
Summing up: programmers don’t like to code, we like to solve problems. Coding is not problem solving, but software problem solving usually involves some coding. Even when we talk about rewriting something, the objective is not to code, it's usually to get a better understanding of the problem for solving in the best possible manner.
Rafe Colburn meint dagegen hier:, dass es einfach solche und solche gäbe (die Codeschreiber aus Passion, und die, die möglichst wenig Code schreiben wollen):

I think the truth lies somewhere in the middle. I have worked with programmers who, asked to write a feature, never even look at a language's class library before hacking something out themselves. They like to code for the sake of coding.
As a programmer, I'd prefer to do as little programming as possible. I try to make use of libraries when they're available and to find the best tools possible in order to help me avoid both coding and debugging. I like working with programmers who work the same way, because maintenance is rarely any fun.

Und wozu rechne ich mich? Also, eigentlich zu den Wenigcodern. Den Minimalcodern. Probleme mit wenig Code lösen! Kurze, prägnante, simple, sprechende, verständliche Programme, die sich geschickt vorhandene Lösungen/Bibliotheken/APIs/wasauchimmer zunutze machen. Erst lange suchen, dann vielleicht coden! Ja, eindeutige Präferenz zunächst nach vorhandenen Lösungen zu suchen, und nur im Ausnahmefall zu "coden". Nur die ganz simplen Lösungen sind die wirklich "schönen" und "befriedigenden".

Aber da hat wohl jeder so seine Präferenzen, oder?