Friday, December 29, 2006

Was es alles gibt...

Faszinierend, verwirrend....
  • Barcamps - BarCamp - Wikipedia
    "Der Name ist eine Anspielung auf eine von Tim O'Reilly initiierte Veranstaltungsreihe names FooCamp und bezieht sich auch auf den Begriff Foobar."
    FooCamp! Foobar! Unkonferenzen! Ojoijoijoi!
  • Girl Geek Dinners - fing alles mit London Girl Geek Dinners an, die Initiatorin wollte einfach mehr an "Technik" interessierte Mädels kennenlernen:
    "Someone who is female and has an interest in technology, particularly computing and new media. Not necessarily technically minded."
...wir machen erstmal einen stinkenormalen "Stammtisch".

Tuesday, December 26, 2006

Fundstück

ЕДЕЛВАЙС! Eine bulgarische Limonade heißt so. Was daran interessant ist? Auf der Rückseite steht es mit lateinischen Buchstaben: EDELVAIS! Lemonade, Light. Und ein Symbol auf dem Etikett bestätigt die Vermutung: Edelvais scheint wahrhaftig Edelweiß zu heißen! Warum auf dem E ein bunter Papagei sitzt? Keine Ahnung. Warum eine Limonade überhaupt Edelweiß heißt? Keine Ahnung.

Friday, December 08, 2006

Single Point of Failure

Als ich das erste Mal auf den Begriff "Single Point of Failure" stieß, hatte ich spontan die Vorstellung, dass dies beim Design einer Softwarelösung erstrebenswert sei. Wenn es nur einen Punkt des "Schieflaufens" gäbe, dann wäre die Fehlersuche/analyse doch um einiges einfacher, oder?

Es wurde mir bald klar, dass das anders gemeint war, aber wie? Dass es besser sei, viele Points of Failure zu haben? Lieber viele Points von kleineren Failures als einen großen? Auch komisch.

Ja, was sagt denn die Wikipedia dazu? Im Artikel Reliable system design (Wikipedia)
liest sich das so:
"Single point of failure describes any part of the system that can, if it fails, cause an interruption of required service. This can be as simple as a process failure or as catastrophic as a computer system crash."
Ach so, in etwa "jedes Teil in einem System, das bei Versagen einen Ausfall des Gesamtsystems (oder Services oder wie man das nennen will) zur Folge hat.

Man sollte also Punkte vermeiden, die das Gesamtsystem lahmlegen könnten. Es ist keine Aussage darüber, ob man viele Fehlerpunkte oder wenige oder womöglich nur einen hat oder haben sollte. Interessant. Würde das vielleicht besser "one point of complete failure" oder "single point causing complete desaster" oder "catastrophy points" heißen?

Ach, wie auch immer. Die meisten Systeme, die ich kenne, haben jede Menge Points of Failure. Nur ein "single point of failure"? Eine phantastische Vorstellung!

Friday, November 17, 2006

Einmal Java und zurück / 3

Jetzt schon der zweite Nachtrag zu Einmal Java und zurück / 1, weil mir jetzt noch Camping, a Microframework von Why the Lucky Stiff eingefallen ist. Ja, so kann man Webapplikationen auch machen:
Camping encourages short, elegant applications. In this example, we're going to skip the database and put together a simple home page with a few of your favorite links.
Ja, das will ich ausprobieren:
This tutorial is five pages long and takes about ten minutes. By the end you should have a little Camping site up. The last couple of pages is all database stuff, so you can quit a little early if you won't be using a database.
Zehn Minuten hat es bei Appfuse gedauert, bis alle Tests durchlaufen waren....

Einmal Java und zurück / 2

Und nach einigen Tagen intensiverer Beschäftigung mit Java, siehe Einmal Java und zurück / 1 dann noch auf den Weblog von Zed Shaw gestoßen, der meinem diffusen Unbehagen bereits wunderbar Ausdruck verliehen hatte:
"The experts will then saunter off to implement their Flaming Tower of Babel without any comments, horribly complex mock enabled tests, making sure EVERY SINGLE CLASS HAS AN INTERFACE, and ending every class with “Impl” because, well, that’s the best practice."
Ja, "Impl" hatte ich auch genug gelesen, und "Dao" und "Service", und Interfaces gab es auch jede Menge! Obwohl mich das Komplizierte durchaus auch schon beeindruckt hatte:
"What I notice is that my peers are progressing to more and more complicated and convoluted designs. They are impressed with the flashiest APIs, the biggest buzzwords, and the most intricate of useless features. They are more than happy to write endless unit tests to test their endless refactoring all the while claiming that they follow XP’s “the simplest thing that works” mantra."
Und ich stellte mir schon insgeheim die Befriedigung vor, das womöglich zu verstehen und zu durchblicken.... (Ich! Im Gegensatz zu allen anderen natürlich.) und hatte direkt vergessen, dass es anders, dass es vielleicht auch einfacher gehen könnte:
"I used to be this way. I used to love complicated designs and read everything I could about complicated technologies. But as I get more experienced and “older” as a programmer I find complex things just annoying. They aren’t a mental challenge to understand anymore, they are just irritating. I’ll pick apart the flashy crap, boil down the technology to its essence and then come up with a much simpler design for the task at hand almost every time."
Hhhmmm. Vielleicht sollte man es doch simpel versuchen...

Einmal Java und zurück / 1

Mit gehörigem Ehrgeiz habe ich mich in den letzten Tagen auf eine Expedition in das Javaland begeben. Ach, was heißt Java, es sollte schon Webentwicklung mit JSF, Spring, Hibernate, und Best Practices, und, und... sein. Verheißungsvoll wie das Springframework (Booohh!):
"As the leading full-stack Java/J2EE application framework, Spring delivers significant benefits for many projects, reducing development effort and costs while improving test coverage and quality."
Oder Hibernate (Aaahhh!)
"Hibernate is a powerful, high performance object/relational persistence and query service. Hibernate lets you develop persistent classes following object-oriented idiom - including association, inheritance, polymorphism, composition, and collections."
Was war dann noch? Ach ja, JavaServer Faces Technology (Oooohhh!)
"JavaServer Faces technology simplifies building user interfaces for JavaServer applications. Developers of various skill levels can quickly build web applications by: assembling reusable UI components in a page; connecting these components to an application data source; and wiring client-generated events to server-side event handlers."
Schon ein bisschen viel Technologien auf einmal, aber dafür gibt es AppFuse: Simplifying Java Web Development (Holla!):
"AppFuse is an application for "kickstarting" webapp development. Download, extract and execute ant new to instantly be up and running with a kick-ass Java webapp running on Tomcat/MySQL. Uses Ant, XDoclet, Spring, Hibernate (or iBATIS), JUnit, jMock, StrutsTestCase, Canoo's WebTest, Struts Menu, Display Tag Library, OSCache, JSTL and Struts (Spring MVC, WebWork, Tapestry and JSF are also options)."
Und im bekam das sogar noch geregelt! Java, Eclipse, MySQL, Ant, Appfuse, Tomcat, stundenlang heruntergeladen, installiert, konfiguriert, dann "ant new", minutenlang werden Hunderte von Dateien erzeugt, die automatisierten Tests laufen dann fast 10 Minuten, bis der Tomcat alles gestartet hat, oijoijoijoi!, aber es geht!!, es geht wahrhaftig!!!, jetzt muss ich mich doch nur noch ein wenig in die erzeugte Applikation reindenken, und dann weiterentwickeln, und gut ist, oder?

Ab da machte sich langsam Ernüchterung breit..., wo ist da jetzt Spring? Wo ist Hibernate? Und wie spielt das zusammen? Wie verteilen sich jetzt die Aufgaben zwischen UserDao.java, UserDaoHibernate.java, User.java, UserManager.java und UserManagerImpl.java? Wo ist das wie verdrahtet?

Und ich merkte, wie ich immer unwilliger und gereizter wurde ob der kryptischen Namen, der komplizierten Sachverhalte, dieses - auf jeden Fall für mich - undurchschaubaren Wirrwarrs und Sammelsuriums an Klassen, Jar-Files und XML-Konfigurationsdateien. Und mich erfasste eine leise Sehnsucht nach simpleren, überschaubareren Lösungen! Ach, stimmt, da war doch was, ausgerechnet im Weblog eines der Väter von JSF, der JavaServerFaces, David Geary werde ich daran erinnert:
"Why is development with Rails so much faster than with JSF, Tapestry, Struts, or whatever? The single biggest reason is zero turnaround time. You make changes to your application, refresh the browser, and voila, instantaneous feedback."
Ja, Rails war da noch. Ruby on Rails.Und was muss ich dann noch auf der Webseite dieser Entwickler aus Hamburg, die eine "JSF-Spring-Bridge" entwickelt hatten, lesen:

Wir entwickeln inzwischen mit Vorliebe Web-basierte Applikationen auf Basis von Ruby on Rails. Wegen

  • des klaren Designs,
  • der eleganten Implementierung innovativer Konzepte und vor allem
  • der enormen Produktivität für den Entwickler

halten wir Rails für eine der wesentlichen Innovationen der letzten zehn Jahre im Bereich Webapplikationen.

Da war ich fast schon ein wenig angefressen....

Thursday, November 16, 2006

Ich weiß auch nicht...

Ich weiß auch nicht, es wollen mir keine Fotos mehr gelingen, für das Weblog habe ich auch keine rechten Ideen mehr, was ist nur los? Ob das mal wieder anders wird? Hoffentlich!

Wednesday, October 18, 2006

Special Cases

Das Gegenteil von "Conceptual integrity" ist dann womöglich eine unsinnige Anhäufung von "Special Cases"?

"This is a special case!" Im Zusammenhang mit jener Software (siehe Unbeschreiblich mies) habe ich das inzwischen so oft gehört, dass es quasi den Normalfall darstellt. Wenn hier irgendwas "normal" funktionieren würde, das wäre ein Spezialfall (und fast schon eine Sensation...)!

Von Anfang an wurde scheinbar unverdrossen Spezialfall auf Spezialfall, und Sonderlösung auf Sonderlösung zu unsinnigen Spezialfallbergen und Sonderlösungsschutthalden gestapelt und getürmt, auf denen man jetzt ständig ausrutscht und stolpert. Unwegsames Gelände also. Selbst ein simples Konzept wie ein "Container, der Seiten enthält", wurde zunächst begrifflich bis zur Unkenntlichkeit entstellt, und dann noch zusätzlich programmtechnisch verstümmelt. Immer mit bester Absicht, natürlich...

Conceptual integrity

Noch ein netter Gedanke. Stammt aus dem legendären Buch Mythical man month. Meint sowas wie "konzeptionelle Einheitlichkeit", oder anders ausgedrückt:
"better to have one good idea than many bad or uncoordinated nonstandard ideas"
Also, am besten mit einem simplen und klaren Konzept auskommen, und das durchziehen. Und da wären wir eh schon wieder bei Wie gehe ich mit Komplexität um? (Nämlich am besten gar nicht. Von Haus aus vermeiden.)

Nach all den Jahren...

Ruby Beispiele kommen in der Regel so daher:
a, b = "foo", "baz"
a + b # => "foobaz"
a.size # => 3
Im Kommentar sieht man gleich das Ergebnis der Ausführung der jeweiligen Programmzeile: Sehr schön, informativ, aber auch ein wenig mühsam jede Zeile mit dem entsprechenden Ergebnis zu versehen.

Aber siehe da, es gibt das eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations Tool. Aus solchem Ruby Code:
a = 1
10.times do |i|
i ** 2 # =>
a += i
end
A = 1
A = 1
wird nach Aufruf von xmpfilter.rb -a example_02.rb
folgender wunderbarer Output:
a = 1
10.times do |i|
i ** 2 # => 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
a += i
end
A = 1
A = 1 # !> already initialized constant A
D.h. nach "# =>" wurden die Ergebnisse der Ausführung von "i ** 2" beim Schleifendurchlauf eingefügt, und die Zeile, die eine Warnung hervorruft, wurde direkt mit der Warnung als Kommentar vermerkt.

Ich hatte dieses Tool schon mal vor längerem entdeckt, aber auch wieder vergessen, weil es nicht unter Windows funktionierte, und nun: Es geht einfach! Wunderbar!! Nach all den Jahren!!!

Tuesday, October 17, 2006

Wie gehe ich mit Komplexität um?

Ein kurzer Gedanke letztens: Ob vielleicht das eigentlich bezeichnende, unterscheidende, besondere Merkmal an IT, an der Beschäftigung mit Software ist, dass ich ganz allgemein mit Komplexität konfrontiert bin und wie ich damit umgehe...

Ob ich sie überhaupt erkenne, ob ich sie ahne, aber ignoriere, ob ich mit letzten Kräften mit der Komplexität kämpfe und verzweifelte Siege erringe, usw...

Oder ob ich, wie steht es so schön hier:
Managing Complexity - The aim of Designing Code:
"you start with something simple and then battle with it to keep it simple"
lieber simpel anfangen und dann darum kämpfen simpel zu bleiben!

Wednesday, October 04, 2006

Begriffsverwirrung MVC/MVC1/MVC2

Die Zutaten: MVC, MVC1, MVC2, MVC Model1, MVC Model 2, Model 1, Model 2, JSP, Servlet...
Zur Frage, was denn der Unterschied zwischen MVC1 und MVC2 sei, ergibt sich z.B., nur auszugsweise:
  • "It's model 1 and model 2 (not MVC1& MVC2), and model 2 is synomonous with MVC, which is preferable for its flexibility."
    (Was? MVC1 ist nicht gleich Model 1, MVC2 ist nicht gleich Model2, aber Model 2 ist gleich MVC (ohne 1 oder 2)?).
  • Struts and Java Server Faces are based on model 2 MVC.
    (Ist Model 2 MVC etwas anderes als MVC2, oder Model 2? Welche feinsinnige Variante lauert da?)
  • Further to this there is also model2X which uses the JSP to create XML which is then transformed using an XSLT stylesheet; thereby seperating presentation from content generation
    (Ach du dicke Tüte, jetzt kommt so ein Schlaumeier mit noch einer Variante daher....model2x...XML, XSLT...).
  • And there is Pull MVC and Push MVC, rock the Pull MVC vote.
    (Oje, noch einer, nein, bitte keine push/pull-Debatten)
  • In MVC1 the business Logic and presentation logic will be presented in the same page where as in the case of MVC2 the business logic and presentation logic will be seperated. (Aha!)
Und was will uns das sagen?

Bitte nicht MVC1 mit Model 1, und MVC2 mit Model 2 verwechseln, aber bitte beachten, dass Model 2 eigentlich MVC (ohne 1 und 2) darstellt, und bitte nicht verwirren lassen, dass manchmal von Model 1 MVC, oder Model 2 MVC gesprochen wird, was überhaupt nichts zu bedeuten hat, weil entweder Model 1 oder MVC 1 gemeint ist, oder Model 2 oder MVC 2, wobei Model 2 eher nur MVC(ohne 1 oder 2), aber dennoch ....?

Also, haben wir jetzt irgendwas gelernt? Vielleicht,
  • dass ähnlich klingende Begriffe nicht unbedingt etwas Ähnliches bedeuten.
  • dass sich mit 2 Zahlen (1, 2) und 2 Wörtern (Model, MVC) ca. x (ne ganz Menge) Kombinationen bilden lassen und man sich sicher sein kann, dass man in einer Diskussion früher oder später ausnahmslos allen begegnet: MVC, Model, MVC1, MVC2, MVC Model, MVC Model 1, Model 1, Model 2....
  • dass es immer mindestens einen gibt, der den Unterschied zwar auch nicht genau erklären kann, aber
    • ganz genau weiß, dass die eine (oder andere) Variante besser ist
    • ungefragt eine dritte Variante ins Spiel bringt
    • aus unerfindlichen Gründen auf "Push"- und "Pull"-Aspekte hinweist und entschieden für eins davon eintritt
Wie war jetzt nochmal die Frage? Ach so, Unterschied zwischen MVC1 und MVC2! Was haben wir gelernt? Vielleicht doch nur, dass man besser überhaupt nicht mit dem Thema anfängt, außer man hat triftige Gründe dafür die Zeit mit unsinnigen Debatten totzuschlagen.

Tibet-Terrier?

Ich habe das zunächst für einen Witz oder Missverständnis gehalten, eine Hundeart namens "Tibet-Terrier" (ein Dalai Lama der Terrier, oder wie...)! Aber siehe da, natürlich gibt es eine, siehe z.B. Tibet-Terrier - Wikipedia
"Der Tibet-Terrier, in Tibet hieß er Tibet-Apso oder auch Doki-Apso, ist ursprünglich ein Hütehund (...). Er stammt ursprünglich aus Tibet, aus Höhen von um die 4500 m."
1930 brachte eine englische Ärztin zwei dieser Hunde aus Tibet mit, 1937 wurden sie als Rasse anerkannt. Aber, was passierte da:
"Dort wurde als Rassebezeichnung fälschlicherweise statt Tibet-Apso Tibet-Terrier eingetragen, obwohl der Tibet-Terrier nichts vom Charakter eines Terriers hat."
Ojeoje, der Tibet-Terrier heißt zwar so, ist aber gar keiner! Ist ja auch egal, auf jeden Fall scheint er ein netter zu sein:
"Diese Rasse ist auch für Anfänger geeignet, wenn sie sich mit den Ursprüngen der Rasse beschäftigt haben und wissen was diese für die Haltung bedeuten. Im Zweifel sollten Anfänger eine Hundeschule besuchen, denn Tibet Terrier sind so intelligent, dass sie sich dumm stellen können, wenn sie zu bestimmten Dingen keine Lust haben."
Interessant: ...so intelligent, dass sie sich dumm stellen können... Das erinnert mich an irgendwas... Aber egal, dafür, dass ich bis vor kurzem bei Terrier maximal an Yorkshire-Terrier gedacht, und Tibet-Terrier ganz klar für einen Witz gehalten hätte, gibt es ziemlich viele, auf Terrier - Wikipedia habe ich ca. 50 gezählt! Vom Airedale-Terrier bis zum Zwergbullterrier. Vom American Hairless Terrier über den Tibet-Terrier (der ja gar keiner ist, aber egal... (ja, gibt es da noch mehr, die eigentlich keine sind? (Ach, egal!))) bis zum Yorkshire Terrier.

Und was soll das jetzt? Keine Ahnung. Vielleicht: Wenn man einen Terrier, der gar keiner ist, will, dann könnte man vielleicht einen Tibet-Terrier nehmen.

Begriffsverwirrung...

Nur zu meiner Erinnerung: Einen Beitrag, den man unbedingt mal schreiben müsste, wäre die Verwirrung rund um Begriffe wie ModelViewController/MVC/MVC2 und Multi-Tier/Three-Tier/N-Tier und ähnliches.

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.....

Wednesday, August 30, 2006

Schönes Deutsch - IKEA

Ich glaube, ich hatte schon lange keinen IKEA-Katalog mehr in der Hand ("Lebst du schon?"), warum sollten mir sonst die typischen IKEA-Produktnamen auffallen:
  • BILLIG Übertopf für 0.50 (Er ist der Billigste unter den Übertöpfen.)
  • FEJÖ Selbstbewässerungstopf für 16.95 (Was um Himmels willen ist ein Selbstbewässerungstopf??)
Und nach interessiertem und fasziniertem Weiterblättern dann noch:
  • LEGITIM Schneidebrett-Set (Ob's auch was gibt, das ILLEGITIM heißt? Knappe Unterwäsche, oder so?)
  • und der KRAFTFULL Zwiebelhacker (Kraftfull!! Wie faszinierend!)

Inkompetenz

Heute irgendwo aufgelesen:
Paul Graham nailed it when he said "...people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent."
Nein, damit kann ich mich überhaupt nicht identifizieren. Nein, sowas habe ich überhaupt noch nie gedacht. Nicht mal im entferntesten gedacht habe ich sowas schon! Gott, wie arrogant! Alle anderen für blöd zu halten.... Also, nein.

Und BTW, schönes Englisch?
nailed it => den Nagel auf den Kopf getroffen?!
Was wäre ein möglicher Umkehrschluss eigentlich?
People who are absolutely dumb at something are sometimes so convinced of their own greatness and quite mystified at why someone else (maybe someone more or really competent) might not be that convinced?!

Rube Goldberg Contraptions

Wer war denn Rube Goldberg?
United States cartoonist who drew intricate diagrams of very complicated and impractical contraptions that accomplished little or nothing (1883-1970)
- WordNet
Also quasi: ....voluminöse Diagramme sehr komplizierter und unpraktischer Apparaturen, die wenig oder gar nichts zustande brachten....

Ein Beispiel einer Vorrichtung zum Reinigen von Schaufensterscheiben:
Passing man (A) slips on banana peel (B) causing him to fall on rake (C). As handle of rake rises it throws horseshoe (D) onto rope (E) which sags, thereby tilting sprinkling can (F). Water (G) saturates mop (H). Pickle terrier (I) thinks it is raining, gets up to run into house and upsets sign (J) throwing it against non-tipping cigar ash receiver (K) which causes it to swing back and forth and swish the mop against window pane, wiping it clean. If man breaks his neck by fall move away before cop arrives.
Die Vorrichtung funktioniert in etwa so, dass
ein Passant auf einer Bananenschale ausrutscht, der dadurch auf einen Rechen fällt, welcher ein Hufeisen in die Luft hebelt, welches auf ein Seil fällt, das eine Gießkanne bewegt, die Wasser auf einen Mop laufen lässt, wodurch außerdem ein Terrier meint, dass es regnet, ins Haus läuft, dabei ein Schild umstößt, welches...und dann....und letztendlich den Mop auf der Scheibe hin und her bewegt.
Kann man das noch komplizierter machen? Aber an was erinnert mich das nur?
accomplishing by complex means what seemingly could be done simply - Merriam-Webster Online Dictionary
Rube Goldberg, a comically involved, complicated invention, laboriously contrived to perform a simple operation - Webster's New World Dictionary
Through his "INVENTIONS", Rube Goldberg discovered difficult ways to achieve easy results. His cartoons were, as he said, symbols of man's capacity for exerting maximum effort to accomplish minimal results. Rube believed that there were two ways to do things: the simple way and the hard way, and that a surprisingly number of people preferred doing things the hard way. - http://www.rube-goldberg.com/
An was erinnert mich das nur? Na klar: Software! Jeden Tag werden eigentlich simple Sachen mit schwierigen, komplizierten, aufgeblasenen, unbeherrschbaren, wackligen, aber anstrengend und schweißtreibend ausgedachten und verwirklichten Softwarekonstrukten "gelöst".

Nicht weiter verwunderlich ist, dass den Unsinn der "Rube Goldberg Contraptions" vermutlich 95% aller sofort einsehen, eher tragisch, dass der Prozentsatz bei denen, die dies bei Software nicht tun, in etwa genauso hoch ist.

Monday, August 28, 2006

Ich bin begeistert!

Wie soll ich nur meiner Begeisterung Ausdruck verleihen? Die Vorstellung, auf einer Karte zu sehen, wo diese Fotos bei Flickr aufgenommen wurden, hat mich immer schon fasziniert. Und es gab auch einige Ansätze Bilder bei Flickr mit Geoinformationen zu versehen, zu "geotaggen", was dann von anderen Webapplikationen genutzt werden konnte, um Karten mit zugehörigen Bildern anzuzeigen. Dass sowas vielleicht direkt in Flickr integriert sein könnte, hatte ich eigentlich schon ad acta gelegt, völlig vergessen, eigentlich aufgegeben. Und genau dieses Feature scheint nun (seit heute, glaube ich) bei Flickr eingebaut zu sein!

Was heißt das? Ich kann auf völlig simple Art und Weise meinen Bildern ihren Aufnahmeort zuweisen und dann auf Kartenausschnitten sehen, wo Fotos aufgenommen wurden. Ich kann also örtlich nach Fotos suchen! Das ist ein Meilenstein! Das schwebt mir seit einiger Zeit vor, und jetzt ist es plötzlich verwirklicht! Nett. Wunderbar. Klasse. Ich kann einfach mal schauen, ob jemand in der Umgebung von Kirchweidach Fotos gemacht hat! Oder am Chiemsee, oder bei Trostberg, oder....

Und ein paar Fotos habe ich bereits geotagged (Na, wie heißt das jetzt? geogetagged? gegeotagged? geotagged?) Eins in Tinning, ein (zu Unrecht) völlig unbekanntes Dorf nördlich von Trostberg, zwei Fotos, die ich auf der Burg in Burghausen machte und 5 (was?, in Worten fünf?, so viele?) aus Laufen.

Wermutstropfen? Ja, doch, für die Karten wird Yahoo Maps verwendet (ja, ja, natürlich, Flickr wurde von Yahoo gekauft...), und deren Karten- und Satellitenmaterial ist, im Gegensatz zu Google, für Deutschland leider noch nicht so hervorragend.

Eine von 7 Todsünden bei der Softwareentwicklung...

...ist die irrige Ansicht, alles zu wissen. Meint William Ryan von Microsoft (heißt der so?) in 7 Deadly Sins of Software Development:

#6 Thinking you know everything

Personal guilt rating: historically 6, currently 4

You aren't going to learn Remoting in a day. You might be able to make something respond, but you aren't going to learn remoting in a day. You aren't going to learn OOD in a week. You aren't going to learn ADO.NET in a day. As a matter of fact, you aren't going to learn most things without some effort. And just because you made it work doesnt' mean you know it. Yes, I can copy code from Code Project too - that doesn't mean I know it. Too many times I've heard people say they 'know' something just b/c they made one project work. One time, I did a presentation on Speech Server emphasizing how easy it is to get some of the things working. One of the participants went home, created a grammar, and decided he knew Speech Server. He went to his boss and pitched the idea that they could Speech Enable their whole order processing system. Three weeks later the guy emailed me offering me obscene amounts of money to come in and bail him out. Creating a grammar to recoginze a list of names is not hard. I want everyone to use Speech Server. But doing a simple recognition doens't mean you know it. Creating a Remoting server doesn't mean you know remoting.

Oh, wie spricht mir das aus dem Herzen!
"And just because you made it work doesnt' mean you know it."
Ja! Ja! So kam mir das auch immer vor! Aber wie oft wird "einmal gemacht haben" mit "sich auskennen mit" verwechselt. Wenn man also beispielsweise von seinem Chef gefragt wird, ob man sich mit XY auskenne, könnte dies von "hast du das schon einmal installiert" bis "hast du dafür schon einen Kurs besucht und Erfahrung in mindestens 3 Projekten damit gesammelt" alles bedeuten, je nachdem ob der Chef eher aus der "do once know everything"- oder der "do once know nothing"-Ecke kommt. Wobei die Antwort des Gefragten, je nachdem zu welchem Lager dieser wiederum gehört, auch wieder alles mögliche bedeuten kann. Der "do once know nothing"-Typ würde wohl mit einem klaren "Nein" antworten, obwohl er XY schon einmal installiert hat, was der "do once know everything"-Chef womöglich als "der will sich schon wieder drücken" interpretieren könnte; was beim "do once know everything"-Typ, der mit einem klaren "Ja" antwortet, natürlich nicht vorkommen würde, weil er XY ja schon einmal installiert hat.

Eine subtile Quelle aller Arten von Missverständnissen also. Vor allem, wenn sich keiner beim anderen auskennt, was der jeweils andere mit "auskennen" meint.

Friday, August 18, 2006

Zen, Mindfulness

Schönen Artikel über Zen gefunden.

Und wie eigentlich? Nachdem ich auf meiner Seite bei del.icio.us einen Link zu einer (auch ganz wunderbaren) Seite über Christopher Alexanders "A Pattern Language" vermerkt hatte, schaute ich aus Interesse nach, welche weiteren 5 Personen diese Seite bei del.icio.us gebookmarked hatten, wobei mir (ich weiß nicht warum) der Name jakobengman auffiel, der bei gerade mal 104 Bookmarks eine unglaubliche Vielzahl von Tags hatte, unter denen mir dann besonders buddhism auffiel und bei der folgenden Liste eben Use everyday mindfulness to make life more enjoyable. (article) , der immerhin "saved by 424 other people" war.

Und der Artikel? Er spricht mich in einer ganz eigenartigen Weise sehr an....schwer zu erklären...hat irgendwas mit
"This is zazen: Just be here and experience."
zu tun, ganz simple Sachen eigentlich, die doch schwer zu erreichen sind, aber:
"Just try it. Even if you think I'm talking gibberish, try it. Right now, don't try to do anything but be where you are, experiencing what there is in your surroundings and in your body right now."
Tja, warum eigentlich nicht?!

Schönes Englisch: dog-eared

Zufällig darüber gestolpert:
"dog-eared Python books"
Das sind Bücher mit Eselsohren!! Dog-eared = Eselsohren!!

Ojeoje

Ojeoje, der erste Blogeintrag.... Was schreibt man da? Kann man das hinterher noch ändern? Oder ist das: "wasliegtdaspickt" (bis in alle Ewigkeit?!)? Was nun? Na gut, dann ist er das eben, der erste Blogeintrag.... Der erste ist halt der erste!