Mittwoch, 13. Januar 2016

Nerd Recruiting

Very sharp recruiting form OTTO E-Commerce Shop, from the IT City of Hamburg.

Dienstag, 12. Januar 2016


HTTP2 is the new, better, faster HTTP and it replaces Googles SPDY ( One really informative site to HTTP2 is

To use HTTP2, you need an client. CURL support it, but not as default. To use HTTP2 with CURL on MacOSX, you have to install CURL with brew:

brew install curl --with-nghttp2

Now you can check out HTTP2 with CURL

If you got following error:
curl: (1) Unsupported protocol
You use an CURL without compiled HTTP2 support. On MacOSX brew doesn't replace the existing CURL. You have to use the full path to the CURL from brew:

/usr/local/opt/curl/bin/curl --http2 -I -v

Sonntag, 18. Oktober 2015

The 2nd Most Important Task of a Software Developer

The most import task of a software developer is to write code. Well, this answer was pretty easy. Really, yes! But what is second most important skill. I ask my colleagues, first guy says, watching youtube - nice but wrong, 2nd guy: write good documentation - good shot but also wrong.
For me and I'm confident that I'm right, the second most important task of a software developer is to delete code. The first important task is to write code and the second important task is to delete code.
I don't mean delete bugy code, I mean delete working code. Why should you do this?

We have limited time and limited count of developer, this means, we have a more or less constant velocity developing code. If our code base grows, we spend time for maintenance code an we have less time for developing new features, an so on and so on util we reached standstill.

To avoid the standstill, we suggest following tasks to reduce the code size, it a little bit like the Simplify your Life Literature

  1. remove dead code
  2. refactor code to build simpler and shorter code
  3. reimplement code in an effective way, change tools, ... 
  4. delete working code if there is users don't require the function anymore
If somebody say's that we keep this function because, we may use them - then remove the code. The word may is the indicator to remove the code. If we delete to much code, don't worry. Most of the times it cheaper to rewrite a little peace of code instead of keeping all old code fragments.

Here some link illustrating the problems:

  1. Linux Maintainer needed, because of heavy load and huge Code base
  2. Linux is planning to remove EXT3 filesystem

Dienstag, 13. Oktober 2015

Log Jmeter Variables with Flexible File Writer

There is no easy way to write a JMeter variable into a standard log file. Also the flexible file writer is not able to use calculated variables into the log file. The flexible file writer is only able to use the properties of the previous sampler. These properties are fixed. So I use a small hack to implement this functionality in Jmeter.

First is calculate a variable called CACHE_INFO e.g. with the regular expression extractor.

Second, I use the BeanShell PostProcessor to overwrite an unused property, here I use ThreadName, of the previous sampler.

Third, I use this abused sampler property with the flexible file writer.

Donnerstag, 8. Oktober 2015

Avoid double software development? No!

In the many cases of software development like this, double work is a better opportunity. Reasons there for:

If you try to avoid double work, you have to spend significant time to collect the requirements and to coordinate the work. You don’t reduce the time you need to develop a working software solution. Let me illustrate that, if you speak every week with 8 people for 1,5h for four weeks, then you have spend 60h of working time plus one week for software development, makes total 100h. If two developers build two solution, you spend only two weeks, total 80h. One additional reason, too much and too less communication frustrates developers easily.

If you develop two proper working solutions, you can decide for better solution. This means, if you has developed only one solution, your chance is 50% to have the worst solution. If you select one solution from two, you chance is 100% to have not the worst solution.

My advise is in the first develop round, every team are allowed to develop his own solution. This mean share nothing. In the next round,  the development teams can decide to switch to one solution, to the better one or to decide to develop an better third solution with the experiences of booth early versions.

Freitag, 18. September 2015

How to setup routing with Cisco VPN an Mac OS X

If you are using the build-in Cisco VPN Client in Mac OS X, you can also route your normal request beside the VPN tunnel. In the common OpenVPN client Tunnelblick, it's easy to setup these routes in the config file.
With the build-in Cisco VPN client, there is no preferences for these routes. The solution is to add these missing routes via Terminal.

Your local network has IPs like 192.168.1.X

sudo route -nv add -net 10 -interface utun0
This line routes all IPs starting with 10 through the VPN tunnel. 10 is here the net on the other side.

sudo route change default
This line route all other requests through through your local gateway (router). In my local network my gateway has the IP an I have an 192.168.X.X local network.

Montag, 7. September 2015

Vortrag auf der Hamburger Konferenz Solutions

Ihr könnt mich und das SCALE Team von OTTO auf der 2015 Solution Hamburg erleben. Hier stehen wieder die nichtfunktionalen Anforderungen wie Robustness, Performance, Load und Security im Mittelpunkt.

Datum und Ort:
09. – 11. September 2015
auf Kampnagel in Hamburg