Debugging Web Views on Android

  1. connect your phone through USB (+enable USB debugging on the phone somewhere in the settings).
  2. run application on phone (leave it on login screen)
  3. run Chrome on the PC and go to the chrome://inspect/devices#devices URL
  4. Click “Inspect” at the bottom of your phone (should be named)
  5. On the phone login to the system using your credentials
  6. Check chrome what does it have in the console tab. It should print something useful.


CSS Nesting and Why Its a Good Thing

Please read this first:

So, in CSS we can establish a hierarchy so that a class only applies if it’s within a parent class. This hierarchy is a good and very much needed thing. Because this way you can define your class names for specific areas of the site with freedom of mind – it will never interfere with or be overwritten by another class that has (accidentally) the same name. Think of class names such as .title. And no, .newsletter-title and .homepage-newsletter-title is not a good idea (CSS supports native hierarchy, so why would you want to fake it?).

Example of SASS Good Practise:

   margin: 20px

             margin-top: 20px

            margin-top: 10px

         padding: 50px

Example of SASS Bad Practise:

    margin-top: 20px

    margin-top: 10px

    padding: 5px

    margin: 20px

You agree? Are you ready to overshoot the target? Read this:

Fachmessen – November 2017 – Basel – März 2017 – Basel – März 2017 – Zürich

Trigger jenkins deployment from github push with ansible

We are looking at a simple and robust way to automate deployment. The following show some of the non-intuitive things necessary to set this up.


  • I recommend using the github oauth plugin for authentication and of course the github plugin to easily clone github repos.
  • use – because the default endpoint to trigger builds cannot be accessed by anonymous users
  • Do not allow job names with spaces: In the jenkins global settings look for Restrict project naming and enter \S*
  • Set up a jenkins job for the repository that contains your ansible deploy script
  • Set up jenkins like this with the following Dockerfile
FROM jenkins
# if we want to install via apt
USER root
# stuff required by jenkins jobs, inlcuding ansible
RUN apt-get update && apt-get install -y php5-cli php5-curl python-setuptools python-dev build-essential libssl-dev libffi-dev

RUN easy_install pip
RUN pip install virtualenv

USER jenkins


This script bootstraps ansible


# exit the bash script if one of the command returns an error code
set -e

# Setup a proper path, I call my virtualenv dir "venv" and
# I've got the virtualenv command installed in /usr/local/bin

echo "setting path variable"

echo "create virtualenv"
if [ ! -d "venv" ]; then
    virtualenv venv

echo "activate virtualenv"
source venv/bin/activate

echo "installing ansible"
pip install ansible boto httplib2

echo "tossing in some secrets"
# use the secret file function in jenkins to fill in these variables
mkdir credentials
echo "move $all_yml, $deploy_key_pem and $server_stage_pem to $(pwd)/credentials"
mv "$all_yml" credentials/
mv "$deploy_key_pem" credentials/
mv "$server_stage_pem" credentials/

chmod 600 -R credentials/*

# if ansible roles are pulled in from other git repos:
git submodule update --recursive

echo "deploying"
./deploy stage 3-deploy-site.yml


  • Set up a webhook. Example:

Email Gateway Provider credentials / connection test

Here I am using

openssl s_client -starttls smtp -crlf -connect


auth login

Enter the baes64 encoded username that you get as follows:

echo -n "SMTP_Injection" | openssl base64

Do the same for the password.

Full conversation:

auth login
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.0.0 Authed. Go on.

auth plain:

echo -ne "\0User Name\123123123" | base64

Hint: Use swaks for testing and full smtp logging output:

brew install swaks
swaks -server -tls --auth-user SMTP_Injection --auth-password 123123123 --to --from --auth PLAIN