Archiv Februar 2011

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

Donnerstag, 24. Februar 2011

Das erste kleine Ruby on Rails 3-Projekt

Nachdem man Ruby on Rails 3 auf seinem Entwicklungsserver eingerichtet hat, kann man sich sofort hinter die Entwicklung einer ersten Testapplikation machen.

Meine Anleitung richtet sich an Web-Entwickler, die mit einem PHP-Hintergrund Ruby on Rails ausprobieren möchten und mit dem MVC-Paradigma vertraut sind (sprich schon mit dem Zend Framework, Symfony, CakePHP etc. produktiv gearbetiet haben).

Vorbemerkung: Versionschaos

Im Netz gibt es unzählige How-Tos und Tutorials um eine erste Rails-Applikation hinzubiegen — sehr hilfreich war für mich Enabling Rails 3 for your application. Leider beziehen sich die wenigsten Anleitungen auf Ruby on Rails 3. Leider vernachlässigen es die Autoren solcher Werke oftmals zudem, darauf hinzuweisen, auf welche Rails-Version sich die Anleitung denn eigentlich bezieht. Dies hole ich hier explizit vor — meine Version lautet:

$ rails -v
Rails 3.0.4

Notabene: Es gibt anscheinend die Möglichkeit, mit der neuesten Rails-Version auch Projekte anzulegen, welche nach einer der älteren Versionen aufgebaut sind (rails _2.3.5_ APP_NAME via How can I create previous version rails in rails 3?). Wenn aber jemand Rails lernen möchte, sollte er dies mit der aktuellsten Version tun — so meine Überzeugung.

Beispielapplikation: Arbeitsjournal

Um rasch Gemeinsamkeiten und Unterschiede zu PHP aufzuzeigen, habe ich mich hierbei entschlossen, eine bestehende PHP-Webapplikation mit Ruby on Rails nachzubauen: Das Arbeitsjournal. Mit diesem führe ich für einen meiner derzeitigen Jobs Buch, wie lange ich arbeite und welche Aufgaben ich wann erledigt habe. Das Tool zeigt mir die Gesamtarbeitszeit für einen Monat und berechnet auch gleich, ob ich die gemäss Arbeitsvertrag erforderlichen Stunden abgearbeitet habe oder nicht.

Der Projekttitel liegt auf der Hand: arbeitsjournal.

Applikations-Skelett erstellen

Ich habe mich entschieden, meine Projekte unter /var/rails abzulegen. Nachdem ich dieses Verzeichnis erstellt habe, welches alle zukünftigen Ruby-Projekte enthält, wechsle ich da hinein und erstelle mir die Projektstruktur. Dank Rails ist dies Sache eines einzigen Befehls:

# mkdir /var/rails
$ cd /var/rails
$ rails new arbeitsjournal -d mysql

Die Option -d gibt an, dass man die Modelle und Daten in einer MySQL-Datenbank abgelegt haben möchte (Standard ist sqlite3)

Datenbankverbindung herstellen

Als Datenbank habe ich MySQL gewählt. Das Vorgehen ist identisch wie bei PHP-Web-Projekten: Zuerst erstellt man sich eine Datenbank (bei mir ruby_arbeitsjournal), einen MySQL-Benutzer (ruby) mitsamt Passwort und weist ihm Schreibrechte auf die neu erstellte Datenbank zu. Nach einem FLUSH PRIVILEGES; liest die MySQL-Datenbank den neuen Benutzer ein. Ich verwende dazu als Relikt vergangener Tage das GUI phpMyAdmin, obwohl ich auf der MySQL-Kommandozeile mittlerweile viel rascher ans Ziel kommen würde.

Unter Rails gibt man die Datenbankoptionen in der Datei ~/config/database.yml an:

...
development:
  adapter: mysql
  database: ruby_arbeitsjournal
  host: localhost
  username: ruby
  password: ********
...

Modell erstellen

Nun ist es an der Zeit, das Modell zu erstellen. Da es sich um eine Applikation mit ein, zwei Datenbanktabellen handelt, welche wiederum kaum Felder beinhalten, kann man dies bequem auf der Kommandozeile machen. Als Objektbezeichnung für einen Arbeitszeiteintrag habe ich mich an die gute, alte Stempeluhr erinnert und das Objekt deshalb Stamp genannt:

$ rails generate scaffold Stamp date_start:datetime date_end:datetime description:text

Das Objekt heisst Stamp und es weist drei Felder auf: date_start, date_end und description, denen die jeweiligen Titel zugewiesen werden. Nützlich war mir hier eine Liste der für’s Scaffolding verfügbaren Feldtypen.

Dies erstellt den Controller, welcher für das Auflisten (index), Anzeigen (show), Erstellen (new), Speichern (create) Editieren (edit), Aktualisieren (update) und Löschen (destroy) zuständig ist. Natürlich ohne, dass ich als Entwickler eine einzige Zeile Code schreiben muss. Genial!

Datenbanktabelle erstellen

Zuletzt erstellen wir nun die physische Tabelle in MySQL:

$ rake db:migrate --trace

Webserver starten

Ich habe einige Zeit damit verbraten, die Applikation über Apache 2 bereitzustellen. Leider momentan noch fruchtlos, u.a. weil sich die Anleitungen auf Rails 2 beziehen, welches offenbar noch ein dispatch.fcgi mit sich brachte. Dies fehlt im DocumentRoot ~/public einer 3er-Applikation.

Die Verwendung von Apache ist dabei gar nicht zwingend nötig — für Web-Entwickler stellt Rails (natürlich!) einen eigenen rudimentären Web-Server zur Verfügung. Man startet diesen über

$ cd /var/rails/arbeitsjournal
# rails server

Aus dem Intranet kann man nun auf den Testserver zugreifen, indem man Port 3000 anspricht. In meinem Falle war dies mad4you.homeip.net:3000.

Routing einrichten

Wer obigen Link aufruft, erhält die Standard-Willkommensseite für Rails-Projekte zu gesicht, die unter ~/public/index.html abgelegt ist.

Benennt man diese Datei kurzerhand um, kriegt man eine Fehlermeldung zu Gesicht. Rails kann nämlich nicht hellsehen und weiss nicht, was der Benutzer eigentlich für eine Seite angezeigt erhalten möchte. Ein Abstecher in die Routing-Datei ~/config/routes.rb und eine klitzekleine projektbezogene Anpassung hilft weiter:

...
root :to => "stamps#index"
...

Auf Deutsch: Diese Anweisung sagt Rails, dass falls ein Request namens GET / reinkommt, dieser auf die Stamps-Objekte weitergeleitet werden soll und dort die Auflistung aller Datenbankwerte

Views und Helper anpassen

Jetzt folgt die Knochenarbeit — zum ersten Mal muss Ruby programmiert werden. Hier sollte sich jeder Web-Entwickler rasch heimisch fühlen, denn abgesehen von einer anderen Programmiersprache ist das Vorgehen nun jedem mit dem MVC-Paradigma vertrauten Entwickler bekannt: Views anpassen, Helper-Funktionen entwickeln und im Controller Kollisionsabfragen etc. implementieren.

Die Pfade zu den entsprechenden MVC-Elementen lauten in meinem Fall:

  • ~/app/models/stamb.rb
  • ~/app/views/stamps/*.html.erb
  • ~/app/controllers/stamps_controller.rb

Insbesondere in ~/app/views/stamps/index.html.erb kann man genügend rumfuhrwerken. Hier vermischen sich HTML-Code und Ruby-Code, und hier kann der Entwickler genauestens steuern, wie die erfassten Daten ausgegeben respektive ausgewertet werden sollen.

Sehr wichtig ist ~/app/helpers/stamps_helper.rb, um die View nicht mit Ruby-Code zu überladen. Dorthin lagert man sich alle nützlichen kleinen Methoden aus, die mehrmals im Code benutzt werden und es deshalb Sinn macht, Redundanzen zu vermeiden.

Fertig? Fertig!

Ab jetzt verfügt man über eine funktionierende Web-Applikation, um Arbeitsstunden zu erfassen. Rails hat die entsprechenden Controller-Aktionen automatisch bereitgestellt und ich kann sofort mit dem Einfüllen von Daten beginnen.

In einem weiteren Artikel werde ich mich um einige Finessen kümmern, die für PHP-Entwickler anders, ungewohnt, oftmals aber äusserst erleichternd sind.

Tags: , , , , ,
Labels: Web

3 Kommentare | neuen Kommentar verfassen

Mittwoch, 23. Februar 2011

Ruby on Rails 3 unter Debian GNU/Linux installieren

Aus gegebenem Anlass habe ich mich heute Morgen das erste Mal seit langem wieder mit dem Web-Framework Ruby on Rails aus der Küche von David Heinemeier Hansson (einer der Partner hinter 37signals) auseinandergesetzt.

Nachfolgend habe ich zusammengefasst, wie ich das Framework auf meinem heimischen Entwicklungsserver zum Laufen gekriegt habe.

Installation Ruby

(Ich folge der englischen Anleitung Debian Lenny – Ruby on Rails von SliceHost)

Zuerst lädt man Debian-Pakete herunter und installiert diese:

# apt-get install ruby-dev ruby ri rdoc irb libreadline-ruby libruby libopenssl-ruby sqlite3 libsqlite3-ruby libsqlite-dev libsqlite3-dev

Anschliessend lädt man die Quellen von RubyGems herunter und kompiliert diese (man sollte auf das vorkompilierte Debian-Paket verzichten weil es mit Version 1.2.0 unglaublich veraltet ist):

# cd /tmp
# wget "http://rubyforge.org/frs/download.php/74234/rubygems-1.5.2.tgz"
# tar xvzfz rubygems-1.5.2.tgz
# cd rubygems-1.5.2
# ruby setup.rb

Nun noch die obligatorischen Update-Anweisungen, die man sich als Linux-Benutzer von vielen Paketmanagern kennt, und dann ist man bereit:

# gem update

Bei mir erhielt ich bei der Ausführung von gem update folgende Fehlermeldung zu Gesicht:

# gem -v
/usr/bin/gem:10: undefined method `manage_gems' for Gem:Module (NoMethodError)

Der Anleitung unter RubyGems: undefined method ‘manage_gems’ for Gem:Module (NoMethodError) – easy fix folgend wurde ein veraltetes Binary installiert, welches zuerst mit einer aktuellen Version ersetzt werden muss:

# mv /usr/bin/gem /usr/bin/gem-backup
# ln -s /usr/bin/gem1.8 /usr/bin/gem

Anschliessend aktualisiert man das System (nun hoffentlich erfolgreich):

# gem update
# gem update --system

Notabene: Bei mir wurden keine Updates nachgeladen, alles war bereits auf dem neuesten Stand …

Installation sqlite3

Damit Ruby mit der Datenbank sqlite3 sprechen kann, muss ein entsprechender Treiber bereitgestellt werden. Falls bei

# gem install sqlite3

die Fehlermeldung

Fetching: sqlite3-1.3.3.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
	ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:3:in `require': no such file to load -- mkmf (LoadError)
	from extconf.rb:3


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out

erscheint, hat man im obigen apt-get für die Grundinstallation vergessen, die Header-Pakete von Ruby zu installieren (via Stackoverflow). Dies holt man mit folgendem Befehl nach:

# apt-get install ruby-dev libsqlite3-dev

Installation MySQL-Treiber

Obwohl man Ruby (on Rails) natürlich auch mit sqlite3 benutzen könnte, ist der LAMP-Web-Entwickler primär mit MySQL vertraut — so kann diese Datenbank mit der ansprechenden GUI phpMyAdmin administriert werden und ist bei grösseren Datenmengen auch klar performanter als sqlite3.

Um den Treiber zu installieren, bemächtigt man sich folgender Debian-Pakete:

# apt-get install libmysql-ruby libmysqlclient-dev

Anschliessend ist

# gem install mysql

Problemlos möglich.

Installation Rails

Mit dem Ruby-Paketmanager gem kann man sich nun endlich Rails aus dem Netz herunterladen und installieren lassen:

# gem install rails

Fertig! Jetzt sollte man eine funktionierende Ruby on Rails-Installation auf dem Server liegen haben und man ist bereit, mit Bordmitteln das erste Projekt anzulegen. Wie dies genau vor sich geht, folgt in einem weiteren Artikel.

Tags: , , , , ,
Labels: Linux, Web

1 Kommentar | neuen Kommentar verfassen

Montag, 21. Februar 2011

Trugschluss Sicherheit

„Don’t play for safety. It’s the most dangerous thing in the world.“
— Hugh Walpole, Writer

Via: Raffi

Tags: ,
Labels: Allgemein

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 15. Februar 2011

Für den unkontrollierten und uneingeschränkten Zugang zum Internet

The internet is radically unlike all the telecommunications networks that have preceded it. It’s the first national and global communication network designed from the outset to resist mechanisms for centralized control and monopoly.

Quelle: Coding Horror: The Importance of Net Neutrality

Tags: ,
Labels: Politik

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 13. Februar 2011

Missverständnis bezüglich Antifaschistischer Abendspaziergang

Vor etwas mehr als zwei Jahren erhielt ich auf eine Bemerkung auf der von mir administrierten Web-Site www.botellon.ch einen bösen Drohbrief des Bündnis Alle gegen Rechts:

Missverständnis bezüglich Antifaschistischer Abendspaziergang (PDF, 407KB)

Bemängelt wurde die süffisante Bemerkung meinerseits …

Ebenso sind Sachbeschädigungen Sache für den Antifaschistischen Abendspaziergang, nicht für einen Botellón.

… welche folgende Reaktion hervorbrachte:

Wir gehen davon aus, dass Sie ihre Aussage unglücklich gewählt haben, mangels besseren Wissen. Ändern Sie bitte diese Aussage, andernfalls müssen wir daraus schliessen, dass Sie mit Absicht den Ruf des Antifaschistischen Abendspaziergang[s] schädigen wollen.

Ich finde es immer noch amüsant, dass die leider anonym bleibende Person damals a) die Botellón-Web-Site aufmerksam durchgelesen hatte, b) über einen Computer verfügt, c) sich die Zeit genommen hat, um mir einen Brief zu schreiben und d) diesen nicht etwa per Mail, sondern per Briefpost versendet hatte.

Nun, ich glaube dieser „Spaziergang“ (selbst als Linker bin ich versucht, diesen „Spaziergang“ doch eher als alljährlichen „Saubannerzug“ zu bezeichnen) schadet sich wenn schon selber. Dessen Ruf ist längst ruiniert, meine Bemerkung auf botellon.ch ist da höchstens noch ein klitzekleiner Tropfen auf den heissen Stein.

Tags: , ,
Labels: Bern, Funny, Politik

2 Kommentare | neuen Kommentar verfassen

Samstag, 12. Februar 2011

Diktator weg, und jetzt soll Demokratie herrschen?

Verfolgt man die Freudensbekundungen meiner Bekanntschaften auf Facebook, so scheinen bei den meisten die Sicherungen durchgebrannt. Ihre Logik schaut ungefähr folgendermassen aus:

  1. Übler Diktator absetzen
  2. ???
  3. Vorzeige-Demokratie eingeführt

Kurz: Nur weil Mubarak jetzt anscheinend zurückgetreten ist und mit seinem Clan wohl demnächst das Weite (sprich: den Ruhestand im Diktator-Spa Saudi-Arabien) sucht, heisst das noch lange nicht, dass in Ägypten morgen nach nur einmal Schlafen auf einmal eine paradiesische Demokratie herrscht.

Nötige Klammer

Im Gegenteil: Wenn wir uns überlegen, wie lange die USA diesen Typen an der Macht gehalten hat, sollten wir hellhörig werden. Was wissen die USA, was die Demokratiefans in meiner Facebook-Gefolgschaft übersehen? Nun, wenn wir den Blick etwas östlicher nach Irak schweifen lassen, sehen wir, dass arabische Länder wie auf Valium friedlich und ruhig der Zukunft entgegengefolgt sind, wenn sie von einem Despoten regiert wurden. Peitsche, ohne irgendwelche Zuckerbrote, sozusagen. Diktatoren und ihre Schreckensherrschaft mit Militär, Polizei und Geheimdiensten scheinen die zwingend nötige Klammer zu sein, um viele arabische Kulturen zusammenzuhalten.

Gleichungen

Gerade deshalb verwundert es mich doch schon etwas, dass man hierzulande anscheinend folgende Gleichung für gültig hält:

Diktator absetzen = Demokratie = friedliches Zusammenleben

Ich würde realistisch-pessimistisch behaupten, dass viel eher folgende Gleichung gilt:

Diktator absetzen = Machtvakuum = Bürgerkrieg

Kuchen

Ich bin der vollen Überzeugung, dass das Gerangel um die (Neu)verteilung der Staatsschätze jetzt erst recht losgeht. Soeben noch vereint, werden sich die friedlichen Demonstranten sehr bald die Köpfe einschlagen, wenn es plötzlich um ihren Anteil am Kuchen geht.

Und dieser Kuchen ist leider viel, viel zu klein. Wieso? Wir dürfen nicht vergessen, dass die Proteste nicht zuletzt auf Grund der explosionsartigen Verteuerung der Nahrungsmittel ausgelöst wurden. Wer sich mit der europäischen Geschichte auskennt, wird hier Bekanntes wiederentdecken: 1789 stieg der Getreidepreis in Frankreich auf noch nie erlebte Höhen. Das Preismaximum war am 14. Juli desselben Jahres erreicht …

Nachtrag I

James Kunstler zieht den von mir hier angesponnen Faden noch etwas weiter:

The early triumphs in and around Paris after 1789 must have been soul-stirring, but you could forgive a casual observer who caught the scent of trouble in the air – and what followed was a years-long dismaying merry-go-round of mis-rule that climaxed in the Reign of Terror and finally resolved a full decade later in the crowning of another absolute monarch: the emperor Napoleon.  Gazing back at all that, it really took France nearly a century to get its act together politically from the moment that the governor of the Bastille surrendered his keys.

Quelle: Next – Clusterfuck Nation

Nachtrag II

Auch Bill Bonner, der bekanntermassen nie eine Rosa-Brille trägt, trifft den Nagel ebenfalls auf den Kopf:

Revolutions don’t always turn out well. The French Revolution was a good time to be in England. The Russian Revolution was a good time to be almost anywhere other than Russia. Even the American Revolution was a good time to be elsewhere too. And then, when Americans finally got their freedom from Britain they almost immediately began shackling one another.

Quelle: Revolution in Egypt and Where to Be When Black Swans Appear

Tags: ,
Labels: Politik

2 Kommentare | neuen Kommentar verfassen

Freitag, 11. Februar 2011

Die Finnen geben auf und wenden sich wieder der Sauna und dem Alkohol zu …

… oder so.

Clearly, Nokia threw in the towel. Not because they could not build, but because their building processes could not create greatness.

Quelle: Two turkeys don’t make an eagle, but no penguin will ever soar. | asymco

Manchmal sollten es Mobilfunkunternehmen wie Berühmtheiten halten: Mit einem fulminanten Abgang auf dem Höhepunkt der Karriere.

Nokia wird in meinen Gedanken immer als derjenige Handy-Hersteller in Erinnerung bleiben, der uns das 3210 brachte. Dasjenige Mobiltelefon, das die Mobilfunkrevolution hierzulande lostrat und nicht nur für Jahre definierte, wie ein Handy auszusehen und zu funktionieren hatte, sondern welchen Qualitätsmasstäben es gerecht zu werden hatte.

Zwar schafften es die Finnen in der Folge, noch einige Knaller auf den Markt zu bringen. Die zweite Mobilfunkrevolution — das Internet aus der Hosentasche — hat man aber im hohen Norden verpennt und wird so zu einem weiteren fiktiven Kapitel im Buch The Innovator’s Dilemma.

Tags: , , , ,
Labels: Apple, Wirtschaft

Keine Kommentare | neuen Kommentar verfassen

Freitag, 11. Februar 2011

Beobachtungen unterwegs auf der Strasse nachträglich deuten

Die 88-jährige Frau wurde am Donnerstag, 10. Februar 2011, etwa um 1625 Uhr, im Rollstuhl von ihrem Begleiter an der Bümplizstrasse in Bern von den Wohnhäusern herkommend in Richtung Esso-Tankstelle gefahren. Bei der Überquerung der Bümplizstrasse wurden sie auf dem Fussgängerstreifen von einem in Richtung Bethlehemstrasse fahrenden Autolenker erfasst. Während der Begleiter nur leichte Verletzungen erlitt, wurde die Frau im Rollstuhl weggeschleudert. Die Sanitätspolizei der Stadt Bern fuhr sie ins Spital, wo sie in der Nacht an den Folgen der Verletzungen verstorben ist.

Quelle: Kanton Bern (Kantonspolizei Bern): Medien – Aktuell

Gestern war ich unterwegs zu meinem Coiffeur, dem ich seit Jahrzehnten (!) treu bin, und kam per Zufall an der Unfallstelle vorbei. Dabei sah es vor Ort gar nicht so schlimm aus, obwohl im selben Moment gerade die Ambulanz an mir vorbeiraste …

Ich möchte angesichts dieser tragischen Umstände nicht behaupten, ein Abonnement der Pressemitteilungen der bernischen Kantonspolizei (RSS-Feed) „lohne“ sich — aber es hilft zumindest, Beobachtungen auf der Strasse nachträglich zu deuten.

Tags: , , ,
Labels: Bern, Schweiz

Keine Kommentare | neuen Kommentar verfassen