If it’s slow, just add a cache

“Rails has this wonderful caching system that compensates for Ruby’s slow execution speed called “page caching” and “fragment caching”. Rails uses this to transfer the actual web traffic from Rails to the web server itself. […] Because of this a Rails application many times can outperform similar applications in Java or PHP.”
Zed on Ruby, Rails, Mongrel, and More – O’Reilly Ruby

funny… Mr.Zed describes exactly the reason why some eight years ago, the CoreMedia Generator ™ was designed the way it is. The only difference being that the immature and slow language at the time was Java.

Just like Apple kept arguing “we don’t need fast CPUs because what you want works fast enough”, until they finally solved their performance problem.

Die Produktive Elite

Wie schaffst Du es, sechzehn (16) mal so produktiv wie Deine Kollegen zu sein?
Wie wir alle wissen, schafft man 80% der Arbeit in 20% der Zeit. Die restlichen 20% der Arbeit brauchen demnach 80% der Zeit.
Angenommen, es stehen vier gleichlange Aufgaben an, die jeweils einen Tag dauern. Du erledigst von jeder Aufgabe die ersten 80% und delegierst den Rest an Deine Kollegen. Dafür brauchst Du 4 mal 20% = 80% eines Tages.
Deine vier Kollegen brauchen für den Rest einer einzigen Aufgabe jeweils ebenfalls 80% eines Tages, also genauso lange wie Du.
Du hast damit in der gleichen Zeit viermal 80% = 3.2 Aufgaben erledigt, in der einer Deiner Kollegen 0.2 Aufgaben erledigt hat.
Deine Produktivität war damit 16mal so hoch.

Es gibt tatsächlich Leute, die sowas glauben, und sich dann meistens “Elite” nennen.

Und warum das nicht funktioniert, dafür gibt es viele Gründe, die sich z.B. auf die Messgröße, die Vorhersagbarkeit und die Konkurrenz beziehen:

  • Der Fertigstellungsgrad – nennen wir ihn mal Wert – ist selten so schön linear. Es gibt Aufgaben, die sind erst erledigt, wenn sie 100% erreicht haben. Anders gesagt kann es sein, dass die 20% ihren Wert nur aufgrund der Existenz der 80% haben.
  • Der Moment, in dem die Wertsteigerung wahrgenommen wird, ist selten der, in dem sie entsteht. Nehmen wir an, der Wert wächst exponentiell, dann passiert lange “nichts”, und plötzlich geht der Wert ab durch die Decke.
  • Du weisst nicht vorher, welche 20% der Zeit die produktiven sind. Wenn Du die 20% aufgrund bestimmter Kriterien aussuchst, dann hast Du keinerlei Garantie, dass diese 20% auch beim nächstenmal die wertvollen sein werden, die Verteilung kann sich ändern.
  • Deine Kollegen haben nicht lange Lust auf das Spiel – Du kannst Dir nicht immer aussuchen, welche 20% Du bekommst.
  • Wenn sich alle um die wertvollen 20% balgen, gibt es auf den 80% weniger Konkurrenz – das kann auch eine Strategie sein.

Sudoku

Die aktuelle iX hat einen Artikel über Sudoku. Dabei fiel mir ein alter Hack wieder ein: Statt Sudoku zu spielen, habe ich damals lieber ein Programm geschrieben, mit dem man sich ein lösbares Sudoku-Rätsel zusammenstellen kann. Die Algorithmen funktionieren und man kann auch was sehen, allerdings ist es nur ein Hack insofern, als das “GUI” eine Matrix aus HTML-Dropdown-Boxes ist und export o.ä. nicht implementiert sind.

Anbei die Java-Quellen als Idea-Projekt inklusive compilierter webapp (“exploded”). Verwendung: in den tomcat deployen und “brett.jsp” aufrufen. In den Drop-Down Boxen erscheinen nur die Zahlen, die an der Stelle noch möglich sind. Wenn man eine auswählt, wird sie an dieser Stelle fest eingetragen, und auch alle anderen “offensichtlichen” (d.h. überall dort, wo nur noch eine möglich ist). Zahlen, die in eine Sackgasse führen, sind mit einem Ausrufungszeichen gekennzeichnet. Die webapp ist komplett zustandslos, d.h. “undo” wird durch den “Zurück”-Button des Browsers erledigt.

(Leider habe ich auf diesem Server kein tomcat, sonst würde ich’s ja online stellen…)

Verschleiß

Nennen wir ihn mal V: V hat den 2.Dan im Aikido. Er hat schätzungsweise zehn Jahre in Aikido investiert, mit regelmäßigem Training mehrfach die Woche. Als ich mich mal beklagte, dass ich nicht vorankomme mit meinen Bewegungen, meinte er: “Wenn ich so wenig trainieren würde wie Du, würde es mir auch keinen Spaß machen”.

Ich bewundere Menschen, die Meisterschaft auf einem Gebiet erreichen. Die Kombination aus Talent, Erfahrung, Konzentration, Priorisierung führt zu einer einfach beeindruckenden Haltung: Abwägend, aber trotzdem klar, fundiert, entschieden, nicht vorschnell, und viele gute Dinge mehr. Wichtigste und wesentliche Vorraussetzung, so dachte ich immer, ist, dranzubleiben. Immer einen Weg zu finden, weiterzumachen, sich nicht entmutigen zu lassen, immer die Augen offenzuhalten, wo noch was geht.

Wie ich am Beispiel V. jetzt feststelle, kann es trotzdem irgendwann vorbei sein. V. kann nach einem Kreuzbandriss und einer Meniskusoperation die fürs Aikido nötigen Bewegungen einfach nicht mehr machen. Er meinte dann auch mal, einige Bewegungen “hätten ihm immer irgendwie wehgetan”.

In Zeiträumen wie “10 Jahre” denkt man selten. Ich habe jetzt gelernt: Über die Jahre addieren sich nicht nur die Erfahrungen, sondern auch der Verschleiß.

Es Läuft, Aber

Was bekommt man, wenn man eine intradisk mit einer Squeezebox kombiniert? Theoretisch: Ein nicht ganz billiges, aber echt schickes digitales Audio-System, das ohne kompletten Rechner und ohne Festplatte im Wohnzimmer auskommt, und so ziemlich strom- und platz-sparend ist. Praktisch (nach viel Bastelei): Ein System, das funktioniert, aber zu langsam ist, als dass die Bedienung Spaß machen würde.

Vielleicht finde ich ja noch die richtige Tuning-Schraube…

Why is there a shortage of scientists?

FT.com / Home UK / UK – Alan Cane: Why is there a shortage of scientists?
There is a shortage of science graduates. … But here’s an interesting fact. … The mathematics in this book are truly fearsome, yet it has been walking off the shelves. … All of this suggest to me that there is a much greater interest in science than is generally perceived. … Various schemes have been devised to improve the image of science, many of them … dumbing down the subject. [ Man denke nur an Dank Informatik! ] … We need teachers at [the primary and junior school] level who have both the skills and enthusiasm to impart a love of science in young minds.

Vielleicht brauchen wir eher eine Organisation des wissenschaftlichen Betriebs, die der Liebe zur Wissenschaft Raum zur Entfaltung gibt, statt sie durch finanzielle “Abstrafung”, unzeitgemäße Arbeitsbedingungen und anti-intellektuelle Klüngelei zu hemmen. Die Gehälter für wissenschaftliche Mitarbeiter und Postdocs liegen deutlich unter dem freien Markt, die Vertragssituationen werden prekärer, für welchen Diplom-Informatiker soll das noch attraktiv sein?

Übernachten in Amsterdam

Die Vokabel “Minimum stay” habe ich jetzt gelernt. So bedeutet z.B. die Aussage “Minimum Stay 3 days”, dass zwei Betten in einem ramschigen Schlafsaal plötzlich 180 Euro kosten können – so viel, als hätte man sie das gesamte Wochenende belegt. Und wenn der Schlafsaal ausgebucht und nur noch ein “4 persons private room” übrig ist, kostet das selbe Hostel auch mal 240 Euro. Nicht realistisch. In Amsterdam scheinen jedes Wochenende Zustände wie im Weihnachtsevangelium zu herrschen.

Wir hatten ganz naiv angenommen, wir könnten zwei Wochen vor Ankunft noch eine Übernachtung in Amsterdam buchen. Online findet man zunächst Sites wie amsterdamtourist.nl, die zwar eine Liste von Hotels liefern, die man sich dann aber händisch durchklicken und -telefonieren (!) darf. Semantic Web sieht anders aus.

Man findet dann auch einige Infos über die (mangelnde) Verfügbarkeit von Betten. Gut organisiert ist z.B. hostelz.com. Beim Surfen stellen wir allerdings schnell fest, dass die meisten Hotels in Amsterdam ihre freien Betten an eine zentrale Datenbank melden – früher oder später – und keineswegs auf der eigenen Website veröffentlichen. Und dass fast alle Sites sich aus dieser Datenbank bedienen (Syndizierung!), früher oder später – was hier noch frei ist erscheint dort schon als ausgebucht. Besonders viele freie Betten melden Sites, die frühzeitig eine Anmeldung inkl. Kreditkarteninfo wünschen, das weckt meine paranoiden Tendenzen.

Was ich mir gewünscht hätte: eine zentrale Site, etwa der Stadt Amsterdam, in der man Anfragen stellen kann wie “wir wollen ein Nacht unterkommen, maximal 100 EUR, sortiert nach Entfernung zur City mit Öffentlichen Verkehrsmitteln”

Wie haben wir unser Hotel tatsächlich gefunden? 1. Sukzessive die Ansprüche zurück (Bettenburg) und den Preis hochgeschraubt; 2. Vom City Center in die Randbezirke; pro Hotel die Adresse ergooglet und (ebenfalls erratisch) versucht, die Position auf der Karte und die Verkehrsanbindung herauszufinden; 3. Google, eine thailändische Hotel-Such-Site und Durchklicken, und schließlich einfach: 4. Expedia, die scheinbar Betten gehamstert haben. Fazit: Nicht reproduzierbar, kein Spaß. Nächstes Mal das ganze Wochenende oder viel, viel früher buchen.