Alps, Munich

Lenovo ThinkPad X100e und Fedora 14

Nachdem die Installation von Fedora 13 auf dem Lenovo ThinkPad X100e nicht gerade besonders glatt lief, war ich sehr gespannt, wie sich Fedora 14 alias Laughlin auf dem System macht und welche Probleme zwischenzeitlich behoben wurden.

Schon beim ersten Start gab es eine positive Überraschung. Waren bei Fedora 13 noch Kernel-Optionen notwendig, um das System zu starten, fährt es nun bei Fedora 14 ohne Murren mit Plymouth hoch. Probleme gab es bei Fedora 13 außerdem mit der Steuerung der Hintergrundbeleuchtung und mit der Audioschnittstelle. Laughlin konnte auch hier punkten. Die Helligkeit lässt sich regeln, und endlich verstummen auch die eingebauten Lautsprecher, wenn man einen Kopfhörer anschließt. Das Suspend/Resume arbeitet nun ebenfalls einwandfrei, ohne dass ein Quirk notwendig ist. Das X100e geht problemlos schlafen und steht nach dem Aufwachen sofort wieder bereit.

Der für WLAN notwendige Treiber hat offenbar immer noch keinen Einzug in den Kernel erhalten, so dass es bei Fedora 14 weiterhin notwendig ist, den Treiberquelltext von Realtek herunterzuladen und selbst zu kompilieren. Hoffen wir, dass diese Schritte mit Fedora 15 der Vergangenheit angehören werden.

Eine Überraschung war, dass das Touchpad nun auch Multitouch unterstützt. Nach Installation des Pakets gpointing-device-settings konnten die entsprechenden Optionen ausgewählt werden, um zum Beispiel zum Scrollen mit zwei Fingern über das Touchpad zu wischen.

Vom fehlenden WLAN-Treiber abgesehen, zeigt sich Fedora 14 auf dem X100e von seiner besten Seite. Es macht richtig Spaß, mit dem Netbook zu arbeiten.

Flattr4j: A Java library for Flattr

The microdonation service Flattr is currently working on a REST API for accessing the flattr account. I have created a Java client called flattr4j, which makes accessing the API easier.

The client also supports the Open API and JavaScript API via a JSP taglib, as well as Maven and Spring. As long as the Flattr REST API is not public yet, you need to send a proposal to Flattr.

Have fun trying it out! Your feedback is welcome.

How to fetch a random entry with Hibernate

I recently found myself in the situation where I needed Hibernate to query a single, random entry from a table of Picture entities.

There is a simple way. Some DBMS allow to shuffle the result set by bringing the rows into a random order. For instance, in MySQL it is possible to use a query like this:

SELECT id FROM picture ORDER BY rand() LIMIT 1;

Since Hibernate delegates unknown function calls to the underlying DBMS, rand() could be used in a HQL query as well:

q.createQuery("FROM picture ORDER BY rand()").setMaxResults(1);

However this query would require MySQL, so we would sacrifice the benefit of Hibernate acting as an abstraction layer to the underlying database. HQL on the other hand does not offer a similar function.

A solution is to use the pagination technique. First we count the number of entries, and then select a random entry using setFirstResult(). With Hibernate Criteria, it would look something like this:

Criterion restriction = yourRestrictions;
Object result = null;  // will later contain a random entity
Criteria crit = session.createCriteria(Picture.class);
crit.add(restriction);
crit.setProjection(Projections.rowCount());
int count = ((Number) crit.uniqueResult()).intValue();
if (0 != count) {
  int index = new Random().nextInt(count);
  crit = session.createCriteria(Picture.class);
  crit.add(restriction);
  result = crit.setFirstResult(index).setMaxResults(1).uniqueResult();
}

restriction contains further restrictions to the result set (like only pictures that have been published). At the end, result contains a random single entry from the Picture entity, or null if the result set was empty.

Die CSU und die Sperrklausel des Grauens

Der Artikel ist von 2010 und bezieht sich auf die Bundestagswahl von 2009. Die grundsätzliche Problematik gilt natürlich generell, auch wenn die konkreten Zahlen von der jeweiligen Wahlbeteiligung abhängen. Interessant ist übrigens, dass der Artikel eine Partei rechts von der Union bereits damals vorhergesagt hat.

Wie funktioniert das eigentlich mit der CDU und CSU? Wie kann es sein, dass eine der beiden Parteien nicht auf dem Stimmzettel zu finden ist, sie dann aber doch gemeinsam im Koalitionsboot sitzen? Auch wenn man nicht immer diesen Eindruck hat: Es handelt sich tatsächlich um zwei eigenständige Parteien. Die CDU kann man allerdings nicht in Bayern wählen, die CSU nicht außerhalb. Beide Parteien müssen (wie jede andere Partei in Deutschland auch) bei einer Bundestagswahl jeweils die fünf-Prozent-Hürde knacken, um in den Bundestag einziehen zu dürfen. Für die CSU haben dafür bisher alleine die Stimmen aus Bayern ausgereicht, um die Partei deutschlandweit komfortabel über die 5% zu heben.

Aber wie komfortabel ist diese Stimmenzahl wirklich, oder anders gefragt: Wie schlecht müsste die CSU in Bayern abschneiden, um gerade noch in den Bundestag einziehen zu können? Wagen wir also ein Gedankenexperiment und fragen uns, wie viele gültige Wählerstimmen bei der Bundestagswahl 2009 in Bayern mindestens notwendig gewesen wären.

Erst einmal die Fakten. In dem offiziellen Wahlergebnis heißt es, bundesweit entfielen auf die CSU 2.830.238 Zweitstimmen. Bei 6.720.532 gültigen Wählerstimmen in Bayern kam die CSU damit auf komfortable 42,5%. Bei einer Bundestagswahl müssen die Zahlen allerdings deutschlandweit betrachtet werden. Bei 43.371.190 gültigen Wählerstimmen in ganz Deutschland entfielen damit tatsächlich nur 6,5% der Stimmen auf die CSU.

Um bei 43.371.190 gültigen Wählerstimmen die fünf-Prozent-Hürde zu nehmen, benötigt eine Partei mindestens 2.168.560 Stimmen. Die CSU muss diese alleine in Bayern aufbringen. Bei den dortigen 6.720.532 gültigen Wählerstimmen sind das mindestens 32,3%, die die CSU im eigenen Land mindestens erreichen musste, um in den Bundestag ziehen zu können. Natürlich ist das keine statische Grenze. Sie hängt von der Zahl der gültigen Wählerstimmen bundesweit und in Bayern ab, und damit auch direkt von der Wahlbeteiligung.

Je mehr Wähler bundesweit überhaupt eine gültige Stimme abgeben, desto mehr Wähler muss die CSU im eigenen Land aufbringen, um es über diese Hürde zu schaffen.

Mit diesen Zahlen im Hinterkopf ist es gut zu verstehen, warum bei der CSU im August 2010 die Nerven blank lagen, nachdem eine unveröffentlichte Umfrage ergab, dass sie derzeit nur noch auf rund 38% der Stimmen käme. Wenn sich dieser Abwärtstrend fortsetzt, wird die nächste Bundestagswahl erstmalig eine Zitterpartie für die Christsozialen. Und damit auch für die CDU, denn scheitert die CSU an der fünf-Prozent-Hürde, fehlen der gesamten Union schlagartig ebendiese Prozentpunkte.

Die Schuld sieht die CSU in der mieserablen Koalitionsarbeit und darin, dass die große Schwester den rechten Flügel zu stark vernachlässige. Sollte die Stimmenerosion so weitergehen, könnte es die CSU zu einem drastischen Schritt zwingen, um sich zu retten: das Aufkündigen der Union und die Umorganisation in eine eigenständige, stärker rechtsorientierte und bundesweit wählbare Partei. Sie würde das Vakuum rechts der Union füllen und dürfte der CDU einige Stimmen kosten. Stehen wir also vor einer weiteren Zersplitterung einer ehemaligen Volkspartei, so wie es die SPD mit den Linken erfuhr?