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.

<key>JVMVersion</key>
<string>1.6*</string>

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.

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?

 

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…

Discovered Maven

Sometimes it is a good idea to have a look around you even if everything works fine. So far I was used to Ant for building my java applications. Ant is a great tool and like gnu make it is able to do everything you want it to do. You only have to write a proper configuration file…

Maven is on the first look a bit more restrictive because it forces you to follow some conventions given by the chosen type of a project. But if you follow this way you will get much simpler configuration and well structured layout of project files. The project type specific stuff is handled by plugins and there are plenty of plugins already out there for nearly every task you could imagine. Due to the fact that you can write your own plugin maven is less restrictive as it seems in the beginning. And for all standard use cases I was really satisfied with the already existing plugins.

Maven is written in java itself and therefore available on every platform java is running. The existing plugins can be retrieved from internet repositories. Even depending jar files you need to build or deploy your project are retrieved automatically. Perfect to build on different machines without the need of installing the jar dependencies on every build machine or blow up your source revision system.  Just add it to maven configuration and if something is missing it will be retrieved.

The eager Ant is not dead. It has now a new companion.

Switched to Ogre3D

More about my never-ending-hobby-project. Last year in july I played around again with Ogre3D and now I finally switched my graphic development environment form Irrlicht to Ogre.

It was a hard decision between two good projects and there was also a big bunch of work connected to the change. But to learn something new is one of the major aims (beside having fun and creating a game). Now the first basic application is running, many pages of documentation have been read, and I have got some new skills in Blender.

The reason I took the workload on me to change the engine was to get a specialized  graphic engine with support for all mayor platforms (Mac, Linux, Windows). For getting a specialized graphic engine with many features, tools and a big community I “pay” the price to use third party tool kits for example input handling or window system.

If you are searching for a toolkit to visualize something in 3D, control the output via mouse or keyboard and navigate thru the virtual world without reading many sides of documentation and many writing many lines of code than the right choice is Irrlicht for you. Its easy to master the basics, clean API, runs on many platforms, compact all in one solution and has a very good render performance.

If you want a graphic engine which does perfect graphic rendering with high performance but nothing else than Orge3D is the right choice you.

Programming in Scala

If you want to learn a new program language because of seeing new concepts or search for a new way to solve a problem which is difficult to implement in the language you are currently using. Give Scala a try!

t is a modern language which combines the best concepts of many programing languages and paradigms. You can program either object oriented or functional just as you wish  or its better for solving your problem. The language is very extensible and support you with mechanisms to add new functionality in libraries and you can use them like built-in constructs of the language. That make the language scalable and now you can guess where the name is coming from.

Programming in Scala

Before I enumerate all features of scala take a look at the homepage or read the book “Programming in Scala”. It is very good start into scala which covers all concepts step by step. You should  have already some experience in object oriented programming languages. Java would be great because you can skip some parts of the book. Otherwise you have to read a few pages more which is not really a problem.

Take a look a scala if you have some time. You will not regret it. (Beware that you will ask yourself  the question “why it is so complicated to implement…?” if you write code in an other language than Scala).