The Last Oil Shock von David Strahan

In den letzten Tagen habe ich das Buch The Last Oil Shock von David Strahan gelesen. Ein sehr interessantes Buch, das mit einer Unmenge Fussnoten einen nachverfolgbaren Überblick zum Thema Peak Oil gibt. Peak Oil ist eine alte These, entstanden in den 1950er Jahren.

Und dass es einen Peak Oil geben wird, darüber müssen wir ja wohl nicht streiten, oder? Es gibt eine begrenzte Menge Erdöl und wir (also die Menschheit) fördern seit über 100 Jahren mit immer steigenden Mengen Erdöl. Ist also nur eine Frage der Zeit, bis wir die maximal mögliche Menge pro Tag fördern und bis wir irgendwann gar kein Erdöl mehr fördern werden. Die interessantere Frage ist: Wie lange wird es dauern, bis wir global eine fallende Menge förderbaren Erdöls bemerken werden?

Die meisten von David Strahan zitierten Studien sagen den globalen Peak für ungefähr 2010 voraus. Einige Mal verweist Strahan darauf, dass wir einen Peak wohl erst im Nachhinein erkennen werden. Und er bringt einige glaubhafte Fakten, dass wir uns bereits mitten im decline befinden, also dem Bereich der fallenden Fördermengen. Wenn man die Nachrichten der letzten Monate (Deep sea mining, oil sands, arctic mining u.a.) nimmt, haben es die Ölfirmen schon verstanden. Es werden immer riskantere Unternehmungen notwendig, um Öl zu fördern. Und es wird immer teurer.

Ich glaube also, dass es wirklich bald zu einem Ölschock kommen wird. Und die Politik (oder besser: die Realpolitik) hat sich bereits darauf eingestellt. Angefangen mit der amerikanischen Invasion im Irak (der Irak hat Ölreserven), danach die Feindseligkeiten zum Iran (der Iran hat Öl- und Erdgasreserven) und jetzt der Krieg in Libyen (Libyen hat… naja, Öl- und Gasreserven im Syrtebecken). Und das sich sowohl England als auch Frankreich gleich mit in die Konflikte stürzen, hat bestimmt auch was mit der kommenden Energiekrise zu tun. England befindet sich sogar noch in einer exponierteren Lage, da sie selbst weder ausreichend regenerative noch Atomenergie haben.

Was bedeutet das jetzt?

Es zeichnet sich ja im abstürzenden Finanzmarkt bereits ab: Rezession. Ach ja, und Unruhe, Krieg, fallender Lebensstandard. Vielleicht noch Hungersnöte, weil mit Biokraftstoffen die existierenden Autos weiterbetrieben werden sollen und die Anbauflächen dann für Nahrung fehlen. Sieht man jetzt auch schon, wenn die Hedgefunds in Afrika das Land aufkaufen, um darauf Biodiesel anzubauen. Und der Ölpreis (und damit der Preis für Energie an sich) wird explodieren. Im Moment wird das etwas durch die globale Krise abgefedert, und so ein Auf und Ab sagt auch David Strahan voraus. Der eigentliche Niedergang der Ölförderung wird dadurch etwas verschleiert, aber nicht verhindert.

Was sind die Auswirkungen?

Einfach ausgedrückt kann man folgendes sagen: Energie wird teuer. Egal, ob das Treibstoff, Elektrizität oder Nahrung ist. Dadurch wird unsere geliebte Mobilität eingeschränkt. Auto fahren wird wieder Luxus. Flugreisen werden ganz wegfallen (Treibstoff für Jets ist erstmal nicht durch Biotreibstoff zu ersetzen). Das Leben in den Großstädten wird sich radikal verändern, weil es sich kaum noch jemand leisten kann, a) weite Strecken zur Arbeit zu fahren, b) Nahrung über weiter Strecken heranschaffen zu lassen und c) das Leben in der Stadt insgesamt auf Energiekonsum ausgelegt ist.

David Strahan zeigt im Buch auch, dass die momentanen Anstrengungen völlig unzureichend sind. Die Industrie (und die Menschheit) ist immer noch auf Wachstum ausgelegt und das wird sich nicht ohne Öl weiterführen lassen. Ausserdem wird immer noch versucht, durch die Energiealternativen den bisherigen Lebensstandard zu halten. Er hat einige Rechenbeispiele im Buch, die aufzeigen, dass man z.B. zum Erhalt der Autoflotte von Amerika das gesamte Land zum Anbau von Biosprit bräuchte. Oder dass Hydrogenkraftstoff keine Kraftstofflösung ist. Und das Erdgas so eng an den Ölpreis gekoppelt ist, dass auch damit kein Ausweg aufgetan ist.

Alles in allem ist das Buch eine Sammlung von Fakten, was mir entgegen kommt. Hin und wieder kommt die starke Meinung von David Strahan und seine Verzweiflung an der momentanen politischen Situation durch. Aber das kann man ertragen und vielleicht hilft es dem Leser auch, das Dilemma der jetzigen politischen Führung zu erkennen: wer wiedergewählt werden will, kann nichts anderes als Wachstum fordern.

Also, mein Tipp: Lest das Buch! Und wenn ihr damit fertig seid, dann lest die anderen Bücher von meiner Peak Oil-Liste.

Mobile template for Lilina RSS feedreader

Update: In the meantime I forked Lilina on github. You can get the files for my mobile template from there.

Yesterday I installed Lilina on my quest for a replacement of Google Reader and I missed a nice way to read my feeds from my mobile device. Unfortunatly there is nothing like the android app for tiny tiny rss, so I decided to build a nicer template made for mobile devices.

This is my first shot:

Lilina Mobile Template
Lilina Mobile Template
Lilina Mobile Template

If you want to have a look at my installation, head over to my self-hosted homepage.

Unfortunatly I have a problem with the templating system. I have yet to figure out how to solve my issue, because the IUI framework I use to generate nice iphony screens needs the HTML markup in a very specific way and I’m not able to generate it that way at the moment. But I think that’s only a minor problem and I hope to solve it soon.

Fitbit API zeigt Zeitpunkt des letzten Sync

Heute gab es eine interessante Ankündigung für die Fitbit API:

We’ve included the tracker last sync time to the API endpoints with the latest platform development. Have a look at the documentation here: https://wiki.fitbit.com/display/API/API-Get-Devices

Die entsprechende Antwort in der API sieht jetzt so aus:

{
    "devices":
    [
        "device":
        {     
            "battery":<value>,
            "id":<value>,
            "lastSyncTime":<value>
        }
        <..>
    ]
}

Das find ich ja sehr gut. Ich werd das demnächst mal auf kopis.de einbauen.

Google vs. Apple

Ich weiß nicht, ob es euch aufgefallen ist: Goole hat Motorola Mobility gekauft. Das kann man jetzt gut finden oder schlecht, Tatsache ist aber, dass Google langsam aber sicher Apple den ersten Platz im Mobilfunkgeschäft streitig machen wird.

Wie ich darauf komme? Das Iphone ist mittlerweile Massenware. Jeder DeppMöchtegern-Geek hat mittlerweile ein Iphone. Der Markt ist gesättigt. Was will Apple jetzt tun, damit man die Zuwachsraten der letzten Jahre halten kann? Wollen sie noch mehr Iphones verkaufen, müssen sie andere Käuferschichten erreichen – und da bleiben nur die Schichten mit niedrigen Verkaufspreisen übrig. Also wird es vielleicht ein Billig-Iphone geben? Wohl erst, wenn Steve Jobs endgültig die Unternehmensleitung und damit die völlige Kontrolle abgegeben wird. Ich glaube, das passiert erst, wenn er so krank ist, dass er keinen Schritt mehr tun kann…

Bis dahin wird es aber so viele unterschiedliche Android-Smartphones geben, dass alle anderen Smartphone-Käufer bereits ein Android haben werden. Und mit Motorola Mobility hat Google jetzt einen Hersteller mit dem notwendigen Knowhow gekauft, so dass sie selbst relativ unabhängig auf dem Markt agieren können – genau wie Apple das seit jeher mit seiner Hardware getan hat. Und auch die billigeren Modelle wird Google dann in den Markt bringen können, so dass Apple kaum noch Käufer finden wird.

Auch die Verkaufszahlen des Ipods werden Apple dann nicht mehr retten, denn wer kauft schon noch einen Ipod, wenn man mit dem Smartphone und einer 32GB-SD-Karte für ein paar Euro einen anständigen Mediaplayer bekommt?

Dazu kommt noch die arrogante Bevormundung der Kunden durch Apple. Neues Betriebssystem auf alter Hardware? Vergiss es. Mehr Funktionen in den Geräten? Vergiss es. Selbst was an der Software schrauben? Vergiss es.

Ich sage jetzt jedenfalls voraus, dass Apple es in Zukunft nicht mehr so einfach haben wird.

Cyanogenmod 7 auf dem Samsung Galaxy S2 (i9100)

Am Wochenende habe ich mein Samsung Galaxy S2 (i9100) von der Stock Firmware befreit. Der Grund dafür ist einfach: ich möchte so nah wie möglich am Original-Android von Google dran sein. Und leider hat auch Samsung einige Modifikationen am Betriebssystem vorgenommen, die ich nicht besonders gut finde.

Z.B. muss man Updates per Windows-Software einspielen. Was natürlich auf meiner Debian-Maschine etwas schwierig wird… Zum anderen will ich diese ganzen vorinstallierten Anwendungen nicht haben. Wer hat von euch schon den Readers Hub oder den Social Hub benutzt? Ich jedenfalls nicht.

Ich lege auch keinen großen Wert auf Eyecandy (deshalb ist MIUI) auch wieder schnell von meinem Telefon verschwunden. Das pure Android ist ausreichend für mich, das jeder Herstellers noch ein eigenes Aussehen drüber legt fällt für mich in die Kategorie Marketing

Jetzt aber zum Eingemachten: wie installiere ich ClockworkMod Recovery und anschließend Cyanogenmod 7 auf dem Samsung Galaxy S2 (i9100)?

Hier also die einzelnen Schritte, um Cyanogenmod 7 zu installieren:

  • heimdall runterladen und entpacken: http://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.0-win32.zip
  • Unter Windows: Galaxy S2 ausschalten, danach Home + Lautstärke runter gedrückt halten und gleichzeitig per USB an den Rechner anschliessen. Damit wird der Download-Modus gestartet. Jetzt die zadig.exe im Verzeichnis drivers ausführen. Aus dem Menü Options den Eintrag List all devices auswählen, anschliessend Samsung USB Composite Device or Gadget Serial aus der Auswahlliste wählen. Jetzt nur noch auf Install driver klicken.
  • Galaxy S2 ausschalten
  • codeworkx’s Kernel mit ClockworkMod Recovery 4.0.1.4 runterladen und in das Verzeichnis von Heimdall entpacken: http://cmw.22aaf3.com/c1/recovery/recovery-clockwork-4.0.1.4-galaxys2.tar
  • Ein Terminalfenster öffnen und in das Verzeichnis von Heimdall wechseln (Windows 7: shift+rechtsklick auf das Verzeichnis von Heimdall, dann Open command line here auswählen)
  • Galaxy S2 durch gleichzeitiges gedrückhalten von Home + Lautstärke runter einschalten.
  • Folgenden Befehl eingeben: heimdall flash --kernel zImage
  • Wenn das Geräte neustartet, ist ClockworkMod Recovery installiert
  • den neusten nightly build von cyanogenmod runterladen: http://download.cyanogenmod.com/?type=nightly&device=galaxys2
  • die neuste Version der Google Apps runterladen: http://wiki.cyanogenmod.com/wiki/Latest_Version#Google_Apps (für cyanogenmod7 gibt es nur noch einen Download und keine Unterscheidung zwischen Tiny/MDPI/Tegra/HDPI)
  • die ZIP von cyanogenmod7 und den Google Apps auf das Telefon kopieren. Ich habe den internen Speicher benutzt.
  • Telefon ausschalten und mit Home + Lautstärke runter + Power in ClockworkMod Recovery booten.
  • Mit Lautstärke hoch/runter die Option Wipe data/factory reset auswählen und mit Home bestätigen.
  • Anschliessend mit Lautstärke hoch/runter die Option Wipe cache partition auswählen und mit Home bestätigen.
  • Anschliessend mit Lautstärke hoch/runter die Option Install ZIP from sdcard auswählen und mit Home bestätigen. Danach zu dem kopierten ZIP von cyanogenmod7 navigieren (auch über Lautstärke+Home) und mit Home bestätigen.
  • Wenn die Installation beendet ist, mit Power ins Hauptmenü zurückwechseln und Reboot system auswählen und mit Home bestätigen.

Lest euch auch noch die Wiki-Seite zum Update durch!

Ich flashe mittlerweile mit dem ROM Manager die nächsten Updates. Das ist sehr viel einfacher und man kann alles am Telefon machen, ohne überhaupt in die Nähe eines Rechners zu müssen. Vor den Updates erstelle ich Backups des ROMs über ClockworkMod Recovery, ausserdem sichere ich mittlerweile meine Anwendungen und Anwendungseinstellungen mit Titanium Backup.

Lesbarer Sourcecode – functional style

Heute hatte ich die Gelegenheit, ein längliches Stück Sourcecode aufzuräumen. Ich habe dabei versucht, meine Erfahrungen aus der funktionalen Programmierung in meine Hauptsprache Java einzubringen.

So ähnlich sah der Code vorher aus:

Und so ungefähr sieht der neue Code aus:

Der echte Code ist noch etwas lesbarer geworden, da ich die komplexe Erstellung der ObjectTuple und die noch längere Berechnung in Hilfsmethoden ausgelagert habe. Vorher musste man mühsam die verschiedenen Werte, die in die Berechnung einflossen, in jeder der if-Abfrage raussuchen und anschliessend noch einmal verstehen, was da aufgerufen wurde. Mit einem sprechenden Methodennamen in der foreach-Schleife sieht man auf einen Blick, was dort für alle Objekte passiert. Vor der Schleife wird eine einfache Liste erstellt, für die ich eine einfache Klasse zum Ablegen der zusammengehörigen Daten eingeführt habe. Ich nenne diese Klassen einfach Tuple, da sie zu nichts ausser dem Festhalten der Beziehung dieser Daten für die folgende Berechnung dient.

Ich bin mittlerweile eh ein großer Fan von Listen und überlege jetzt immer sehr genau, ob ich ein Objekt oder gleich eine Liste von Objekten zurückgeben soll. Damit erspart man sich auch die meisten Probleme, die man mit null als Rückgabewert von Methoden einhandelt…

Wie auch immer, jedenfalls konnte ich den Sourcecode um einige Zeilen und einige Pfade erleichtern. Die Abdeckung des Codes ist gestiegen, die Lesbarkeit hat sich (jedenfalls nach meiner Meinung) verbessert und sie lebten glücklich bis zur nächsten Anforderungsinflation. 😉

Debian Package for s3fs

Update: I tried to upload my package to mentors.debian.net. You can see it at http://mentors.debian.net/package/s3fs. I messed up the package information files, so Loïc Minier is still set as maintainer. I will fix that in the future.

Because I’m using Amazons S3 service a lot lately, I want to have an easy way to mount, transfer and delete files on my buckets. Unfortunatly, s3fs wasn’t available on my debian installation, so I couldn’t mount a bucket and use it as a local directory.

Well, it wasn’t available. Because I decided to build a .DEB package for it. Download s3fs_1.40-1_amd64.deb here.

If you have any problems installing it, please leave a comment or drop me a mail</a>. It’s my first debian package, so I’m not quite sure if it works. I tried submitting it to the official channels, but my GPG key is not yet uploaded. I’m thinking about setting myself up as a maintainer…

Kindle Cloud Reader

Endlich ist es soweit: Amazon hat einen Online-Reader für die Kindle-Bücher aufgemacht!

Jetzt kann ich wirklich von jedem Rechner aus auf meine Bücher zugreifen und sie lesen. Hier sind ein paar Screenshots:

Kindle Cloud Reader
Kindle Cloud Reader - Buch geöffnet

Demnächst werd ich nochmal drüber berichten, wenn ich ein paar Seiten in der Anwendung gelesen hab.

Leiningen behind a local nexus repository

Today I tried to use leiningen on a development machine where I had set up a network-local nexus repository for my maven distribution management. And it took me some minutes to get leiningen to work, because it always failed with a message like this:

----------
1 required artifact is missing.

for artifact:
  org.apache.maven:super-pom:jar:2.0

from the specified remote repositories:
  clojure (http://mylocalrepository/nexus/content/groups/public),
  clojars (http://mylocalrepository/nexus/content/groups/public),
  clojure-snapshots (http://mylocalrepository/nexus/content/groups/public),
  central (http://mylocalrepository/nexus/content/groups/public)


        at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTra
nsitively(DefaultArtifactResolver.java:324)
        at org.apache.maven.artifact.ant.DependenciesTask.doExecute(Dependencies
Task.java:170)
        ... 34 more

I noticed that there was the URL to http://mylocalrepository in the error messages and that I probably hadn’t all the clojure stuff configured there. In fact, I didn’t think about that at all. I don’t want the clojure dependencies to live in that repository, so I have to exclude it from my maven mirror settings in USERDIR/.m2/settings.xml:

<mirrors>
  <mirror>
    <id>nexus</id>
    <!-- use this mirror for everything excluding clojars and clojure: -->
    <mirrorOf>*,!clojars,!clojure</mirrorOf>
    <!-- use this mirror for all external repositories:
    <mirrorOf>*</mirrorOf>
    -->
    <url>http://mylocalrepository/nexus/content/groups/public</url>
  </mirror>
</mirrors>

After that leiningen downloaded all the dependencies and was generally more helpful. 😉

USB unter Java

Am Wochenende habe ich mich kurz zum aktuellen Stand des USB-Zugriffs unter Java umgesehen. Und ich muss sagen: Es sieht gar nicht gut aus.

libusb4j ist bereits on hold, der Fork libusb4j auf Project Kenai sieht auch tot aus. Ausserdem kann man nach dem Auschecken so gut wie gar nichts damit anfangen… Das letzte Release von javax-usb ist auch schon von 2008 – kein gutes Zeichen, schliesslich haben wir mittlerweile USB3.0 und ich vermute, da gibt es auch noch ein paar Änderungen, die man in so eine Bibliothek einfliessen lassen kann.

Ich habe mich noch ein wenig auf Github umgesehen und auch da findet man diverse USB-Schnittstellen, die aber allesamt eher nach interner Entwicklung aussehen. Jedenfalls hat mich bei keiner ein Juhu-das-will-ein-ausprobieren-Gefühl überkommen.

Da ich aber unbedingt auf ein USB-Gerät zugreifen möchte, für das es keine geeignete Software für mich – aber eine Umsetzung in Python gibt, muss ich wohl oder übel meine eigene Bibliothek anfangen. Basierend auf JSR 80 und JNA, hoffentlich anständig gekapselt für Linux und später für Windows.

Aber bis ich mich entschlossen habe, werde ich noch weiter suchen und vielleicht mal auf StackOverflow nachfragen.

Update: Es scheint, als gäbe es noch andere versprengte Entwickler: Auf der Mailing Liste von javax-usb kann man von diesem Projekt und diesem lesen.