Live with grace. Write superb software.


  • Docker With OverlayFS on Ubuntu 14.04

    So if you follow up with Docker, you might have found out that the default storage that is provided with a normal Docker installation, is backed by the mighty aufs, created by the awesome Junjiro Okajima.

    But out there there is another file system that is faster, with smaller footprint, etc. It's named OverlayFS, and was merged in the main kernel. Sounds to good to be true? Well read about it.

    TL;DR Docker With OverlayFS on Ubuntu 14.04:

    apt-get install linux-generic-lts-vivid linux-headers-generic-lts-vivid


    wget -O - | sh
    service docker stop
    echo 'DOCKER_OPTS="-s overlay"' >> /etc/default/docker
    service docker start


    Now, this file system is available only from kernel version 3.18 and up. If you just installed Ubuntu 14.04, as of this date (10th of November, 2015), you should have 3.19 already installed. If you have an older existing Ubuntu 14.04 you need to update your kernel manually.

  • Docker With OverlayFS on Ubuntu 16.04 LTS

    Since I already wrote an article on having Docker running with OverlayFS on Ubuntu 14.04, I won't go over all of it again. Here is a not so quick link on why it's cool to have it. Basically it's faster, harder, better, stronger, and scales better.

    The only note is that since Ubuntu comes with v4 Kernels, there is no need to install any more packages except docker itself. The commands below must be ran as root.

    TL;DR Docker With OverlayFS on Ubuntu 16.04:

    wget -O - | sh
    systemctl stop docker
    CONFIGURATION_FILE=$(systemctl show --property=FragmentPath docker | cut -f2 -d=)
    cp $CONFIGURATION_FILE /etc/systemd/system/docker.service
    perl -pi -e 's/^(ExecStart=.+)$/$1 -s overlay/' /etc/systemd/system/docker.service
    systemctl daemon-reload
    systemctl start docker


    The first step just installs docker, straight from

    wget -O - | sh

    Awesome. The problem now is that it runs with the aufs driver, so we need to stop docker.

    systemctl stop docker

    The next step is to create a copy of the current configuration file from the system itself. We will override the configuration from the system by copying it as /etc/systemd/system/docker.service .

    CONFIGURATION_FILE=$(systemctl show --property=FragmentPath docker | cut -f2 -d=)
    cp $CONFIGURATION_FILE /etc/systemd/system/docker.service

    Now, we change the ExecStart line by appending the OverlayFS setting:

    perl -pi -e 's/^(ExecStart=.+)$/$1 -s overlay/' /etc/systemd/system/docker.service

    We now tell systemd that the configuration files have updated, and start docker again:

    systemctl daemon-reload
    systemctl start docker

    Done. Enjoy.


  • Fail2Ban Doing Real Work

    I see that some people try to access my host, even if they are not me.

    Crazy, right?

    Here is a small statistic in less than a year, on how many attackers fail2ban managed to ban, when trying to bruteforce this website via ssh:

    [root@ciplogic ~]# iptables -L -n | grep REJECT | wc -l


    So if you don't have it yet, and run some linux, definitelly install it.

    If you use CentOS just do:

    [root@ciplogic ~]# yum install fail2ban

    Happy admining.

  • Linux Automatic Updates

    I generally tend to have quite a bit of virtual machines running Linux. Some of them CentOS, some of them Ubuntu. Probably so do you. Some of them are started more often, some of them lay dormant quite a while, and then when you boot them up for whatever reason, e.g. to test the migration of your blog from apache to nginx, you need to apply whatever updates.

    Super annoying, I know.

    Thus, here's an easy tip. Just add a script in /etc/cron.daily to do the updates. e.g. /etc/cron.daily/update-my-system. For example I set:

    apt-get update -y && apt-get upgrade -y

    if it's Ubuntu/Debian, or

    yum update -y

    if it's CentOS/RHEL.

    I do this also on all the development machines that I have a graphical interface, so I don't get that supper annoying dialog asking me for the updates.

    You boot, it updates.

    It stays up, it updates on a daily basis.

    It's that simple. I know I wrote about it before. But it's important.

    Update for CentOS

    See here:


  • Linux Automatic Updates on CentOS

    Here's an update for the automatic updates, geared at CentOS/RHEL only.

    Dumitru Ciobârcianu tells us that there is a package for CentOS that already does that, named yum-cron. Thus instead of editing files inside the /etc/cron.daily, you can get away with:

    yum install yum-cron

    This in turn will create two cron jobs, one daily to do the updates, and one weekly, that will also do cleanup such as:

    # cat /etc/yum/yum-weekly.yum 
    clean packages
    clean expire-cache
    ts run

    Furthermore it allows configuration for checking packages, and what not. So definitely on CentOS go with yum-cron, since it's the better alternative.

    Thank you Dumitru!

    On Debian/Ubuntu there is also a package named cron-apt, but that one by default will do only the update of the package definitions (apt-get update -y) and not the actual upgrade of the system.

  • Pointy Thingie: The Linux Font Measuring Unit

    Since I don't want eye strain, and have a mild OCD, I want the same font and sizes across all the monospaced text editors that I am using.

    The font I decided in using is Ubuntu Mono with some patches to look good on my vim. It's a regular truetype font.

    Thus I went into the journey of setting it up across four applications (gvim, terminal, IDEA and VS Code).

    Turns out that IDEA and Visual Studio Code think that the font size should be 16 Pointy Thinigies, while GVim and the terminal would rather go for 12 Pointy Thingies, to render a text with the exact same size in pixels.

    Good job Linux.

  • The Eclipse Experience


The one to rule them all. The browsers that is.


SharpKnight is an Android chess game.


MagicGroup is an eclipse plugin.