<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[balumba.org]]></title>
  <link href="http://balumba.org/blog//atom.xml" rel="self"/>
  <link href="http://balumba.org/blog//"/>
  <updated>2012-01-12T01:51:30+01:00</updated>
  <id>http://balumba.org/blog//</id>
  <author>
    <name><![CDATA[Florian Wallner]]></name>
    <email><![CDATA[wallner@balumba.org]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[Lieblingsmusik 2011]]></title>
    <link href="http://balumba.org/blog//post/2012/01/08/lieblingsmusik-2011/"/>
    <updated>2012-01-08T17:18:00+01:00</updated>
    <id>http://balumba.org/blog//post/2012/01/08/lieblingsmusik-2011</id>
    <content type="html"><![CDATA[<p>Für 2010 habe ich es versehentlich nicht getan, aber dieses Jahr ist ist natürlich wieder ein
Rückblick fällig. Wie schon in den letzten Jahren hat die Reihenfolge nicht unbedingt eine
Bedeutung.</p>

<ul>
<li>The King Blues - <a href="http://musicbrainz.org/release/04017d57-82e9-4fa7-99e5-f3b80a4eb704">Punk &amp; Poetry</a></li>
<li>Ja, Panik - <a href="http://musicbrainz.org/release/4eab8683-6fda-4938-b8f8-ce83a082e13d">DMD KIU LIDT</a></li>
<li><a href="http://musicbrainz.org/artist/0b7a1a30-3135-4c18-83e4-d724bd9031aa">Rachel Goodrich</a> - Rachel Goodrich</li>
<li>Frank Turner - <a href="http://musicbrainz.org/release/147d251d-717d-40da-b59e-904802afa85c">England Keep My Bones</a></li>
<li>Lykke Li - <a href="http://musicbrainz.org/release/bd2c833e-725b-4947-a26c-c776a727c375">Wounded Rhymes</a></li>
</ul>


<p>Erschreckt stelle ich fest, dass ich für 2011 nur noch auf fünf Alben komme, das war <a href="post/2008/12/09/lieblingsmusik-2008/">2008</a> und
<a href="post/2009/12/30/lieblingsmusik-2009/">2009</a> noch anders. Liegt das daran, dass die Qualität der Musil im letzten Jahr einfach abgenommen
hat, oder wende ich nicht mehr genug Zeit für mein einstmals liebstes Hobby auf? Ich hoffe, dass es
dieses Jahr wieder besser wird.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Regenbogen]]></title>
    <link href="http://balumba.org/blog//post/2011/05/28/regenbogen-2/"/>
    <updated>2011-05-28T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2011/05/28/regenbogen-2</id>
    <content type="html"><![CDATA[<p>Manchmal, in ganz seltenen Momenten kann auch der Potsdamer Platz in Schönheit strahlen:</p>

<p><img src="http://balumba.org/blog//assets/potsdamerPlatz1.jpg"></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Junits Parameterized Test-Runner und die Reflections-Bilbiothek]]></title>
    <link href="http://balumba.org/blog//post/2011/05/26/junits-parameterized-test-runner-und-die-reflections-bilbiothek/"/>
    <updated>2011-05-26T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2011/05/26/junits-parameterized-test-runner-und-die-reflections-bilbiothek</id>
    <content type="html"><![CDATA[<p>Im Rahmen eines Projektes stieß ich auf ein ein interessantes Problem: Alle meine mit <a href="http://www.hibernate.org/">Hibernate</a> persistierten Entity-Klassen sollen ein Interface implementieren, das folgendermaßen aussieht:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
</pre></td><td class='code'><pre><code class='java'><span class='line'><span class="kd">public</span> <span class="kd">interface</span> <span class="nc">EntityIf</span> <span class="kd">extends</span> <span class="n">Serializable</span> <span class="o">{</span>
</span><span class='line'>    <span class="n">Long</span> <span class="nf">getId</span><span class="o">();</span>
</span><span class='line'>
</span><span class='line'>    <span class="n">Date</span> <span class="nf">getCreated</span><span class="o">();</span>
</span><span class='line'>
</span><span class='line'>    <span class="n">UUID</span> <span class="nf">getUUID</span><span class="o">();</span>
</span><span class='line'>
</span><span class='line'>    <span class="nd">@Override</span>
</span><span class='line'>    <span class="n">String</span> <span class="nf">toString</span><span class="o">();</span>
</span><span class='line'><span class="o">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Um das Problem noch etwas interessanter zu gestalten, wurde  eine abstrakte Klasse geschrieben, die
eben dieses Interface implementiert und von dem dann alle Wald- und Wiesen-Entities ableiten können.
Auf diese Weise soll das &#8220;Copy &#8216;n&#8217; Waste threshold&#8221; reduziert werden.</p>

<p>Um sicher zu stellen, dass die Entities im System dieses Interface nicht nur implementieren, sondern
sich auch so verhalten, wie es ursprünglich gedacht war, sollen alle Entities mit einem Unit-Test, der
die im Interface definierten Methoden testet,  eben darauf geprüft werden. Mit <a href="http://www.junit.org/">JUnit</a> ist dieser
Test schnell geschrieben: JUnit 4 bietet mit dem &#8221;<a href="http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit">Parameterized Test Runner</a>&#8221; die Möglichkeit,
diese einmal geschriebene Unit-Tests gegen zur Laufzeit generierte Testdaten auszuführen. Dazu muss
eine Testklasse folgende Bedingungen erfüllen:</p>

<ul>
<li>Die Test-Klasse muss mit dem <em>Parameterized Test-Runner</em> ausgeführt werden. Dies wird erreicht, indem man die Testklasse mit <code>@RunWith(Parameterized.class)</code> annotiert.</li>
<li>Eine statische Methode, welche die Test-Daten erzeugt.</li>
<li>Ein einziger Konstruktor, der als Parameter die erzeugten Test-Daten akzeptiert und diese für die Tests vorhält.</li>
<li>Natürlich mindestens eine Test-Methode (annotiert mit <code>@Test</code>)</li>
</ul>


<p>Die statische Methode, welche die Test-Daten erzeugt, muss mit <code>@Parameters</code> annotiert werden und eine
<code>Collection</code> von Arrays zurück geben. Die Anzahl derElemente eines Arrays muss der Anzahl an Parametern
des Konstruktors entsprechen, denn die Arrays werden genutzt um zur Laufzeit der Klasse die Testobjekte
zu erzeugen.</p>

<p><a href="http://www.junit.org/">JUnit 4</a> stellt also eine Möglichkeit zur Verfügung, mit relativ einfachen Mitteln Tests zur
Laufzeit dynamisch zu erzeugen. Es fehlt nur noch eine Möglichkeit, zur Laufzeit alle mein Interface
implementierenden Klassen zu identifizieren. Es stellte sich heraus, dass das schwieriger zu
realisieren war, als erwartet. Die JVM bietet nämlich von Hause aus keine einfache Methode, um alle zur
Laufzeit im Classloader zur Verfügung stehenden Implementierungen einer Klasse zu ermitteln. Auch das
fantastische Buch &#8221;<a href="http://www.manning.com/forman/">Java Reflection in Action</a>&#8221; zeigte keinen gangbaren Weg auf.</p>

<p>Zur Hilfe kam die  Bibliothek <a href="http://code.google.com/p/reflections/">Reflections</a>, die unter der LGPL bei <a href="http://code.google.com/">Google-Code</a> bezogen werden
kann. Reflections scannt den Classpath des einbindenden Projekts, indiziert die Metadaten der Elemente
des Classpaths und stellt diese für Abfragen bereit. Die oben beschriebene Suche nach allen (indirekt,
also auch in zweiter Generation) ein Interface implementierenden Klassen als Daten-Provider für meinen
Unit-Test mit den oben beschriebenen &#8221;<a href="http://blogs.oracle.com/jacobc/entry/parameterized_unit_tests_with_junit">Parameterized Test Runner</a>&#8221; sieht mit dem Einsatz der
 Bibliothek wie folgt aus:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
<span class='line-number'>17</span>
<span class='line-number'>18</span>
<span class='line-number'>19</span>
</pre></td><td class='code'><pre><code class='java'><span class='line'>    <span class="nd">@Parameters</span>
</span><span class='line'>    <span class="kd">public</span> <span class="kd">static</span> <span class="n">Collection</span> <span class="nf">dataParameters</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">InstantiationException</span><span class="o">,</span> <span class="n">IllegalAccessException</span> <span class="o">{</span>
</span><span class='line'>       <span class="n">Reflections</span> <span class="n">reflections</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Reflections</span><span class="o">(</span><span class="k">new</span> <span class="n">ConfigurationBuilder</span><span class="o">()</span>
</span><span class='line'>                <span class="o">.</span><span class="na">setUrls</span><span class="o">(</span>
</span><span class='line'>                    <span class="n">ClasspathHelper</span><span class="o">.</span><span class="na">getUrlsForPackagePrefix</span><span class="o">(</span><span class="s">&quot;org.balumba.project&quot;</span><span class="o">)</span>
</span><span class='line'>                 <span class="o">)</span>
</span><span class='line'>                <span class="o">.</span><span class="na">setScanners</span><span class="o">(</span><span class="k">new</span> <span class="n">SubTypesScanner</span><span class="o">()));</span>
</span><span class='line'>        <span class="n">Set</span><span class="o">&lt;</span><span class="n">Class</span><span class="o">&lt;?</span> <span class="kd">extends</span> <span class="n">EntityIf</span><span class="o">&gt;&gt;</span> <span class="n">subTypes</span> <span class="o">=</span> <span class="n">reflections</span><span class="o">.</span><span class="na">getSubTypesOf</span><span class="o">(</span><span class="n">EntityIf</span><span class="o">.</span><span class="na">class</span><span class="o">);</span>
</span><span class='line'>        <span class="n">List</span><span class="o">&lt;</span><span class="n">Object</span><span class="o">[]&gt;</span> <span class="n">result</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Object</span><span class="o">[]&gt;();</span>
</span><span class='line'>        <span class="k">for</span> <span class="o">(</span><span class="n">Class</span> <span class="n">cls</span> <span class="o">:</span> <span class="n">subTypes</span><span class="o">)</span> <span class="o">{</span>
</span><span class='line'>            <span class="k">if</span> <span class="o">(</span><span class="n">Modifier</span><span class="o">.</span><span class="na">isAbstract</span><span class="o">(</span><span class="n">cls</span><span class="o">.</span><span class="na">getModifiers</span><span class="o">()))</span> <span class="o">{</span>
</span><span class='line'>                <span class="k">continue</span><span class="o">;</span>
</span><span class='line'>            <span class="o">}</span>
</span><span class='line'>            <span class="n">Object</span><span class="o">[]</span> <span class="n">entry</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Object</span><span class="o">[]{</span><span class="n">cls</span><span class="o">.</span><span class="na">newInstance</span><span class="o">()};</span>
</span><span class='line'>            <span class="n">result</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">entry</span><span class="o">);</span>
</span><span class='line'>        <span class="o">}</span>
</span><span class='line'>        <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">();</span>
</span><span class='line'>        <span class="k">return</span> <span class="n">result</span><span class="o">;</span>
</span><span class='line'>    <span class="o">}</span>
</span></code></pre></td></tr></table></div></figure>


<p>Von Bedeutung sind hier besonders die Zeilen drei bis acht, die mittels des <code>ConfigurationBuilder</code>
die Reflections Bibliothek konfiguriert. Der verwendete <a href="http://reflections.googlecode.com/svn/trunk/reflections/javadoc/apidocs/org/reflections/scanners/SubTypesScanner.html">SubTypeScanner</a> scannt den Classpath nach
Superklassen und Interfaces, und stellt diese Informationen für spätere Abfragen bereit. Die Zeile
acht liefert dann ein <a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html">Set</a> aller Sub-Typen des EntityIf-Interfaces. Zeile 12 stellt sicher, dass
keine abstrakte Klasse in den Test-Daten landet, denn die kann ja vom Test dann nicht instantiiert
werden. Hier wird die normale Reflections-Api von Java genutzt, <a href="http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Modifier.html">Modifier</a> ist eine Klasse, die Zugriff auf die Modifier einer Klasse liefert.</p>

<p>Mit Hilfe der abgebildeten <code>dataParameters()</code>-Methode ist es nun möglich mit den üblichen Test-Methoden
sicher zu stellen, dass sich alle ein Interface implementierenden Klassen so verhalten, wie es vom Rest
der Applikation benötigt. wird.</p>

<p>Die Reflections-Bibliothek bietet auch ein Maven-Plugin, mit der die Metadaten zur Build-Zeit ermittelt
werden können, um dann zur Laufzeit auf das Scannen verzichten zu können, allerdings habe ich das
bisher noch nicht probiert. Einen kleinen Wermutstropfen scheint es noch zu geben: Die Bibliothek hat
schon seit geraumer Zeit keine Aktualisierung mehr erfahren, es ist nicht klar, ob es mit diesem
Projekt noch lang weiter geht. Das wird aber die Zeit zeigen.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Aufregende Zeiten]]></title>
    <link href="http://balumba.org/blog//post/2011/03/28/aufregende-zeiten/"/>
    <updated>2011-03-28T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2011/03/28/aufregende-zeiten</id>
    <content type="html"><![CDATA[<p>Samstag war ich mit angeblich 120.000 anderen gegen Kernenergie demonstrieren, am Sonntag durfte ich beobachten, wie die CDU das Ländle verliert und die FDP auf dem Weg in die Bedeutungslosigkeit voran stürmte und ich muss sagen ich freue mich.</p>

<p>Ich freue mich darüber, dass Kernenergie in diesem Land ganz eindeutig keine Zukunft hat. Ich freue mich darüber, dass die Feinde der Freiheit (FDP) ganz offenbar derzeit mit ihrer Politik in diesem Land nicht gewünscht sind. Und ich freue mich darüber, dass wir auf Sommerzeit umgestellt haben und der Frühling endlich kommt.</p>

<p>Das Leben kann schön sein.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Maven Dependency Ranges]]></title>
    <link href="http://balumba.org/blog//post/2010/10/11/maven-dependency-ranges/"/>
    <updated>2010-10-11T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2010/10/11/maven-dependency-ranges</id>
    <content type="html"><![CDATA[<p>Meine Hassliebe zu Maven begleitet mich nun schon eine ganze Weile, aber ich halte alle anderen Build-Systeme die ich kenne (na gut, unter Java ist es nur Ant) für noch viel schlimmer.</p>

<p>Dieser Unwille sich mit Maven näher als unbedingt nötig auseinander zu setzen hat auch dazu geführt, dass mir bis jetzt nie klar wurde, dass es möglich ist, für Abhängigkeiten des Projektes Versionsbereiche anzugeben, also: &#8220;Nimm die aktuellste Version größer X aber nicht aktueller als Y.&#8221; Das geht recht einfach, nämlich folgendermaßen:</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class='xml'><span class='line'> <span class="nt">&lt;dependency&gt;</span>
</span><span class='line'>     <span class="nt">&lt;groupId&gt;</span>junit<span class="nt">&lt;/groupId&gt;</span>
</span><span class='line'>     <span class="nt">&lt;artifactId&gt;</span>junit<span class="nt">&lt;/artifactId&gt;</span>
</span><span class='line'>     <span class="nt">&lt;version&gt;</span>[3.8,4.0)<span class="nt">&lt;/version&gt;</span>
</span><span class='line'>     <span class="nt">&lt;scope&gt;</span>test<span class="nt">&lt;/scope&gt;</span>
</span><span class='line'> <span class="nt">&lt;/dependency&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Würde die aktuelleste JUnit3 Release nutzen, jedoch keine aktuellere Release. Das Beispiel ist natürlich aus der <a href="http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-version-ranges.html">Dokumentation</a> von Maven geklaut.</p>

<figure class='code'> <div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='xml'><span class='line'> <span class="nt">&lt;version&gt;</span>[2.0,)<span class="nt">&lt;/version&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>würde dementsprechend die aktuellste Version größer 2.0 verwenden. Weitere Informationen zu den Dependency Ranges stehen in der <a href="http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-version-ranges.html">Dokumentation.</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Blog-Restart]]></title>
    <link href="http://balumba.org/blog//post/2010/09/20/blog-restart/"/>
    <updated>2010-09-20T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2010/09/20/blog-restart</id>
    <content type="html"><![CDATA[<p>Gut. Die <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a> haben aufgehört zu funktionieren, das liegt natürlich daran, dass Twitter die Art der Authentifizierung umgestellt hat und nicht an den hervorragenden <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a>, führt aber dazu, dass meine Tweets nicht mehr automatisch in regelmäßigen Posts hier im Blog abgeladen werden. Nach kurzem hadern mit der Situation hat mir das sehr gut gefallen, zwingt es mich doch, mich endlich wieder mit diesem, meinem, Blog zu beschäftigen. Ich kann die <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a> wieder konfigurieren, oder sie auslassen und mich dann wieder mehr mit dem eigentlichen bloggen beschäftigen. Das wollte ich eh&#8217; schon länger und  habe beschlossen dieser erzwungenen Änderung jetzt mit verstärktem Einsatz für dieses, mein Blog zu begegnen.</p>

<p>In den kommenden Wochen werde ich also hier die Post-Frequenz deutlich in die Höhe schrauben - zugegeben,  das wird nicht schwer - und hier Artikel einstellen, die sich um Sachen drehen, die mich interessieren, Software-Entwicklung im Allgemeinen, Java, Perl und Musik. Was mir halt so wichtig sein wird. Auch wenn dieses Blog keine Leser hat.</p>

<p>Change is good.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Lieblingsmusik 2009]]></title>
    <link href="http://balumba.org/blog//post/2009/12/30/lieblingsmusik-2009/"/>
    <updated>2009-12-30T00:00:00+01:00</updated>
    <id>http://balumba.org/blog//post/2009/12/30/lieblingsmusik-2009</id>
    <content type="html"><![CDATA[<p>So, es ist auch dieses Jahr wieder Zeit für Jahresrückblicke. Wie es in diesem Blog Tradition ist (na gut, das <a href="http://balumba.org/blog//2008/12/09/lieblingsmusik-2008/">zweite Jahr</a> in Folge) hier meine zehn Lieblingsalben dieses Jahr. Auch dieses Mal ist die Reihenfolge nicht unbedingt aussagekräftig:</p>

<ul>
<li>Pete Yorn &amp; Scarlett Johansson - <a href="http://musicbrainz.org/release/423d9e2d-0098-45a8-9029-dd6eb0d6b1cb">Break Up</a></li>
<li>Frank Turner - <a href="http://musicbrainz.org/release/13d3b060-8112-4251-acb4-cfc88366ebbd">Poetry of the Deed</a></li>
<li>Bombay Bicycle Club - <a href="http://musicbrainz.org/release/3c9d3437-baca-4b25-bf39-ea906977bb2a">I Had the Blues but I Shook Them Loose</a></li>
<li>Dananananaykroyd - <a href="http://musicbrainz.org/release/e20e5966-2330-48f6-804b-f187789fe1d4">Hey Everyone!</a></li>
<li>Jamie T - <a href="http://musicbrainz.org/release/c89da6d1-296f-46b1-8c4b-0e5d50246743">Kings and Queens</a></li>
<li>Yeah Yeah Yeahs - <a href="http://musicbrainz.org/release/9c4177fe-bdce-4f9d-ab9a-81ac9f14bb56">It&#8217;s Blitz!</a></li>
<li>Noah and the Whale - <a href="http://musicbrainz.org/release/ea6066fa-0342-43b9-9a09-fe86d6e7d8aa">The First Days of Spring</a></li>
<li>Lily Allen - <a href="http://musicbrainz.org/release/1cc9ea76-fdd8-40d9-95ed-c9eccef98c3d">It&#8217;s Not Me, It&#8217;s You</a></li>
<li>Noisettes - <a href="http://musicbrainz.org/release/0b235fa8-15d1-4219-a735-e40f076e8df8">Wild Young Hearts</a></li>
<li>Animal Collective - <a href="http://musicbrainz.org/release/1e21a9c3-d787-3348-accf-3af583ef43f6">Merriweather Post Pavilion</a></li>
</ul>


<p>Und wie sieht es bei Euch aus?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Opportunism hurray!]]></title>
    <link href="http://balumba.org/blog//post/2009/07/22/opportunism-hurray/"/>
    <updated>2009-07-22T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2009/07/22/opportunism-hurray</id>
    <content type="html"><![CDATA[<p>Ich bin ja kein Freund der FDP, deshalb fällt es mir natürlich immer leicht, über sie zu meckern. Diese <a href="http://www.abgeordnetenwatch.de/joerg_behlen-180-24691--f202363.html#q202363">Äußerung</a> des Bundestagskanidaten Jörg Behlen ist so eklig und an Opportunismus kaum zu überbieten, dass ich nicht anders kann als hier meinem Missfallen öffentlich Ausdruck zu verleihen. Er stellt das Zensursula-Gesetz in Frage und wird sich als &#8220;überzeugter Liberaler&#8221; dafür einsetzen, das Gesetz wieder abzuschaffen. Er stellt sogar einen Gang vor das Bundesverfassungsgericht in Aussicht, aber nur wenn eine Regierungsbeteiligung der FDP in der kommenden Legislaturperiode ausbleibt.</p>

<p>Pfui.</p>

<p>(via <a href="http://twitter.com/timpritlove/status/2775407823">Tim</a>)</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[So ein Tag]]></title>
    <link href="http://balumba.org/blog//post/2009/07/09/so-ein-tag/"/>
    <updated>2009-07-09T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2009/07/09/so-ein-tag</id>
    <content type="html"><![CDATA[<p>Was ist denn Heute los? Das Bombodrom wird endgültig aufgegeben, mein Projekt nimmt Gestalt an und in der U-Bahn werde ich von einem ausgesprochen höflichen Fahrkartenkontrolleur kontrolliert?</p>

<p>Da ist doch irgendwas Faul! Was kommt denn jetzt als nächstes? Die zwei Staaten Lösung im nahen Osten? Sofortiger Atomausstieg?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[java.util.prefs.Preferences unter Windows]]></title>
    <link href="http://balumba.org/blog//post/2009/04/28/javautilprefspreferences-unter-windows/"/>
    <updated>2009-04-28T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2009/04/28/javautilprefspreferences-unter-windows</id>
    <content type="html"><![CDATA[<p>Nutze ich Windows, fühle ich mich immer etwas eingeschränkt und alles geht etwas langsamer. Diesmal jedoch bin ich sicher, dass es nicht mein Fehler war :-)</p>

<p>Während ich meine Diplomverteidigung vorbereitete kam ich in die Situation, dass ich unter Windows (Mein Freund <a href="http://bennat.net">Benni</a> war so nett mir sein Netbook zur Präsentation zur Verfügung zu stellen) die von <a href="http://www.jmonkeyengine.com">JMonkeyEngine</a> genutzten Voreinstellungen zu löschen. Einmal an der falschen Stelle geklickt und zack, meine Software startete immer in der falschen Auflösung. JmonkeyEngine nutzt für seine Voreinstellungen die Klasse <a href="http://java.sun.com/javase/6/docs/api/java/util/prefs/Preferences.html">java.util.prefs.Preferences</a>. Das macht ja soweit auch Sinn, dafür ist sie ja da. In den Javadocs steht auch, dass diese Klasse die Voreinstellungen mit den vom jeweiligen Betriebssystem vorgesehenen Mitteln speichert. Das es sich unter Windows hierbei um die Registry handelt, schwante mir erst nach knapp einer Stunde verzweifeltem Suchen. Falls es Euch als UNIX-Nutzern auch mal so geht wie mir: die Voreinstellungen finden sich in der Registry unter:</p>

<blockquote><p>HKEY_CURRENT_USER\Software\Javasoft\Prefs&lt;Package></p></blockquote>

<p>Ja ich weiß, nichts großartiges, aber vielleicht erspare ich damit jemanden das Suchen.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Kreuzberg, Du Nabel der Welt]]></title>
    <link href="http://balumba.org/blog//post/2009/04/10/kreuzberg-du-nabel-der-welt/"/>
    <updated>2009-04-10T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2009/04/10/kreuzberg-du-nabel-der-welt</id>
    <content type="html"><![CDATA[<p>Da bin ich gerade verstrahlt in Richtung Viktoriapark gelaufen um mich dort  mit meinem Kater ein Wenig in der Sonne zu bemitleiden, da ist mir zum ersten mal eine Gedenktafel aufgefallen: In der Methfesselstraße 7 und 10 baute <a href="http://de.wikipedia.org/wiki/Konrad_Zuse">Konrad Zuse</a> seine Rechenmaschinen Z1 bis Z4 und nahm den ersten Computer der Welt, die <a href="http://http://de.wikipedia.org/wiki/Zuse_Z3">Z3</a>, in Betrieb.</p>

<p>Als ich diese Tafel las lief mir schon ein kalter Schauer über den Rücken und ich hatte Gänsehaut. Jetzt wohne ich schon vier Jahre hier in der Gegend und latsche im Sommer mehrfach die Woche an dieser Gedenktafel vorbei und es braucht bis Heute, um festzustellen, dass ich quasi in direkter Nachbarschaft  des Ortes wohne an dem der ganze IT-Quatsch seinen Ursprung hatte. Toll.</p>

<p>Kreuzberg ist wirklich der Nabel der Welt und ich mitten drin. Toll!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Amerikas meistgehasste Familie]]></title>
    <link href="http://balumba.org/blog//post/2009/04/09/amerikas-meistgehasste-familie/"/>
    <updated>2009-04-09T00:00:00+02:00</updated>
    <id>http://balumba.org/blog//post/2009/04/09/amerikas-meistgehasste-familie</id>
    <content type="html"><![CDATA[<p>Einer <a href="http://www.raul.de/blog/2009/04/06/amerikas-meist-gehasste-familie/trackback/">Empfehlung</a> von Raul folgend, habe ich mir auf Youtube die BBC-Produktion &#8220;Americas Most Hated Family&#8221; angesehen. Gut, der Komfort war nicht der größte, ich musste sie mir in acht Einzelteilen ansehen, dafür war der Eindruck den die Sendung auf mich hinterließ umso größer. Der BBC-Reporter Louis Theroux lebt eine Zeitlang bei der Phelps-Familie um herauszufinden, was diese religiösen Fanatiker antreibt. Ich war erschüttert, eigentlich kann ich auch sagen ich bin es noch.</p>

<p>In der Sendung zeigen sich die Phelps als strahlende Leuchtfeuer des Hasses. Es fällt mir schwer zu verstehen, wie Menschen einen solchen Hass auf eigentlich alles entwickeln können. Das schlimmste allerdings ist, wie die Kinder der Familie bereits im jüngsten Alter indoktriniert werden. Den Kindern, die das Pech hatten in diese Familie geboren werden, wird jede Möglichkeit genommen halbwegs normal am gesellschaftlichen Leben teilzunehmen. Die Armen. Man kann die Sendung auch als flammendes Plädoyer für die allgemeine Schulpflicht und gegen Homeschooling begreifen.</p>

<p>Die Sendung kann man sich hier <a href="http://www.youtube.com/watch?v=gSFrNOnvtls">ansehen</a>.</p>

<p><em>Update</em>: Der Youtube-Link funktioniert nicht mehr, Bei Google Video kann man sich den <a href="http://video.google.com/videoplay?docid=-7735501683185935638">Film</a> jedoch noch komplett ansehen. Ist immer noch beeindruckend.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Früher war alles besser]]></title>
    <link href="http://balumba.org/blog//post/2009/03/12/fruher-war-alles-besser/"/>
    <updated>2009-03-12T00:00:00+01:00</updated>
    <id>http://balumba.org/blog//post/2009/03/12/fruher-war-alles-besser</id>
    <content type="html"><![CDATA[<p>Gerade aus meinem Fortune gefallen:</p>

<blockquote><p>Sendmail may be safely run set-user-id to root.</p><footer><strong>Eric Allman</strong> <cite>Sendmail Installation Guide</cite></footer></blockquote>


<p>Ich habe schallend gelacht. Bin dabei wohl etwas aufgefallen, den Blicken nach zu urteilen, die ich mir eingefangen habe. Ach ja. Früher war alles besser.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Das Kerberos-Protokoll]]></title>
    <link href="http://balumba.org/blog//post/2009/03/03/das-kerberos-protokoll/"/>
    <updated>2009-03-03T00:00:00+01:00</updated>
    <id>http://balumba.org/blog//post/2009/03/03/das-kerberos-protokoll</id>
    <content type="html"><![CDATA[<p>Im Rahmen meines Studiums hielt ich im Kurs Computersicherheit bei Professor <a href="http://public.tfh-berlin.de/~rweis/">Dr. Weis</a> einen einführenden Vortrag über das Kerberos Protokoll. Da ich mit dem in diesem Zusammenhang entstandenem Artikel recht zufrieden bin, veröffentliche ich ihn an dieser Stelle. Die Latex-Quellen stelle ich auf Anfrage gerne zur Verfügung. Außerdem bin ich für alle Anmerkungen und Korrekturen dankbar.</p>

<p><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/de/"><img src="http://i.creativecommons.org/l/by-nc-sa/3.0/de/88x31.png" title="'Creative Commons License'" ></a> Das Dokument  ist unter der <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/de/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Germany License</a> veröffentlicht</p>

<p>Der Artikel ist hier als PDF-Dokument herunter zu laden: <a href="http://balumba.org/blog//assets/kerberos.pdf">kerberos.pdf</a></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Being Human]]></title>
    <link href="http://balumba.org/blog//post/2009/03/02/being-human/"/>
    <updated>2009-03-02T00:00:00+01:00</updated>
    <id>http://balumba.org/blog//post/2009/03/02/being-human</id>
    <content type="html"><![CDATA[<p>Ich habe ferngesehen: Die letzte Folge der ersten Staffel der  BBC 3 Produktion <a href="http://www.bbc.co.uk/beinghuman/">Being Human</a> wurde Gestern ausgestrahlt. Entwickelt von <a href="http://en.wikipedia.org/wiki/Toby_Whithouse">Toby Whitehouse</a>, der schon für das von mir sehr gemochte Dr. Who-Spinnoff <a href="http://www.bbc.co.uk/torchwood/">Torchwood</a> Drehbücher schrieb. Die Serie begleitet drei scheinbare Mittzwanziger dabei, wie sie versuchen sich trotz ihrer jeweiligen Behinderungen ihre Menschlichkeit zu bewahren. Ein Unternehmen, das nicht ganz einfach ist da sie dummerweise Geist, Vampir und Werwolf sind. Hinzu kommt, dass die alten Vampir-Kumpels von Mitchell dabei sind, das nächste große Ding zu planen.</p>

<p>Die Geschichte an sich ist recht spannend, wenn sie auch nicht das Beste ist, was ich an Horror, oder besser: Gruselgeschichten, je gesehen habe. Was die Serie aber wirklich großartig macht ist wie Whitehouse die Charaktere aufbaut: Getrieben von dem Verlangen, das was ihnen von ihrer Menschlichkeit geblieben ist zu bewahren, arbeiten Mitchell und George (der Vampir und der Werwolf) für den gesetzlichen Mindestlohn als Hilfskräfte im Krankenhaus. Sie sind auf der Suche nach Nähe von &#8220;normalen&#8221; Menschen, aber immer auch voller Angst davor, die Leute deren Nähe sie zulassen durch ihre &#8220;Behinderung&#8221; zu verstören, oder schlimmer: Bei der Entdeckung aus dem Ort getrieben zu werden. In dieser Grauzone zwischen Angst und Hoffnung bewegen sie sich, stehen irgendwie außerhalb der Gesellschaft immer von der Idee beseelt, dass alles irgendwie besser werden wird.</p>

<p>In diesem Spannungsfeld beschäftigt sich die Serie damit, was es eigentlich heißt Mensch zu sein. Ohne dabei langweilig oder moralisch zu werden. Eine große Leistung der Drehbuchautoren.</p>

<p>Die Dialoge sind, wie schon bei Torchwood, pointiert und irgendwie &#8220;tiefgreifend&#8221;. Die Charaktere sind
glaubhaft, selbst die Phantasiegestalten erscheinen nicht unnatürlich, Sie sind halt Paranormal. Andere Leute haben Blasenkrebs. Auch das Austauschen vieler Schauspieler, nach dem Pilotfilm hat der Serie überraschenderweise gut getan. Gerade Annie (der Geist) wird durch <a href="http://en.wikipedia.org/wiki/Lenora_Crichlow">Lenora Crichlow</a> glaubhafter. Ich bin mir nicht sicher, vielleicht war es der nordenglische Akzent ihrer Vorgängerin, der mich störte. Tollerweise hat die BBC eine zweite Staffel angekündigt.  Genauso, wie wohl eine dritte von Torchwood. Ich freu&#8217; mich.</p>

<p>Um es kurz zu machen: Dies ist eine tolle Fernsehproduktion, die ich voll und ganz empfehlen kann. Warum bekommt das deutsche Öffentlich-rechtliche Produktionen in dieser Qualität nicht hin?</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Lieblingsmusik 2008]]></title>
    <link href="http://balumba.org/blog//post/2008/12/09/lieblingsmusik-2008/"/>
    <updated>2008-12-09T00:00:00+01:00</updated>
    <id>http://balumba.org/blog//post/2008/12/09/lieblingsmusik-2008</id>
    <content type="html"><![CDATA[<p>Jahresende ist immer Zeit für Rückblicke. Meine Lieblingsalben dieses Jahr, nicht unbedingt in Reihenfolge:</p>

<ul>
<li><a href="http://musicbrainz.org/artist/e1194e66-e4f0-4351-9d26-ac95df530d0c">Los Campesinos!</a> - We Are Beautiful, We Are Doomed</li>
<li><a href="http://musicbrainz.org/artist/8a3e1c4f-59a8-457a-826c-fe961419a8ae">The Last Shadow Puppets</a> - The Age of the Understatement</li>
<li><a href="http://musicbrainz.org/artist/e618770f-e994-41c3-856f-1eedf56b6d74">The Ting Tings</a> - We Started Nothing</li>
<li><a href="http://musicbrainz.org/artist/eb872766-98f6-453d-883f-2ae908a18315">TV on the Radio</a> - Dear Science</li>
<li><a href="http://musicbrainz.org/artist/bd3b1f63-946b-400f-acd1-cac0c1aa2115">Robots in Disguise</a> - We&#8217;re in the Music Biz</li>
<li><a href="http://musicbrainz.org/artist/cc7d4686-ea02-45fd-956e-94c1a322558c">Lykke Li</a> - Youth Novels</li>
<li>Isobel Campbell &amp; Mark Lanegan - <a href="http://musicbrainz.org/release/60dc377f-6b6a-3c92-83d4-2902c7083728">Sunday at Devil Dirt</a></li>
<li><a href="http://musicbrainz.org/artist/2c4dae8c-e591-49e0-9c5a-62b310a15788">Duffy</a> - Rockferry</li>
<li><a href="http://musicbrainz.org/artist/30312e56-2ec9-43f1-9378-882ada0cb542">Infadels</a> - Universe in Reverse</li>
<li><a href="http://musicbrainz.org/artist/d7311646-287b-4d3a-9a4f-7d46f93075e5">Santogold</a> - Santogold</li>
</ul>


<p>Mir fällt auf: 1. Fast alle kommen von der Insel und 2. Ist die Liste ja schon etwas, auf das sich die Indie-cool-Posse vermutlich einigen kann. Tja.</p>
]]></content>
  </entry>
  
</feed>

