IntelliJ IDEA 13 with Yosemite

Trying to start IntelliJ IDEA 13 under Yosemite leads to a popup window and tells you to use Java6. There is a simple workaround to prevent this problem by changing the Info.plist inside the IntelliJ application package. Search for the following xml code and replace the 1.6* by the java version you are running.


According to this support article it is not advised by JetBrains to do so. Do the change on own risk. I am using IDEA 13.x with Java 1.8 and Yosemite mainly for JavaEE development and do not suffer from the listed problems. At least I do not recognize e.g. the alt key problem. And the big ones like crashes do not occur.

Back from holiday

After two weeks in Sardinia I am back with some Gigabyte of photos and videos. The workflow for the pictures I took with my SLR is well known. This time I used my GoPro Hero3 the second time under real conditions and need to handle the videos I shot. Normally I do only photos and my tools stack is not existing for this type of task. I will try out the GoPro Studio Software for preprocessing the videos.

Before starting with video. Here is a picture I shot in photo mode.


Howto Encrypt Your E-Mail

To encrypt email communication can be really simple. If you  want to communicate in a  secure way to your friends you can achieve this in only a few minutes. It does not have to be complicated.

There are some good technologies you can use for this task. The most common are PGP and X509 certificates. Both are public key systems and consist of two parts. One is public and the other is secret (and kept on your own computer). If you want to send someone else a encrypted mail you need to have the public part of that person. Here comes the problem: you need to have the public part of the other person. For that reason there is the “Web of Trust” in PGP and Trust Center in X509 to verify the owner of a special public part to ease the key exchange.

BUT if you only want to communicate with a few friends in a secure way that infrastructure is not necessary at all. Generate your keys, exchange with your friends, communicate.

Here are the basic steps to achieve this with X509 certificates.

  1. Download and Install OpenSSLfor your platform. (if not already installed on your computer. Many linux systems have it installed by default)
  2. Create your certificate with following command:
    openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 356
    and answer all questions. The only important field is the EMail Adress. This has to be the address which is used for this certificate. All other you write whatever you want.
  3. Congratulation! Now you have a so called self signed certificate.

What next? You have to install this certificate to use it with your mail program. Yes, it also mean you need a mail program and cannot you web mail. How to install depends on your mail program and operating system and is another story. Check the manual of your mail client and follow the steps to install.

Now you are ready but for communication at least two persons are involved. Export the public part of your shiny new certificate and bring it to your friends. The best way is by visiting them and give it to them in a private meeting. Why? To be sure the have right key. We have created our own certificate and do not use a trust center as “trusted” third person which everybody trust.

About trust. We do not use a trust center in this setup. So not root certificate proofs that our certificate is valid. Sounds insecure? Not really. Why? Because we exchanged our keys by ourself. Thats the most secure way exists. All other “Stuff” like root certificate from trust center around certificate (and web of trust in case of PGP) have the only purpose to verify that a key belongs to the person which name is stored in the certificate (remember the information from step 2).

Encrypting your communication is the best way to protect your privacy.  It is a tool to help improve security but it is no solution to solve the problem of illegal communication surveillance. Only the content of your mail is encrypted. The destination cannot be secured and it is still possible to monitor which people you write to.

Dear Google, Dear USA

I am so angry I even write a blog entry. If you check my blog history you can see that is really something special.

So far I used Google Analytics to get some information about my blog. From where, how often, how long, and so on. It is a very good service and the results are really good. Now, after the latest news about PRISM and Co. I started to think about the privacy statements of that service again. If Google tells me  in their terms of services that my data related to visitors is stored secure and confidential than I am not sure anymore who and where my data is stored elsewhere and what happens with it.

Every week another piece of informations drops into the public about secret surveillance programs. What exactly these programs do is still unknown. From official site everything is legal and we should be glad that these systems make our life more secure. But how? That’s secret, too. Of course these systems are controlled – by secret rules of course. The fact that PRISM is an United States System also means that as an non US citizen you have no right at all for asking which data is stored about you. (You can ask the companies, but in case of a national security letter you will get no useful answer).

All secret surveillance programs in general have one big flaw. They are the exact opposite of freedom and democracy. How can people vote for a party to form a government if politicians do things nobody is allowed to know? How can justice work it is not possible to control the judges?

What can I do? Unfortunately not much. At first I decided to remove Google Analytics. It is really not much but at least I can express my anger about it. Sorry Google, but there is not enough trust in your system (and server location) anymore. Now I am using Piwik and count visitors on my own server. This also improves privacy for visitors because this information can not be used to track surfing behavior across different websites.

The Joel Test

Writing good software is a difficult job. There are also thousand of books and methods out there to tell you how to improve your development process to make your software better. It’s a lifetime job to read them all. There are also very simple solutions to check whether you are on the right track to do it right. One surprisingly simple method is the Joel Test.
Ask yourself the following questions and for every yes you get one point. If you have less than ten points in the end you have a problem…
  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?


NeoAxis Game Engine

While working with Ogre3D and reading the news on their page I found a project called NeoAxis. A game engine using Ogre for graphic rendering written in C#. The screenshots are promising and the feature list contains everything I need. Physics, graphics, input control and last but not least support for multiple platforms.

I have downloaded the NeoAxis SDK and started a bit to work with it. The demos in the SDK are great. All features are shown in one big game. In this game is a long corridor with many doors. You can walk thru in first person view  and enter door by door. Behind every door one feature is shown. The source code for the demos can be found in the SDK, too, to see how it works. For some genres there are finished templates available. For example first and third persons games. You only have to find the right demo and change the code for your needs. The wiki contains documentation of the basic structure of NeoAxis and refers to the right demo source code. The main development platform for NeoAxis is MS Visual Studio but there is an deployment tool which builds and prepares packages for different platforms.

After some programming with NeoAxis and a good impression I also found some problems which made this sdk not the first choose for me. Here are some of the reasons I stopped working with it. The deployment tool delivers windows and mac binaries. For Linux is the advised solution to take wine. Ok, that will work but is not really a good solution because the user has to do a lot of work to get the software running. Due to visual studio is the  development platform it was a bit unconvenient to reboot every time I would like to develop with NeoAxis. A virtual machine was not enough because of heavy use of shaders in the graphic engine. The result was 3fps instead of 250fps during the demos. The style the documentation is written make it hard to start. Everything is in the demo code and you search the parts you need. An answer how to develop and deploy more than one application with a single installation I have never found. Except to install the sdk multiple times…

NeoAxis  is worth a look for you if you search for a C# based game engine. The graphic is nice and there are already existing templates to modify. Perhaps I did not find the right documentation to get a good access to it. And last if  you develop on windows than many problems I have had you probably will not have.

Fun with C++

Again… So many things happened and no blog entry about it.

During the work with the Ogre3D SDK at my never ending project I have had a lot of fun with old problems. Ogre is great but it is a pure graphic engine written in C++ and it lacks many features you will need sooner or later when writing a bigger application (some people call it games).

Games does not only consists of graphic effects You will also need a GUI, network support, user input, data storage, multithreading and so on. No big deal while developing for one platform but to get it running on several platforms it becomes a real time consuming problem. You have two choices. Writing code several times for different platforms by yourself or using many different C++ libraries. With both ways you need a working tool chain to build that application on all your platforms. In the end you spend much time to find the reason because of the applications runs on platform A but not B. Thats what I did the most of my time so far….

So far I am using  for network and multithreading boost. For compiling cmake. And for GUI CEGUI. The performance is great but this way is very hard to go and the code far away from what I would call nice and readable.

At work I am programming in Java. The lecture I give is in CSharp. And at home I am programming C++. Because of all the smaller and bigger problems with good old C++ and the lack of spare time I am searching for a better solution. But that will be another story…


Last saturday the 25th a demonstration against ACTA took place here in nuremberg. In my opinion it will a big mistake to sign this contract.

Picture of ACTA Demonstration take in middle the of all people with signs.