Tech - 11/10/2017

PAYBACK at the TestBash Germany 2017

TestBash is a series of testing-oriented conferences guided by the Ministry of Testing. On October 6th the first German TestBash  took place in Munich. PAYBACK was there as a silver sponsor, and also participated with several colleagues.

We had a lot of fun, which already started the day before at the pre-TestBash at the office of our buddies at QualityMinds.

After a day full of talks, ranging from accessibility testing to how to become a leader, we finally gathered in typical bavarian style.

Good news: Next year the TestBash will again take place in Munich. See you there!

Tech - 28/06/2017

First Munich Selenium Meetup

Last Thursday the first Munich Selenium Meetup took place at MaibornWolff. Our colleague Robert Bossek from QualityMinds presented his approach for Page Objects he developed at the PAYBACK Global Portal.

Robert showed an extension of the page objects pattern. It adds the concept of a Section Object to suit our PAYBACK Web Development needs, where we construct web pages out of sections defined in the CMS FirstSpirit. The approach has been implemented in our preferred test automation framework Codeception. You can find the slides here.

It was a promising start of the Meetup series and we had a lot of interesting discussions during and after the talk. Thanks to MaibornWolff for the organization, see you next time!


Tech - 21/05/2017

#io17– Day three, final day

Remember your favorite app and its registration or login process there? Big registration forms and long-winded login flows are painful. To learn more about this important topic I participated in a session about Android APIs to improve registration, login and payment forms. This presentation kicked off the day. And it did not get boring afterwards. As Google announced official support for the Kotlin language, I had to visit some Kotlin talks. These were quite interesting, but we need to evaluate if and how changing the language would help us.



Between sessions, there was time to checkout cool demos by the Project Tango-Team – Augmented Reality and Daydream-and Virtual Reality at its best. The nice thing about that was, that the demos were mixed between playing around and asking questions about the technical foundation.

Last but not least, I used the time to talk to many Google Devs about the upcoming changes for Android O, as well as clarifying some issues we had in our app. Interesting are the new limits on apps, running in background to get location updates. The goal of the limits is to prevent apps draining too much battery. Adding limits is not all for Android O. As the notification system has strongly evolved, users have more control on how and when notifications are shown. App designer and developer will need to adjust in future, just like our teams will think about it.

After three days of exciting talks, discussions, meetings with different people, coding and bug hunting sessions, I am really happy to fall into bed. Thank you all for this great event and the great support from the teams at Google and PAYBACK.


Tech - 19/05/2017

#io17 – Day two

Today we did a deep dive into different technologies. Product managers and developers from Google showed us how easy it is, to write apps for the Google assistant and how to use them with Google Home and Home Automation. They challenged the whole developer community to come up with great ideas and start developing in this new area.

As a present, a Google Home Kit was handed out to every participant. I am really looking forward using it at home in my apartment. Hopefully it will work in Germany so I can develop some cool smart home apps 🙂



To ease the UX development and improve the speed of build systems, some new features in Android Design Tools were presented, as well as updates to the gradle build system. With that in mind, I hope to be prepared to cope with every UX idea which is coming up. A fast building time is crucial for that. Especially if building apps for different countries, it shouldn’t take too long. Otherwise the development would be very inefficient and devs would get mad after a while.

My personal highlight was meeting the firebase team to hunt a bug, we have reported in their libs some time ago. We put our heads and laptops together and finally found a solution, which will be published for “the whole world” in one of the next releases. #happy


Tech - 18/05/2017

#io17 – Engage!

The day we were waiting for has finally passed by. It has been an awesome day! Two keynotes, one more general and a specific one for developers, kicked of the Google I/O 2017. Sundar Pichai and many other Googlers presented the next big thing: Nearly every product in the future will be based on AI and machine learning. Therefore existing SDKs will be adapted and lightweight machine learning libs (like Tensorflow light) will empower mobile developer to use some sort of AI in their apps. Additionally some special hardware in the next generation of mobile devices will speed up the whole AI training and computer vision mechanism.


Thereby images can be interpreted automatically and a user can ask Google which POI is shown on a specific image. Or Google can be asked by different people to “call mum”, which calls the individual number of each mum. Besides that, Kotlin was announced as a officially supported programming language for Android development. We will see how this is helping or challenging our future development.

Support for our current development techstack and product could be found in many areas, too. On the technical site, new lifecycle methods were presented, as well as new Android Studio profiler for helping us to find network and memory issues in our app. On the product site, new notification-mechanism and the Android O operating system gives the user more control about notifications and protects him from apps draining too much battery.


However, most awesome are the discussions and conversations with the Google devs and other mobile developers from all over the world. Common issues could be discussed and new ideas exchanged.
To strengthen these friendships between all the attendees of the Google I/O, the day had to end with a special evening. Arcade games, bands, VR immersive movies and a night market with cuisines from around the world.

CU at #io17


Tech - 17/05/2017

#io17 – Getting up at 6am

A „shocking“ mail arrived yesterday evening: “Badge pickup starts at 7am, based on a first-come, first-served mechanism”. However, the Google I/O is surely a valid reason for developers around the globe to get up early. So I got up and took a car to this year’s location, the Shoreline Amphitheatre.

When I arrived, I was kind of expecting long queues and crowded registration desks. But none of them. After three minutes I got my badge, as well as a goodie bag containing t-shirt, sun lotion (!), sunglasses (!) and a water bottle (!). Nice 🙂


The rest of the day was used to explore some other tech companies inside Silicon Valley. Many green avenues, biking trails and roads, broken up by high tech buildings of like Microsoft, Waze and Apple.

I finished the day by visiting the old and the new Apple Campus to get another impression than only the Google one. However, they have one thing in common: Nice places! (Although a Theresienwiese is missing^^): Looking forward to “Laptop and Lederhosen”.

CU at #io17


Tech - 16/05/2017

Google #io17 – Sascha goes to California

„Congratulations – You have won“, that was the headline jumping into my point of view as I opened my mail inbox. I was some kind of shocked, that my Gaussian spam filter had not blocked this mail. So I immediately marked the message as SPAM. Done!! Spam was removed from the inbox. Ready to continue work…..

.. Really? …
Luckily, I decided to have a closer look at the presumed SPAM mail.
It was written very nicely in English, with correct spelling and elaborate grammar.
.. Strange …
Is this really true? I knew, that I have applied for a Google I/O Ticket some weeks before and that I had to fill out plenty of questions during the admission process. But I have never thought of actually getting the invitation. I was proven wrong. And a money withdrawal by Google showed me, that the ticket is for real.

I was so happy about it, so that my productivity immediately boosted up, ^^ yes indeed. In fact, the whole team was really keen on talking to the Google devs about some bugs we have found in their libs as well as learning more about new exciting Google technologies.
Therefore we prepared a bunch of questions and tried to find the best matching sessions.

Let’s get started! Engage!


Tech - 09/02/2017

First Jenkins Area Meetup in Munich @ PAYBACK

On Monday, 6th February 2017 we had our first Jenkins Area Meetup in Munich. We were quite surprised how many local experts are around here. They even came from Ingolstadt just to join the JAM Kickoff. One of the main goals for us was to find out what the attendees are interested in. Besides the obvious social networking part to share and learn about Jenkins technologies, we asked what they would love to hear about in further JAM Sessions. Here are the results:


People were also highly interested in some specific workshops for Jenkins Job DSL and our own Framework “V-DSL”. Please stay tuned until we can release it into the wild under an Open-Source licence. To get a sneak peak about what we did, check out the slides and presentation on Rule Jenkins with Configuration as Code in the meanwhile. Another topic was advice about how to build a rock stable Jenkins environment.

Startup Jenkins with specific JVM options and System Properties

-Xms4096m -Xmx4096m
-XX:NewSize=2048m -XX:MaxNewSize=2048m
-XX:ParallelGCThreads=4 -XX:ConcGCThreads=4

This is the base setup you should go with. 4 gigs of RAM should be enough for any use case, nothing more. If you are interested in the details here, check out another great Jenkins talk: So, You Want to Build the World’s Biggest Jenkins Cluster? Keep in mind, that if you encounter significant performance decrease, activate JMX in order to keep an eye on your JVM running Jenkins. To generally enhance your overall Jenkins experience is setting proper System Properties. Check out the complete list to see what is possible. For example:


The most significant one we stumbled upon was a fix for a major groovy memory leak. This is fixed in groovy version 2.4.8, but unfortunately, Jenkins core runs 2.4.7 in the current LTS version (v2.32.2). We recommend to set the following startup parameter as a workaround if you are excessively running groovy scripts (e.g. DSL or pipeline)


Have full control on other system settings with Post-initialization scripts

The simplest example can be found in the documentation, but this opens up a lot of other possibilities too. For example we heavily struggled with Jenkins SECURITY-170, where arbitrary build parameters were disabled. Either you enable them back one by one, or you are aware of the risks and enable them back again and migrate affected jobs calmly. Same thing with Jenkins SECURITY-95. If you struggle with displaying issues with e.g. internally scripted tooling for Jenkins expand the Context Security Policy settings accordingly, or disable them. Keep in mind that simply disabling these security features on an internet facing Jenkins environment is a bad idea obviously.

 // SECURITY-170
 System.setProperty('hudson.model.ParametersAction.keepUndefinedParameters', 'true')
 System.setProperty('hudson.model.DirectoryBrowserSupport.CSP', '')

Update on Static Code Analysis Plug-ins

For the second talk, we had special guest Prof. Dr. Ullrich Hafner from the University of applied sciences Munich, who is the maintainer of the Static Code Analysis Plugin. He started developing this plugin round about 10 years ago and gave us a small forecast what might come up in the next 10 years, depending on personal time and engagement of his students working on bachelor and master thesises on this topic. Upcoming in one of the next releases is for example an improved recognition of warnings based on Abstract Syntax Tree comparison. Also a more modern warnings report view in Jenkins is planned. Please report any bugs on Jenkins bugtracker and do not hesitate to raise pull requests.

Follow up
A big “Thank you” to all who joined the JAM Kickoff. Many interesting talks took place especially after the keynotes and we are looking forward to host the next Meetup soon. Join the JAM Meetup and follow us on Twitter.

Christian & Markus

Tech - 05/02/2017

Join us at the first Jenkins Area Meetup in Munich!

JenkinsSwagThere are a lot of tech companies in our city and many of them are using Jenkins as their automation server. We want to gather all Jenkins enthusiasts and start this Meetup series with some interesting talks. You will see, how to configure a rock solid build server and get a glance at an ongoing open source project for a Jenkins Configuration As Code Testing Library.

Also plugin development will be covered: Almost every software project uses any kind of static code analysis and, of course, there exist a lot of Jenkins plugins for this purpose. Did you know that they are all developed here in Munich? You will have a chance to meet the guy on Monday, so don’t forget to sign up here.

Jenkins doesn’t just cover topics around continuous integration, you can do continuous delivery with it as well. To round things up, we will show you how to automate your deployments, for example with Spinnaker.

Tech - 24/01/2017

Apache Kafka Meetup with Jay Kreps and Michael Noll

Just use Kafka, they said. It will be easy, they said.

At PAYBACK Global we introduced Kafka in 2016 to enable asynchronous communication between our services in order to decouple our components and improve performance. What started as a simple idea quickly turned into an ambitious project with several hurdles. The concept of a messaging service might seem easy at first, but the more services you have and the more requirements (e.g. delivery semantics) you add, the more complex it gets in the real world. Who’d have thought that?

Our first approach of using Kafka:


We identified the following topics which still needed to be addressed:

  • How do we assure backwards and upwards compatibility?
    • How to implement?
    • How to test?
  • Do we need versioning for messages? If so, how?
  • Do we need to transport part of the request context along with actual messages/events, like a correlation id?
  • How do we deal with resilience and other non-functional requirements

If you want to find out how we answered these questions and which other pitfalls we encountered on our way join us on Wednesday 25th 2017 at the Apache Kafka Meetup with Jay Kreps and Michael Noll.