From August 24 to August 26 I attended to the YAPC::EU 2016 in Cluj-Napoca (Klausenburg). Thanks for the really good organization to the nice organization team from

All presentation are online (youtube).


Since yesterday I own a RIPE Atlas probe, that means I am a part of the biggest Internet measurement network ever made. With the collected data from the probes it is possible to monitor a big part of the Internet, independent from the Internet service providers. The data is used for science and monitor purposes. The probe has the ability to do checks, some of the common checks are visualized. With every check (mainly uptime) you earn credits and with enough of them you can create checks of your own and the check will be executed by the Atlas-network.

At home I put the probe in a separated network, but in fact there is no socket (remote and local) running on the probe.

There are a lot of Atlas probes out there check out the network coverage.

The Atlas probe is for free. Please join the Network and help to monitor the Internet.


This morning I decided to create another vim cheat sheet. One that works for me. There are a lot of cheat sheets outside, but the most lack of complexity and the other ones are simply not printable on a single page. I wrote a cheat sheet that covers a lot of commands, for example: tabs, searching, splitting and comprehensive editing commands. This all fits on a single page. You may download the sheet (pdf) from my site or you can clone it from GitHub.

git clone


From time to time I need to encode or re encode videos. I use mencoder a lot, but since two or three years I use nothing except ffmpeg. Before you start with video encoding you have to know a little about common video and audio codecs and the containers. Some times I hear statements like “I decoded that video to mkv, now it is small an has a good quality” … Whatever, I like to post some ffmpeg command lines that work well for me.


Convert a MPEG2 Transport Stream to simple MPEG2 fo further use or DVD compatibility

ffmpeg -i video1.m2t -acodec copy -vcodec copy output.mpg

Cut videos from starting position to end position (use -t instead of -to to use relative time from starting point (duration))

ffmpeg -i input.mpg -ss 00:01:33 -to 00:44:55 -acodec copy -vcodec copy cut.mpg


Encode a video to the popular H264-codec and audio to the free Vorbis-codec

ffmpeg -i input.mpg -deinterlace -c:v libx264 -preset veryslow -crf 26 -codec:a libvorbis -qscale:a 3 output.mkv

CRF: Constant Rate Factor: bigger value means smaller file and smaller value means bigger file but better quality (standard 23)

preset: predefined templates for configuration parameters (slower means better quality), possible values are: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo (standard medium)

qscale:a: quality level for Vorbis codec: 3 means an nominal bit rate of 112 KBit/s

deinterlace: used to merge the interlaced TV-signal

More information on H264 encoding

Encode a video with the newer H265/HEVC-codec

ffmpeg -i input.mpg -c:v libx265 -codec:a libvorbis -qscale:a 3  output.mp4

CRF standard = 28

Video encoding to the free Theora-codec

ffmpeg -i input.mpg -codec:v libtheora -qscale:v 7 -codec:a libvorbis -qscale:a 3 output.ogv

qscale:v: video quality range from 0 to 10, where 10 is highest quality.

2PASS encoding with a fixed bit rate of 1MBit/s:

ffmpeg -i input.mpg -deinterlace -b:v 1000K -c:v libtheora  -pass 1 -an -f rawvideo -y /dev/null

ffmpeg -i input.mpg -deinterlace -b:v 1000K -codec:v libtheora -pass 2 -codec:a libvorbis -qscale:a 3 output.ogv

Encoding to the free VP8 and VP9 codecs:

VP8 and VP9 are widely supported by all main browsers (except IE). The VP9 is the standard codec at YouTube.

VP8 at variable bitrate:

ffmpeg -i input.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis -qscale:a 3 output.webm

CRF: can be a value from 4 to 63, lower values mean better quality

b:v: This is the target bit rate, the encoder is trying to reach this value

VP9 at VBR variable bitrate (target 700KBit/s) and opus audio codec:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 700K -c:a libopus -b:a 96000  output.webm  

VP9 in constant quality mode:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 38 -b:v 0 -c:a libopus -b:a 96000  output.webm

CRF: a value from 0 to 63, where lower values mean better quality

NVIDIA graphics card with CUDA:

For a little period of time I got a fast Geforce graphics card with CUDA support and H264 encoding capability. Therefore I had t recompile ffmpeg to activate the Nvidia H264 encoder named nvenc_h264.

The encoded videos with the nvenc_h264 engine are bigger, but your are able to encode like 100 times faster.

variable bitrate:

ffmpeg -i input.avi -c:v nvenc_h264 -preset hq  -codec:a libvorbis -qscale:a 3 output.mkv

Or you are using a constant bit rate, but in comparison with the x264 encoder the quality is worse.

constant bitrate:

ffmpeg -i input.mpg  -b:v 1000K -c:v nvenc_h264 -preset hq   -codec:a libvorbis -qscale:a 3 output.mkv


More or less two years ago I ordered my first smartphone: a Fairphone (FP1). The target of the Fairphone company is to build a phone with conflict-free resources, fair working condition and a open supply chain. I’m really happy with it. It was delivered with a rooted Android 4.2 out of the box. The Google apps are optional, you do’nt have to use them. In the next weeks there will be an upgrade to Android 4.4. This Android-version is already fully supported by Google, really good for security fixes in the near feature. Due to this positive experiences, I ordered the Fairphone 2 in the second half of 2015 for my wife.

In February 2016 the FP2 was delivered without root access for the stock Android 5.1. But right after the startup the torture started. The phone crashed and restarts immediately, mostly five times a day during use and in idle mode. No reproduction possible, actually without sim-card and deactivated wifi. But I have waited, because the OS has the version 1.0.0 and I do not trust those dot zero releases. But after two updates the version number seems to be more trustworthy: 1.3.6.. Nevertheless same behavior.

I decided to switch to the OpenSource version of the FairphoneOS, which was released on the 28th of April. Now there is root access, but from then the Fairphone does not restart if it crashes, now the accumulator has to be removed for a second. After that the FP2 restarts till the next crash…

There are a lot of people out there with the same problems and the official forum contains a lot of requests according to the crashes. There were Workarounds, but none of them worked. I was very patient with Fairphone and waited a lot of time, but in June I have opened a ticket at the Fairphone support-platform, I got no response so far.

Today my wife owns a standard HTC smartphone and the FP2 crashes continuously.

Without doubt, this is the baddest solution thinkable.

Padre Logo

Until Debian 8 (known as Jessie) there was a package for the Perl-IDE Padre. But at the time there is no working Package available for Debian 9 testing/stretch, because there seems to be a bug that prevents modern Perl to compile the IDE version 1.00. At CPAN, the available version is 1.00, but at github there is a bug-fixed Version 1.01 which works really nice, even though we had to do little more work previously:

Install some dependencies needed by Padre Makefile.PL

apt-get install libmodule-install-perl \
                liblocale-msgfmt-perl \

After cloning the Padre-repository you can run the Makefile.PL, and the script is showing you the rest of the required modules:

git clone && cd Padre
perl Makefile.PL

Warning: prerequisite Algorithm::Diff 1.19 not found.
Warning: prerequisite App::cpanminus 0.9923 not found.
Warning: prerequisite Capture::Tiny 0.06 not found.
Warning: prerequisite Class::Adapter 1.05 not found.
Warning: prerequisite Class::Inspector 1.22 not found.
Warning: prerequisite Wx 0.9916 not found.
Warning: prerequisite Wx::Perl::ProcessStream 0.32 not found.
Warning: prerequisite Wx::Scintilla 0.39 not found.

Most of that missing modules are available via the Debian repository, there is no need to install from CPAN.

apt-get install libalgorithm-diff-xs-perl \
                libalgorithm-diff-perl \
                cpanminus \
                libcapture-tiny-perl \
                libclass-adapter-perl \
                libclass-inspector-perl \
                libclass-xsaccessor-perl \
                libdbd-sqlite3-perl \
                libdbi-perl \
                libdevel-dumpvar-perl \
                libdevel-refactor-perl \
                libfile-copy-recursive-perl \
                libfile-find-rule-perl \
                libfile-sharedir-perl \
                libfile-pushd-perl \
                libipc-run-perl \
                libmodule-build-perl \
                libmodule-manifest-perl \
                libmodule-starter-perl \
                liborlite-perl \
                liborlite-migrate-perl \
                libpod2-base-perl \
                libppi-perl \
                libppi-xs-perl \
                libppix-editortools-perl \
                libppix-regexp-perl \
                libparse-errorstring-perl-perl \
                libparse-exuberantctags-perl \
                libpod-abstract-perl \
                libpod-pom-perl \
                libprobe-perl-perl \
                libsort-versions-perl \
                libtemplate-tiny-perl \
                libtest-exception-perl \
                libtest-mockobject-perl \
                libtest-nowarnings-perl \
                libtest-script-perl \
                libtest-warn-perl \
                libtest-pod-perl \
                libtest-pod-coverage-perl \
                libtext-diff-perl \
                libtext-findindent-perl \
                libtext-patch-perl \
                libwx-perl \
                libwx-perl-processstream-perl \
                libterm-readline-gnu-perl \

If you rerun the there are two modules which are not in the Debian repository:

perl Makefile.PL
Warning: prerequisite Debug::Client 0.29 not found.
Warning: prerequisite Parse::Functions 0.01 not found.

We have to install these Modules via cpanminus

cd ~
cpanm Parse::Functions
cpanm Debug::Client

Debug::Client fails, there seems to be the bug, that the whole Padre-IDE is not going to work. In fact: only one Test failed, some weeks ago I forced the Installation of the module and everything works fine. I had no stability issues till now:

cpanm --force Debug::Client

Now you can run the installation procedure:

cd Padre
make test
make install

If you don’t want to use a GUI-based editor for development, the following talk will show you cool vim-plugins for Perl-development: Youtube: YAPC::2016 Damian Conway - VIM as a Perl IDE


Seit zwei Wochen bin ich Besitzer eines ASUS eee PC aus dem Jahre 2012/2013. Der unerwartete Aufwuchs meines Geräteparks hatte zur Folge, dass ich mal wieder über den Linux-Rand hinaus geschaut habe und mir vorgenommen habe auf diesem System FreeBSD produktiv einzusetzen. Erst vor Kurzen wurde die Version 10.3 veröffentlicht. Meine erste Erfahrung mit FreeBSD liegt schon lange zurück, damals habe ich mir bei Lehmanns eine der CD-Distributionen gekauft (Version 4.10 für i386), anscheinend werden diese leider nicht mehr länger produziert (openBSD hingegen schon). Seitdem habe ich immer mal wieder eine FreeBSD Installation vorgenommen, aber das System niemals wirklich produktiv eingesetzt. Die einzige dauerhafte Installation befindet sich auf einer SUN Blade 100 SPARC-Workstation, die ich aber auch nur viermal im Jahr in Betrieb habe und das auch eher aus Melancholie heraus.

Seit damals hat sich viel im FreeBSD Universum getan, die Installation, welche damals viel Systemkenntnis vorausgesetzt hatte (vgl. Slices) verläuft jetzt sehr viel flüssiger und der Installer, auch wenn er “nur” auf ncurses basiert muss sich nicht hinter Installern, wie zum Beispiel dem Debian-Installer, verstecken. Man kann bequem über einen USB-Stick booten, sich während der Installation mit einem wifi-Netzwerk verbinden und, was mir am besten gefallen hat, eine verschlüsselte /-Partition erzeugen und diese mit ZFS betreiben. Die Verschlüsselung wird allerdings nicht durch ZFS bewerkstelligt, sondern durch das schon länger in FreeBSD befindliche GELI. Die benötigte Passphrase wird direkt vom FreeBSD-bootloader entgegengenommen und das alles ohne weitere Konfiguration, direkt nach der Installation.

Die Ernüchterung stellte sich allerdings spätestens mit der Verwendung von pkg ein, einem relativ modernen Paket-Installer, angelehnt an apt-get. Der Installer an sich ist hervorragend man kann sehr schnell mit ihm suchen und die Installation geht schnell von der Hand. Allerdings war die Bandbreite zu dem in Übersee befindlichen PKG-Server derart schlecht, dass ich fast schon das Port-System angeworfen hätte. Die Übersetzung aller benötigten Programme aus den Quellen dauert aber einfach zu lange (erst recht auf einem Intel Atom).

Bei der Konfiguration von pkg haben sich also schon die ersten Schwierigkeiten gezeigt, schön ist das nicht wirklich und dann war ich auch über die wenigen pkg-mirror überrascht. Zumindest gibt es einen Spiegel auf dem europäischen Festland (Moskau):

Im viel gelobten FreeBSD-Handbuch und auch wirklich guten Handbuch hat man bei FreeBSD schon immer angefangen seine Antworten zu suchen, allerdings ist das Handbuch sehr allgemein und die Software verhält sich oftmals anders als beschrieben. In meinem Fall habe ich es innerhalb von zwei Stunden und zwei Anläufen nicht geschafft den X-Server eine eigens Erstellte xorg.conf als Konfigurationsdatei mitzugeben, sie wurde einfach stetig ignoriert, egal in welchen Verzeichnis sie lag /etc/X11/ oder /usr/local/etc/X11/. Ohne eine spezielle xorg.conf konnte ich auch nicht die Helligkeitsfunktionstasten ausprobieren/Nutzen und ohne diese Tasten ist eine Verwendung eines Notebooks meines erachtens unmöglich.

Somit ist leider mein Wunsch, FreeBSD dauerhaft auf dem Asus eee PC einzusetzen gescheitert. Ich gebe nicht FreeBSD die Schuld daran, evtl. hätte ich das Problem nach längerer Zeit selbst Lösen können, aber ich möchte nicht Tage in ein System stecken um eine Lösung zu erarbeiten, was ich mit Debian in einer Stunde bewerkstelligen Kann. Eventuell ist die FreeBSD-Community auch nicht wirklich an mobilen Nutzern interessiert, zumindest, beziehungsweise die Nachfrage ist einfach sehr gering.

Nichtsdestotrotz, FreeBSD bietet Features, welche Linux vermissen lässt:

  • ZFS-Unterstützung (mit allen von ZFS gewohnten Features wie dedup, snapshots, compression, lediglich ohne Crypto)
  • Jails
  • DTrace
  • Sparc64-Architektur (Debian z.B. nicht mehr)

Vorerst habe ich wieder eine Debian Installation auf dem eeePC. Aber FreeBSD 11 steht vor der Tür …


  • WP ist langsam, auch wenn das Backend durch PHP7 beschleunigt werden kann, so ist doch das Frontend langsam und überladen.

  • WP hat eine Unmenge an Funktionen, Schaltern und Schnittstellen die ich nie gebraucht habe und auch nie brauchen werde.

  • WP installiert automatisch Updates aus dem Netz. Scary: Es führt Skripte auf meinem System aus, automatisch, ohne Zutun. Manche mögen dem WP-System vertrauen, ich nicht mehr.

  • WP braucht ein DBMS, für meine paar Seiten die ich hoste - oversized.

  • WP schreibt mir den Editor vor den ich Nutze, evtl. gibt es Plugins die mir es erlauben einen anderen Editor als den Standardwebeditor zu verwenden.

  • mit Plugins könnte ich fast alle Punkte lösen auf denen ich hier herumhacke, aber genau das ist das Problem. Das System wird noch komplexer, langsamer und anfälliger.

  • Komeplexität führt grundsätzlich zu einer erhöhten Fehleranfälligkeit und damit auch zu Sicherheitslücken


  • Plerd generiert statische Websites, keine ad-hoc generierung von HTML bei jedem Aufruf. Das spart Energie und beschleunigt die Auslieferung.

  • Plerd hat keine eigene Benutzerverwaltung! Sollte irgendjemand neben mir auf die Website Zugriff haben, so kann man das über die UNIX-Benutzerverwaltung bewerkstelligen!

  • Plerd speichert jeden Post in einer Textdatei ab, genauer, in einer Markdown Datei. Für ein Backup muss also kein DB-Dump erstellt werden.

  • Plerd hat einen Daemon namens plerdwatch dieser generiert mir, sobald ich einen neuen Post in Form einer Markdown Datei erstellt habe, eine statische HTML-Seite die sofort durch meinen Webserver ausgliefert weden kann.

  • Plerd ist in Perl geschrieben

  • Plerd ist schnell

  • Plerd ist einfach

  • Plerd hat nur grundlegende Funktionen und ist übersichtlich.

  • Plerd ist nicht ganz frei von Abhängigkeiten, es verwendet JQuery und Bootstrap, dadurch erhält das Layout von Plerd ein modernes Aussehen und ist gut auf mobilen Geräten verwendbar.

  • Man kann seine alte Webserverkonfiguration behalten, denn Plerd ist keine Webapplikation ist die spezielle Schnittstellen wie Plack/PSGI benötigt.

  • auf werden die JQuery-, und die Bootstrap-Bibliotheken lokal bereit gestellt, sodass keine Webabhängikeiten existieren.

Martin Steinbach

Hash: SHA1,SHA256

I 'm transitioning my GPG key from an old 1024D key to a new 4096R key.

The old key will continue to be valid for some time, but I will encrypt
all new communication with the new key.

This transition document is signed with both keys and the new key is signed
with my old key to validate the transition.

If you have signed my old key, I would appreciate signatures on my new
key as well.


Old key:

pub   1024D/7400D165 2008-01-27
      Key fingerprint = 098E FF6F AF43 BE3C 3348  C6BC 41EE CDC9 7400 D165

New key:

pub   4096R/04A73215 2014-07-05
      Key fingerprint = CDA6 8DF5 BE1D 285F E508  2CE4 7AC7 A0F3 04A7 3215


To fetch the full key from a public key server, you can simply do:

gpg --keyserver --recv-key 04A73215

If you already know my old key, you can now verify that the new key is
signed by the old one:

    gpg --check-sigs 04A73215

If you don't already know my old key, or you just want to be double
extra paranoid, you can check the fingerprint against the one above:

    gpg --fingerprint 04A73215

If you are satisfied that you've got the right key, and the UIDs match
what you expect, I'd appreciate it if you would sign my key. You can
do that by issuing the following command:

    gpg --sign-key 04A73215

Lastly, if you could upload these signatures, I would appreciate it.

    gpg --keyserver --send-key 04A73215


Martin Steinbach
Version: GnuPG v2


Verschlüsseln ist ganz groß in Mode, aber um größtmögliche Abhörsicherheit und bestmöglichen Schlüsselaustausch zu garantieren reicht es oft nicht aus das Häkchen bei jetzt verschlüsseln zu setzen. Nicht zuletzt beim SecureSocketLayer.

Das SSL/TLS massive Schwachstellen besitzt und die existierende PKI-Infrastruktur mit ihren unzähligen CAs schon ein Geburtsfehler war ist hinlänglich bekannt. Aber man kann den Schaden eingrenzen, zum Beispiel bieten Verfahren wie Perfect Forward Secrecy (FS) Schutz gegen nachträgliches Entschlüsseln, allerdings ist es noch lange nicht Standard.

Die seit längerem bekannten Angriffe auf SSL/TLS BEAST und CRIME haben dazu geführt, dass sich die zuständigen Standardgremien um eine Fortentwicklung von TLS bemüht haben, so existiert mittlerweile TLS in Version 1.2. Auf diese Version können die genannten Angriffe nicht mehr angewandt werden, aber auch hier sieht die Unterstützung noch mangelhaft aus, insbesondere auf Client-Seite.

Was kann man tun?

Als Diensteanbieter sollte man unbedingt seine Infrastruktur dahingehend optimieren, dass zumindest alle oben genannten Verfahren angeboten werden und extrem defekte Verfahren deaktiviert werden (z.B. SSLv[2,3], RC4). Das kann zur Folge haben, dass Nutzer älterer Systeme nun keinen Zugriff mehr auf jene Dienste haben, aber viele lernen eben nur durch Schmerz (vgl.: Anteil von WinXP).

Auf erlaube ich nun nur noch Kryptoverfahren welche Forward Secrecy einsetzen und SSLv3, sowie Algorithmen wie RC4 und MD5 sind ausdrücklich deaktiviert (vgl.: Qualys SSL-Server-Test). Damit diese Verfahren auch immer Anwendung finden ist die Verwendung von TLS Pflicht.

Unterstützung für die Konfiguration verschiedenster sicherheitsrelevanter Software habe ich in applied-crypto-hardening von gefunden.

und die Clients?

Die meisten Browser unterstützen FS-fähige Verfahren, aber um die Verwendung von TLSv1.2 sicherzustellen müssen die derzeit aktuellsten Versionen verwendet werden (z.B. Safari7, IE11, Firefox27 (BETA)). Die Ausnahme bildet hier Firefox, der in der aktuellen stabilen Version 26 (stand Januar 2014) nur TLSv1.0 unterstützt. Dabei sind die TLS-Versionen 1.1 und 1.2 schon längst implementiert, in den Standardeinstellungen jedoch deaktiviert. Um diese zu nutzen (seit Firefox 24 möglich) müssen folgende Werte in about:config angepasst werden:

security.tls.version.max 1 3 security.tls.version.min 0 1 Legende: 0: SSLv3 1: TLSv1.0 2: TLSv1.1 3: TLSv1.2

Probe über Qualys SSL Browser-Test