Dienstag, 12. April 2011

China hat zu grossen Hunger

If you were commanding an economy of 1.3 billion, you wouldn’t want to pay record prices for soybeans and other food imports. Not only is food inflation politically destabilising, but frankly, you have to wonder if we’ve reached a point where the rest of the world is going to find it hard to supply the raw materials China needs to keep growing at 9%.

Quelle: The Undeclared War in the Middle East

Tags: , ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 12. April 2011

Das Zeitalter der Komplexität

Unser grösstes Problem:

the irresistible impulse to address issues of excessive complexity with added complexity.

Quelle: Skeleton Dance

Tags:
Labels: Uncategorized

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 17. März 2011

Bye bye, Elektroauto

Heute habe ich an der SES-Veranstaltung „Elektromobilität: Mit Strom in den Verkehrskollaps?“ in Bern teilgenommen. Dort referierten Prof. Dr. Guzzella von der ETH Zürich sowie Dr. Axel Friedrich aus Deutschland über die Marktchancen von Elektroautos. Die Folien der Präsentationen stehen im Netz zum Download bereit.

Besonders der Vortrag von Prof. Guzzella hat einen grossen Eindruck auf mich hinterlassen — er hat seine äusserst klare Auffassungen mit grösster Effizienz ans Publikum gebracht, dabei aber einige Anwesende sicherlich vor den Kopf gestossen. Recht so, denn nur mit klaren Kontrapunkten kommt die Diskussion in die Gänge!

Mich hat dieser Vortrag im Eindruck bestärkt, dass wir auf dem Holzweg sind, wenn wir unsere gesamte Fahrzeugflotte von Benzin- auf Elektromotoren umstellen möchten. Obwohl er sich nicht mit den Peak Oil-Schauermärchen-Theorie anfreunden kann, ist auch er der Auffassung, dass mit einem solch hirnrissigen Umstieg vom Otto- auf den Elektromotor der Status Quo niemals aufrecht erhalten werden kann. Stattdessen propagiert er klar einen Paradigmenwechsel in den Köpfen der Schweizer und Westler: Sparen, sparen, sparen!

Konkret sähe er die Autoindustrie bereits heute in der Lage, 2 Liter Benzinmotoren herzustellen — doch die Mehrheit unserer Mitbürger sei nicht bereit, solche Fahrzeuge zu kaufen: Weil diese zu klein seien und viel zu langsam von 0 auf 100 beschleunigten. Süffisant liess er sich zur Nebenbemerkung hinreissen:

Das Auto ist nicht dazu da, um irgendwelche Psycho-Probleme zu lösen. 30 PS reichen!

Dies geht auch an die Adresse der Mehrheit meiner Kollegen. Da muss leider noch viel Überzeugungsarbeit geleistet werden.

Die Zukunft des motorisierten Individualverkehrs liegt laut Guzzella auf Grund der unlösbaren Schwächen der Batterietechnologie nicht in Elektro- oder Hybridautos, sondern weiterhin im Verbrennungsmotor. Eindrücklich zeigt er dies auf Folie 22 seiner Präsentation, wo er die Energiedichten von Kohlewasserstoffen und Batterien vergleicht. Falls die Batterietechnologie doch noch markant verbessert werden könnte (was noch nicht erwiesen ist), würde dieses Unterfangen Jahrzehnte in Anspruch nehmen.

Exponenten, die mit unglaublichen Energiedichten ihrer Batterien schwärmen, hält er Toyota vor die Nasen: Wenn Toyota in seinem Prius keine solche Batterie verbaue, existieren diese Wunderbatterien schlicht und ergreifend nicht. Toyota sei ein Autohersteller, der Autos verkaufen müsse, weil das nun einmal das vernünftige Geschäftsmodell der Firma ist. Unrealisierbare Träumereien zu verkaufen überlassen die privatwirtschaftlichen Autohersteller den Hinterhoferfindern, denn diese müssten ja nichts marktfähiges realisieren und sind auch keinem Aktionär Rechenschaft schuldig.

Weiter gab er zu bedenken, dass heutige Elektroautos dem Markt vorbeigeplant seien: Wenn ein Bürger mit seinem Erspartem für 25’000 Franken ein Auto kaufe, werde er sich immer für dasjenige Modell entscheiden, welches auch mal 600 Kilometer an einem Stück mache und danach nicht für 8 Stunden an das Stromnetz angeschlossen werden müsse, sondern innert 3 Minuten aufgetankt sei und danach weitere 600 Kilometer zurücklegen könne (Folie 35). Und das ist nun einmal der VW Polo mit Verbrennungsmotor und nicht ein Elektromobil im Prototypen-Stadium. Wer sich ein Elektroauto kaufe, müsse sich noch einen Zweitwagen leisten, um auch mal vier Personen transportieren und längere Distanzen zurücklegen zu können. Und das könne ja nun wirklich nicht der Sinn der Sache sein.

Guzzella warnt deshalb die Politik davor, Elektroautos zu subventionieren. Das wäre das Gefährlichste, was ein Staat seiner Wirtschaft, Umwelt und seinen Bürgern antun könne. Stattdessen müssten Gesetze erlassen werden, die die Autoindustrie zwängen, effiziente und äusserst sparsame Autos herzustellen — und die Bürger (evtl. mit finanziellen Abgaben) derart einschränken, dass diese nur noch solche Fahrzeuge anschaffen würden.

Nebenbei: Folie 33 zeigt, was ich auch schon hier in meinem Blog erwähnt habe: Das grösste Manko in der IT-Industrie sind die Batterien. Die CPU-Leistung, die Speicherkapazität von RAM und Festplatten steigen zwar linear an, die Energiedichte von Batterien ist hingegen seit Jahrzehnten stagnierend.

Schlusswort

An der Veranstaltung nur von einem Beamten des Bundesamtes für Umwelt angesprochen wurde die Frage, ob wir denn überhaupt so viel Mobilität benötigen … Auch aus meiner Sicht wäre dies immer noch das Grundproblem in diesem weitreichenden Themenkomplex.

Tags: , , , ,
Labels: Allgemein

4 Kommentare | neuen Kommentar verfassen

Sonntag, 13. März 2011

Gesucht: 6 Millionen Barrel Erdöl. Täglich.

It was far from clear where the world was going to find another two million barrels a day of new supply to meet another year of demand growth. That would be in addition to the nearly four million barrels a day of new production that must be brought on simply to replace what is lost every year in depletion.

Quelle: Why Saudi Arabia can no longer temper oil prices – The Globe and Mail

Tags: ,
Labels: Energie, Wirtschaft

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 13. März 2011

Wie Franzosen, Briten und Amerikaner mit Fremden umgehen

Americans won’t touch strangers, the French won’t talk to them, but Brits will neither touch nor talk to them.

Quelle: FT.com / FT Magazine – Don’t touch me, I’m British

Für Amerika-Neulinge ganz wichtig:

But though Americans won’t touch strangers, they will talk to them. They will chat to people at neighbouring tables in restaurants, or in line at the supermarket. That conversation doesn’t turn the speakers into friends – a mistake Europeans sometimes make. Generalising grossly: to Americans, conversation doesn’t imply intimacy.

Tags: , , , ,
Labels: USA

1 Kommentar | neuen Kommentar verfassen

Samstag, 12. März 2011

Was das Problem in Fukushima ist

I’m guessing the US Navy delivered a load of sodium polyborate from some nuclear aircraft carrier reactor supply room in the Pacific Fleet. Its use indicates that the nuclear threat is even worse than presently being portrayed in the news.  Tokyo Electric Power Company has probably given-up any hope of keeping those cooling pumps on after the batteries fail.

Quelle: I, Cringely » Blog Archive » Flea powder may be saving lives in Japan – Cringely on technology

Spannender Hintergrundbericht über die möglichen technischen Probleme in Fukushima: Anscheinend haben die Dieselgeneratoren versagt (Wasserschaden?), weshalb das Kühlsystem nur noch mit Batterien am Leben gehalten werden kann. Und deren Leistung reichte für ungefähr acht Stunden …

Doch für Japans Bevölkerung kommt es noch schlimmer:

An earthquake with such loss of life is bad enough, but Japan has also just lost 20 percent of its electric generating capacity. And I’ll go out on a limb here and predict that none of those 11 reactors will re-enter service again, they’ve been so compromised.

Nebenbei: Wie werden nun die neuen Shinkansen-Züge angetrieben?

Nachtrag

Cringelys Vermutungen finden sich auch in wissenschaftlicher(er) Form in einem Artikel auf der Web-Site der besorgten Wissenschaftler („concerned scientists“) wieder.

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Samstag, 12. März 2011

IMAP-Mailbox lokal sichern

Am 23. März 2011 ist es soweit: Ich erhalte endlich das Diplom zu meinem Studienabschluss in die Hand gedrückt. Da ich seit dem 31. Januar 2011 von der Universität Bern exmatrikuliert bin, ist es nur eine Frage der Zeit, bis mein Mailkonto mario.aeby@students.unibe.ch aufgehoben wird.

Damit ich ein vollständiges und sicheres Backup meines gesamten E-Mail-Verkehrs auf meiner lokalen Festplatte ablegen kann, verwende ich mit imapbackup.py ein frei aus dem Internet verfügbares Python-Script, welches — einmal aufgerufen — standardkonforme .mbox-Dateien im aktuellen Verzeichnis ablegt.

Nachdem man das Script heruntergeladen und vorzugsweise im eigenen Home-Verzeichnis abgelegt hat, geht man folgendermassen vor:

$ python ~/imapbackup.py -s mail.unibe.ch -u ma02i093

Tags: , , , ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 8. März 2011

Wie man Login-Formulare lieber nicht gestaltet

Heute begegnete ich auf der Arbeit einem Support-Fall, dessen Erkenntnisse sich alle Web-Entwickler da draussen zu Herzen nehmen sollten: Eine Mitarbeiter konnte sich nicht mehr in eine intern programmierte Web-Applikation einloggen.

Jedesmal, wenn sie ihre Zugangsdaten in das Login-Formular eingegeben hatte und den „Login“-Knopf drückte, kehrte sie umgehend auf dieselbe Seite zurück, das Formular war aber wieder leer.

Als ich beigezogen wurde, entdeckte ich zwei vom Entwickler verschuldete Probleme:

  • Benutzernamen mit Gross-/Kleinschreibung. Offenbar ist die Authentifizierungsroutine der Applikation so programmiert, dass nicht nur das Passwort case-sensitive geprüft wird (sehr gut, macht Brute-Force-Attacken komplizierter), sondern auch der Benutzername (schlecht). Somit war „benutzer“ nicht identisch mit „Benutzer“ oder „BeNuTzEr“. Dabei sollte man den Endbenutzern erlauben, irgendwelche Schreibweisen des Benutzernamens zu verwenden.
  • Keine Fehlermeldung. Dem Benutzer wurde nach der Rückkehr zum Login-Formular nicht mitgeteilt, weshalb der Zugang zum geschützten Bereich verweigert wurde. Es ist für den Benutzer (wie auch für den IT-Supporter) sehr hilfreich, wenn die Web-Applikation möglichst genau sagt, wo das Problem liegt — und am besten die Fehlermeldung klar vom restlichen Seiteninhalt abhebt (bspw. mit einem roten Rahmen und einem hellroten Hintergrund). So könnte man ausgeben „Benutzer nicht gefunden“ oder „Passwort falsch“, was helfen würde, die Fehlerursache rasch und effizient einzuschränken. Selbstverständlich kann man argumentieren, dass die Applikation nur auf ein nicht näher spezifiziertes Login-Problem hinweisen sollte, um potentiellen Hackern nicht zu viele Informationen preiszugeben. Ich bin aber der Meinung, dass die Benutzbarkeit der Applikation höher gewichtet werden sollte als potentielle Angriffsvektoren. Gowalla ist ein gutes Beispiel dafür: Bei Login-Problemen erfährt der Anwender, ob der Benutzername überhaupt existiert oder ob das Passwort falsch angegeben wurde.

Wer diese zwei Ratschläge befolgt, wird seinen Kunden eine Menge schlaflose Nächte ersparen.

Tags: ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 27. Februar 2011

McKinsey BTO hat Web-Applikationen einfach nicht begriffen

Per Zufall bin ich gestern auf McKinsey Horizon 2011 aufmerksam geworden und habe mich vorhin über die Web-Oberfläche des Beratungsunternehmens für die Teilnahme an diesem Anlass beworben. Spätestens mit diesem Blog-Artikel habe ich wohl alle Chancen verspielt, um aufgeboten zu werden …

In Barcelona soll im Mai 2011 ausgewählten Summa Cum Laude-Absolventen (bin ich notabene auch nicht) der Unternehmensbereich Business Technology Office (BTO) vorgestellt werden. Das BTO bietet laut Eigenwerbung folgende Dienstleistung an:

Ziel unserer Beratung ist es, durch effektiven Einsatz von Technologie unternehmerische Probleme zu lösen und somit den substanziellen Wert eines Unternehmens nachhaltig zu steigern. Insbesondere helfen wir unseren Klienten, Investitionen in Technologie erfolgreich zu managen und mit den strategischen Prioritäten des Geschäfts in Einklang zu bringen.

Quelle: Business Technology Office

Schade nur, dass die Web-Applikation für die elektronische Eingabe der Bewerbung aus dem Mittelalter des Webs zu stammen zu scheint. Nicht gerade rühmlich, wenn dieselbe Firma gleichzeitig Tipps geben möchte, wie man Unternehmens-IT besser einsetzt.

Was bemängle ich konkret? Es sind dies drei Punkte:

Browser-Inkompatibilität

McKinsey Browser Issue

Ruft man die Web-Site mit Safari 5 unter Mac OS X 10.5 auf, erscheint folgender JavaScript-Alert:

Only people with IE 4.0 and higher, and Firefox browsers for Windows can use this application. Please download and install either IE or Firefox for Windows, and then return to apply on-line.

Immerhin funktioniert die Applikation mit Firefox 3.6 unter Mac OS X 10.5 ohne zu Murren.

Dennoch: Liebe McKinsey, im Jahre des Herrn 2011 und 20 Jahre nach der Erschaffung des World Wide Webs tummeln sich doch einige Rendering-Engines mehr auf dem Markt als nur MSIE und Firefox:

  • Microsoft Internet Explorer
  • Gecko (Mozilla Firefox)
  • WebKit (Apple Safari, Google Chrome)
  • Opera

Da die Bewerbungsapplikation eigentlich nur simple Formularfelder und einige Dateiupload-Widgets zur Verfügung stellt, die seit 1993 zum HTML-Standard gehören, sollte jede dieser Rendering-Engines unterstützt werden.

Dass Mac OS X unter den Führungskräften von morgen überproportional verbreitet ist, muss ich in diesem Zusammenhang nicht erwähnen, oder? Und ja, es gibt sogar Leute, die sind mit Linux (bspw. Ubuntu) unterwegs. Oder dem iPhone und dem iPad, auf welchen iOS läuft. Was ist mit all diesen Betriebssystemen?

Spezialwerte für Formularfelder

McKinsey Work History

Please enter your work history in chronological order with most recent position listed first. If you are currently employed, the system will require you to submit an End Date. In that instance, please enter 01/01/2050.

Ehrlich? Das ist ein typischer Fall, wo ein Web-Entwickler geschlampt hat und stattdessen nun Tausende von Bewerbern durch das Usability-Nightmare waten müssen.

Session Timeout

McKinsey Session Timeout

Bekanntermassen ist das Verfassen von Bewerbungen auch in elektronischer Form ein langwieriger Prozess. Umso bitterer, wenn nach etwa einer Stunde folgende von JavaScript-generierte Warnmeldung erscheint:

For security reasons, your session has timed out and you need to restart your application. We apologize for any inconvenience.

Natürlich gehen dabei alle bereits erfassten Formulardaten verloren.

Fazit

McKinsey, Note ungenügend, bitte setzen. Das Unternehmen sollte sich mal selbst von der eigenen BTO beraten lassen, um mit dem „effektiven Einsatz von Technologie unternehmerische Probleme zu lösen“ …

Dieses Bewerbungsformular ist ein Paradebeispiel, wie benutzerunfreundlich das Web auch heute noch sein kann. Und das völlig unnötigerweise — denn das Wissen ist vorhanden, es müsste nur umgesetzt werden.

Tags: ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Freitag, 25. Februar 2011

Ruby on Rails 3-Kleinigkeiten

Nachfolgend eine Sammlung von Ruby on Rails 3-Kleinigkeiten, die den Umstieg von PHP-Programmierern auf diese Programmiersprache/dieses Framework erleichtern sollen.

Kommentare

Werden mit # eingeleitet.

Helper

Um die Views schlank zu halten, empfiehlt es sich, häufig benutzte (respektive umfangreiche) Funktionen in den jeweiligen Helper auszulagern. Eine gute Einleitung in die Thematik findet sich im Artikel Using helper methods in Ruby on Rails.

return fehlt

Das besondere an Ruby-Methoden: Das Resultat der letzten Zeile einer Methode wird automatisch zurückgegeben, man muss also keine aus anderen Sprachen gewohnte return-Anweisung notieren.

Helper HTML ausgeben lassen

Um mit Ruby on Rails 3 eine Helper-Methode HTML-Code zurückgeben zu lassen, muss das Resultat als „safe“ gekennzeichnet werden (via Ruby on Rails Helper Method – HTML is displayed as plain text). Ansonsten werden „<“ „>“ im Rückgabewert automatisch in HTML-Entities umgewandelt. Konkret:

def machHtml
	html = "<h1>Titel</h1>"
	html.html_safe
end

Heredoc

Wie PHP kennt auch Ruby die Heredoc-Notation (via Heredocs – oder – Code in der 2. Dimension), mit welcher man HTML-Code zeilenübergreifend notieren und Ruby-Variablen einfügen kann:

html = <<HTML
	<tr>
		<td></td>
		<td></td>
		<td></td>
	</tr>
HTML

Das besondere ist hierbei, dass man bei der Angabe eines Bindestrichs „-“ beim Beginn des Heredocs den EOL auch einrücken kann, um den Programmcode lesbarer zu machen:

html = <<-HTML
	<tr>
		<td></td>
		<td></td>
		<td></td>
	</tr>
	HTML

Um in Heredoc Ruby-Variablen auszugeben, werden diese als #{variable} notiert.

Zahlen auf zwei Nachkommastellen gerundet ausgeben

rounded = "%.2f" % val

Seiten-Template

Das Template der Standardseite (HTML Header und Footer) ist unter ~/app/views/layouts/application.html.erb abgelegt.

Stylesheets einbinden

Sobald man ein CSS-Stylesheet in ~/public/stylesheets ablegt, wird dieses automatisch in das Template eingebunden.

Zeitzone

In ~/config/application.rb sollte man die richtige Zeitzone notieren:

...
config.time_zone = 'Bern'
...

Um den erwarteten Wert herauszufinden, bemüht man sich folgenden Befehls:

$ rake time:zones:local

locale

Um die locale auf Deutsch zu ändern, muss zuerst eine vorgefertigte locale-Datei heruntergeladen und in ~/config/locales abgelegt werden. Leider ist de-CH.yml kaputt, de.yml funktioniert hingegen:

$ cd ~/config/locales
$ wget --no-check-certificate "https://github.com/svenfuchs/rails-i18n/raw/master/rails/locale/de.yml"

Anschliessend passt man ~/config/application.rb an:

...
config.i18n.default_locale = :de
...

Deutsche Zeit ausgeben

Hierzu stellt Ruby on Rails 3 eine Locale-Funktion bereit:

l(date, :format => '%a %d.%m.%Y')

Sortierung in der index-Ansicht ändern

Im Controller der Applikation unter ~/app/controllers/stamps_controller.rb kann man nach dem Scaffolding natürlech eigene Anpassungen vornehmen:

def index
    #@stamps = Stamp.all
    @stamps = Stamp.find(:all, :order => 'date_start')

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @stamps }
    end
  end

Mit @stamps = Stamp.find(:all, :order => 'date_start') macht man im Grunde dasselbe wie mit @stamps = Stamp.all, doch sortiert die Resultate datenbankseitig (!) bereits nach einem bestimmten Feld. Die Sortierrichtung kehrt man um, indem man noch DESC an den Befehl anhängt.

Tags: , , , ,
Labels: Web

1 Kommentar | neuen Kommentar verfassen