10. Juni 2016

OpenJDK on RaspberryPi / Raspian: Fallback to Oracle JDK

Lately I wanted to use Java on the RaspberryPi a little more intensive. With that involved, there is of course a Gradle build. But it went not as easy a I expected.

I attempted to use the openjdk-8 package, the system in question was based on a Hypriot OS 0.7.0 Berry (beta), which is based upon Rasbian Jessie.

While running the build, I ran into some SSL related issues on downloading the dependencies:

Exception in thread "main" PKIX path validation failed: signature check failed

First of all, I tried to fix it with the commands

sudo update-ca-certificates -f

sudo apt-get install --reinstall ca-certificates-java

but those didn’t seem to have any effect.

From past experience I knew that it’s – unfortunately – often worth to give the official Oracle builds a try in case the OpenJDK does not behave as expected. Even though I have the feeling that shouldn’t be the case anymore as the usage of OpenJDK has been spread a lot. For example, Amazon, being a very big name and serving a large installation base within AWS and it’s other services is using OpenJDK.

Trying to find the most convenient way to get the Oracle JDK installed (using their packages and having to run update-alternatives and such by hand is the least desired option in that case), I learned that the Oracle JDK packages are provided within the RaspberryPi Foundation repositories located at

So I added a file foundation.list to /etc/apt/sources.list.d with the content

 deb jessie main

and run apt-get update after which apt-cache search oracle listed

oracle-java8-jdk - Java™ Platform, Standard Edition 8 Development Kit

Which I decided to install instead of OpenJDK. And voila – it works. Seems like OpenJDK, or at least the package provided within Raspian has still some things to catch up with 🙁
I’m looking for the proper place to report or track this – does anyone have a hint for that? 🙂

Oh, and as a side note: Always take case of the CPU architecture you are working with – it’s so easy to fall into that ARM / X86 trap 😉 But that’s a topic for another blog post…

8. April 2016

SyncThing Android – still no SD card support

TL;DR: GoLang doesn’t support Android Stroage API properly so syncthing cannot access an external SD card properly at the moment.

I’m taking a lot of pictures – not only with my camera but also with my mobile – as it happens to be the camera that always available 😉
But sorting pictures on the phone is a little bit painful for me, I’d prefer to sort them on a larger screen while the result of that sorting should be effective to the mobile, of course.
I’ve had a solution to that for a short time in the past with BitTorrent Sync – bu then, they changed their licensing and dropped some features and my use case could not be fulfilled anymore.
On top of that, a “feature” was introduced to Android that makes it harder to deal with files on the SD card.

Then, I stumbled upon SyncThing and hoped to get back to a working setup for my photos-from-mobile workflow.
Unfortunately, SyncThing was also suffering from the sd-card-read-write-permissions problem and thus not an option for me.

Last night, I decided to check again and found that it’s still not usable for me 🙁
The situation has improved a little bit as in Android land exists an API not to handle files on the SD card as flexible as required. Bad thing is, that those API is currently not available to syncthing as it has not been implemented to the software stack used there (GoLang), see issue #10588 of Go.

I’ll check back on this regularly as long I can’t find a better solution 😉
Would also love to have sync back to have a very easy way to maintain the set of music I’ve on my phone (and add/remove stuff from there).

see also: syncthing-android issue #29: repos on extSdCard

5. April 2016

Das darf niemals in Netz! (NeoMag Royale)

Es ist länger her, das ich ein Video gebloggt habe, aber die letzte Folge des Neo Magazin Royale ist es wert – da es nicht mehr in de Mediathek ist, ein Link zu Vimeo:

Nicht nur wegen dem Erdogan Gedicht, auch der (im Video ab 17:45min) Song “Germans on the Rise” (Artikel dazu im Zeit Blog) ist gelungen.

Viel Spaß!

Nachtrag: Hui, das ganze schlägt ja richtig Wellen: Anzeigen im Bündel, Ermittlungsverfahren gegen J. Böhmermann und Rüge von der Kanzlerin

1. April 2016

Lazybones Template for Dolphin Platform Jumpstart

As Hendrik stated rightfully in his post about the Dolphin Platform Jumstart maven archetype, Starting with a new technology is often hard.
To make getting started with the Dolphin Platform in combination with Gradle easier for a broader audience, Maxim and me created a lazybones template for the jump start project of the Dolphin Platform during the last Hackergarten in Basel.

It is based on the maven archetype (and adopting the actual example project from there) but is completely build with gradle and provides some other improvements like an integrated build for the polymer client.

You can find it’s source project at

To actually use the template you need to have lazybones installed. The easiest way to get it is via SDKMAN.
So first, let’s install that:

$ curl -s | bash 

(Windows users: look for the Powershell version)

Then, we can use it to install gradle and lazybones:

$ sdk install lazybones
$ sdk install gradle

Next register the dolphin-platform-lazybones-templates repository with Lazybones’ config file. Edit $USER_HOME/.lazybones/config.groovy

bintrayRepositories = [

If everything is fine, issuing the command

$ lazybones list

should list the Dolphin Platform template:

Available templates in canoo/dolphin-platform-lazybones-templates


Now, we can use it to create a new Dolphin Platform project:

$ lazybones create dolphin-platform-spring-boot MyProject

The generated project contains a complete Gradle build, so you can use that to import it into your IDE that supports Gradle (like Eclipse or IntelliJ).

To get an idea on how to proceed from here, have a look at the README of the generated project.

If you have any questions about Dolphin Platform you can now use the “dolphin-platform” tag at stack overflow. If you are new to Dolphin Platform, find more about it on

Happy coding 🙂

4. November 2015

Browser UI testing with Geb: Debugging Geb tests

Geb provides a very good way for end-to-end tests of browser applications.

One drawback while writing is that it might get rick to get the selectors for the UI elements right. Being able to debug, stop in the middle of a test and adjusting the selectors would come in very handy.

But, as things are not always as smooth as we want them to be, the error message you are confronted with when you just hit the „run debug“ button for the Geb Spec class you are woking on might look like:

Process finished with exit code 1
Class not found: "de.mynethome.GebSampleSpec“ Empty test suite.

This will happen especially when you’re working on a Java based project and have pulled in the dependencies on Groovy only for “test” to be able to profit from the combined power of Spock/Geb. The reason for that error is, that your IDE did not pick up that compile time dependency and thus you groovy files have not been converted into byte code that can be run and debugged.
(hint: this applies most likely only to maven based projects. From my experience, this error has not popped up with projects that use gradle as their build system)

Solution to this is simple: Tell your IDE to run the necessary steps to compile your test suite.
That is, for example in IntelliJ Idea, done by adding a „before launch“ task to the run configuration as schon in the picture 🙂

Happy debugging&testing!

15. Oktober 2015

Android Security @ Xperia Z3 Compact : Sonys Antwort

Vor kurzem habe ich über die Sicherheitslücken bei Android geschrieben und meine Anfrage an Sony über die Zukunft des Xperia Z3 Compact erwähnt.

Mittlerweile habe ich Antwort erhalten, die ich euch natürlich nicht vorenthalten möchte.
Nachdem man man mir in der ersten Antwort sehr unscharf versichert wurde, dass an “Software-Updates […] immer mit Hochdruck gearbeitet (wird)“, und es sich leider jedoch „selten vorhersagen“ lässt, wann diese fertiggestellt werden, habe ich nochmal genauer nachgefragt, ob die von mir genannten Sicherheitslücken denn für das Z3 Compact noch geschlossen werden.

Die knappe, aber klare Antwort lautet:

Dies wird der Fall sein.

Immerhin, es wird Fixes geben. Dann sind wir mal gespannt.

heise berichtete zwischenzeitlich, dass von Seite Google und via CyanogenMod Stagefright 2.0 gepatcht ist – und wie der Stagefright Detector auf dem Z3 Compact zeigt, ist zumindest dieser Patch (CVE-2015-3876) auch schon angekommen.

Heise berichtet übrigens weiter, dass laut einer Studie 87 % aller Android Geräte angreifbar sind.

Also immer schön umsichtig bleiben und darauf vertrauen, das die Hersteller mit dem Patchen bald nachkommen 😉

8. Oktober 2015

Convert DZSlides presentation to PDF

Given you have created and given a presentation based on DZSlides (maybe powered by AsciiDoctor & Gradle 😉 ), you might have the need to publish it at one point.
One of the most compatible way is to put the slides into a PDF, but that might not be as much obvious as you might expect. Here is one approach:

* Convert the slides to png files using the slides2png script:

groovy ./dzslides/scripts/slides2png file:///Users/markus/Documents/20151001_Presentation/slides/src/slides.html

As the script it uses GEB to utilize the browser and take screnshots from your slides, it requires a fully qualified URL to find your presentation. In this case, it resides on the filesystem, so it starts with file:// – you could also fire up a minimal HTTP server (python -m SimpleHTTPServer , anyone? 😉 ) to shorten the URL.

* The results are safed in /tmp/geb-reports by default, including a presentation.pdf file that is the desired PDF. Voilà 🙂

Have fun!

30. September 2015

Samsung Galaxy S3 Mini oder Motorola Moto E

Nachdem es im letzten Artikel um die Sicherheit von Android ging, ist es auch naheliegend, wenn man darüber nachdenkt, ein evtl. hoffnunglos veraltetes Smartphone durch eines mit aktueller Androidversion zu ersetzen. Und da ich die nachfolgenden Punkte eh’ schonmal zusammengetragen habe, kann ich sie auch gleich bloggen 😉

Ab Donnerstag ist das Smasung Galaxy S3 mini bei Aldi Süd für 100 € im Angebot, was ein gutes Preis/Leistungsverhältnis für ein Smartphone ist. Ist es denn auch ein Schnäppchen?
Ich würde sagen, nicht unbedingt, denn auf dem Gerät läuft die schon veraltete Android Version 4.2, die nur noch auf etwa 15 % der Android Geräte läuft.

Meiner Meinung nach ist das Motorola Moto E (, für wenig mehr Geld (ca. 25 €) eine gute Alternative.

kleine Nachteile:

  • kein rückseitiger Blitz
  • kein FM Radio

dafür die Vorteile:

  • Android 5 (Lollipop)
  • 3G & 4G (LTE)
  • 4.5″ statt 4″ Displaygröße
  • höhere Auflösung (960×540 statt 800×480)
  • 4 statt 2 CPU Kerne
  • Schutz vor Kratzern und Spritzwasser
  • Größerer Akku

Die Nachteile sind m.M.n. bei den Vorteilen zu verkraften – die Fotos werden, gerde bei Fotos von Handys dieser Preisklasse mit dem Blitz sowieso nicht zwangsläufig besser. Und FM Radio habe ich bis jetzt nur sehr wenige Leute mit dem Smartphone nutzen sehen – wofür gibts Podcasts? 😉

Und selbst wenn es doch das S3 mini sein soll: bei gibt es die CyanogenMod Portierung für das S3 Mini mit denen man dem Gerät eine aktuelle Android Version und damit zumindest z.T. Sicherheit ggÜ den kürzlich aufgetauchten Sicherheitslücken verschaffen kann.

Viel Spaß beim Handy Upgrade 🙂

29. September 2015

Android Security: Alles Safe?

Da in letzter Zeit doch recht viele Sicherheitslücken bei Android bekannt geworden sind, habe ich mich gefragt, ob es nicht eine Übersicht gibt, welche davon schon geschlossen sind und für welche Geräte die Fixes verfügbar gemacht/ausgerollt worden sind.

Leider war nicht bei meiner Suche bisher nicht erfolgreich. Nachfolgend eine Liste der Lücken zusammen mit ein paar Detailinformationen, die ich jeweils gefunden habe. Wenn jemand eine gut Übersichtsseite kennt: Bitte teilen 🙂


Remote-Code-Execution via Mediaserver

IBM: “One Class to Rule Them All”

  • Android: und noch eine schwere Sicherheitslücke
  • Die Lücke (CVE2015-3825) ist mittlerweile durch Google geschlossen worden; jedoch muss man im Auge behalten, ob der Patch auch durch den hersteller oder Provder auf das eigene Smartphone ausgerollt wird.
  • Schutz: Nur Apps aus “vertrauenswürdigen Quellen” (Play Store) installieren – und hoffen das die dort verfügbaren Apps ausreichend geprüft sind.


Außerdem habe ich Sony eine Mail geschrieben mit der Bitte bezüglich des Xperia Z3 Compact Stellung zu den Lücken zu beziehen – und bin gespannt, ob eine Antwort kommt … 😉

15. August 2015

Digitales Fotoalbum reloaded: Von Gallery zu Piwigo

Das großartige Gallery Projekt, mit dem ich bisher meine Fotos im Netz gezeigt habe, wird wurde leider schlafen gelegt – und mit einem Aufwachen ist wohl eher nicht zu rechnen, wenn nicht gerade jemand darauf aus ist eine sehr große PHP Codebasis zu übernehmen. (Wobei ich sagen muss, das das, was ich über die Jahre den denen ich alle 3 Majorreleases der Gallery in verschiedensten Kontexten benutzt und angepasst habe, an Code innerhalb der Gallery gesehen habe, definitiv zum besseren PHP Code gehört, der mir so untergekommen ist! 😉 )

Wirklich schade, das das Kernteam sich entschlossen hat, nicht mehr weiter zu machen. Vielen Dank für die viele Arbeit und jahrelange Pflege dieser guten Software!

Also war es an der Zeit, nach einer Alternative zu schauen. Kurz nach der Ankündigung im letzten Sommer haben sich das auch andere gedacht und interessante Übersichtsartikel verfasst.

Piwigo geht dort als ein sehr vielversprechender Kandidat hervor, insbesondere da ein Migrationsskript für vorhandene Gallery-Installationen angeboten wird. (Wobei schon schade ist, dass Piwigo wiederrum auf PHP basiert und kein alternativer Softwarestack zum Einsatz kommt… 😉 ) Ein weiterer sehr detaillierter Beitrag über die Installation von Piwigo findet sich bei BenHup.

Was auf der Homepage noch nicht so deutlich zu sehen ist: in der Zwischenzeit ist Piwigo auch auf GitHub migriert und das Project unter zu finden.

Nach soviel gutem Input habe ich meine Gallery zu Piwigo migriert, was im Großen und Ganzen wie erwartet von statten ging, einige Erfahrungen:

  • Leerzeichen in Verzeichnis oder Dateinamen sind in der Gallery erlaubt, in Piwigo in der Standardeinstellung nicht. Daher eine Konfigurationsänderung, die man in der Datei local/config/ ablegt, nicht in include/ :
    $conf['sync_chars_regex'] = '/^[a-zA-Z0-9-_.~\s\(\)\[\]]+$/';
  • EXIF auto rotate wird nicht übernommen, mit der imageRotate Erweiterung kann man das wieder anwenden – aber wie für alle Bilder? -> Das geht über die sehr ausgereifte Stapelverarbeitung in Piwigo, mit der man zunächst sehr Flexibel per Suche und Filter den Satz der zu bearbeitenden Bilder zusammenstellen kann und dann eine Änderung auf alle Bidler in diesem Satz anwenden kann. Diese Änderung kan auch die auto-rotate (basierend auf den EXIF Informationen des Bildes) der Erweiterung sein.
  • Berechtigungen werden nicht übernommen – ich habe zwar die Benutzerkonten übertragen können, jedoch müsst ihr einmal die “Passwort vergessen” Funktion benutzen um ein neues Passwort zu erstellen. Wenn ihr bestimmt Alben sehen wollt, die jetzt verborgen sind, lasst es mich wissen 😉

    Falls es jemanden interessiert, die Benutzerkonten konnte ich in zwei Schritten einfach mit SQL übertragen:

    --Transfer users
    INSERT INTO piwigo.piwigo_users(username, password, mail_address)
    SELECT g_userName, g_hashedPassword, g_email
    FROM gallery.g2_User g2u
    WHERE g2u.g_userName NOT IN ('admin', 'guest', 'test')
    --create default settings
    INSERT INTO piwigo_user_infos (user_id, nb_image_page, status, language, expand, show_nb_comments, 	show_nb_hits, 	recent_period, 	theme,registration_date ,	enabled_high, 	level, 	activation_key ,	activation_key_expire ,	lastmodified)
    SELECT, 30,  'normal', 'de_DE',false,false,false,	7, 'simpleng', now(),	true, 0, NULL, NULL,now()
    FROM piwigo_users u
    WHERE id NOT IN (1,2)
  • Bewertungen wurden nicht übernommen. Von daher musste ich ein wenig Hand anlegen (zum Glück sind die Benutzerkonten schon übertragen):
    INSERT INTO piwigo.piwigo_rate (user_id, element_id, anonymous_id, rate, date)
    SELECT,, CONCAT(LEFT(rm.g_remoteIdentifier, INSTR(rm.g_remoteIdentifier,':')),RAND()) ,rm.g_rating, now()
    FROM gallery.g2_RatingMap rm 
    , gallery.g2_User u
    , gallery.g2_Item i
    , gallery.g2_FileSystemEntity fse
    , piwigo.piwigo_users pusers
    , piwigo.piwigo_images pimages
    WHERE rm.g_itemId = i.g_id
    AND fse.g_id = i.g_id
    AND rm.g_userId = u.g_id
    AND pusers.username = u.g_UserName
    AND fse.g_pathComponent = pimages.file
  • Setzt man ein Album auf “private”, ohne Berechtigungen zu vergeben, wird es auch dem Admin nicht mehr angezeigt – sehr interessanter Effekt wenn man später durch seine Alben wandern muss um zumindest wieder Minimalberechtigungen zu vergeben…
  • Es scheint im Gegensatz zur Gallery keine Funktion zu geben, mit der man Alben verstecken und per direkt Link auch ohne Passwort aufrufen kann. In diesem Fall werde ich also in Zukunft mit einem einfachen Passwortschutz arbeiten oder man muss sich anmelden, um die/alle Bilder zu sehen.

Als finalen Akt des Umzug konnte ich dann noch die hier im Blog links eingebetteten Bilder direkt mit Hilfe des Piwigo WordPress Plugin durch die Piwigo Galerie speisen lassen.

Ich bin sehr froh, auf Piwigo gestossen zu sein – auch wenn ich das ein oder andere Finetuning noch von Hand machen musste, der Umzug der Bilder war völlig unproblematisch und auch die Bewertungen konnte ich verhätnismäßig einfach übernehmen. Nur das die zum Teil sehr feingranular vergebenen Berechtigungen nicht mehr gesetzt sind, ist schade – auf der anderenSeite aber wahrscheinlich verkraftbar, da sie nicht sooo intensiv genutzt worden. Wie gesagt, wenn jemand etwas vermisst, bite melden 🙂

Und schliesslich habe ich damit endlich eine etwas modernere Fotogalerie, die über ein besonderes Feature verfügt, das mich sehr begeistert: Man kann Elemente frei miteinander Verknüpfen. D.h. das ich ein Bild aus einem Event-Album z.B. auch in den shots platzieren kann ohne es doppelt Hochladen zu müssen. Das macht das Erstellen von Themenalben deutlich einfacher.

Außerdem ist das Layout mit dem neuen Theme zusammen mit demals standard bereitgestellten Theme für mobile Endgeräte deutlich ansprechender, was die Betrachter der Bilder hoffentlich auch freut. 🙂 wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2015 Markus Schlichting