Using Subselects with CQL in CMDBuilds “filter” type properties

CMDBuild supports the usage of SQL queries inside the “filter” options if the type is a REFERENCE.

Given:

  • A lookup table named “Software Type” [{Code: DBMS}, {Code: App}]
  • A class Application [{Code: MySQL, Type: DBMS}, {Code: PostgreSQL, Type: DBMS}, {Code: Tomcat, Type: App}]; “Type” references the lookup table “Software Type”
  • A class ApplicationRelease [{Code: “MySQL 5.0″, Application: MySQL}, {Code: “PostgreSQL 9.x”, Application “PostgreSQL”}, {Code: “Tomcat 7.0″, Application “Tomcat”}]; “Application” is a foreign key to the Application class.
  • A class DbmsInstance with a reference/foreign key to ApplicationRelease

Target:

  • By adding/modifying a DbmsInstance, only ApplicationReleases shall be shown which are of type “DBMS”.

How to solve this by using a subselect:

from ApplicationRelease where Id (/(
  SELECT "Id" FROM "ApplicationRelease" WHERE "Application" IN 
	(SELECT "Id" FROM "Application" WHERE "Type" = 
		(SELECT "Id" FROM "LookUp" WHERE "Code"='DBMS')
	)
)/)

Please note, that every referenced column must be quoted with double quotes. Every value of WHERE clause must be quoted using single quotes only!
The (/(…)/) construct introduces plain SQL.

Trying to install CMDBuild and receiving an ORMException “ORM_GENERIC_ERROR”

CMDBuild is a free (“free” as in GPL v2) ITIL solution. The installation of the 2.3.1 version has been a pain in the ass. After applying the database information in the setup wizard, I always received an org.cmdbuild.exception.ORMException: ORM_GENERIC_ERROR. CMDBuild stores its log files (cmdbuild.log, cmdbuild_dd_sql.log) in the “logs” folder of Tomcat where I could find the root cause for this issue. Our PostgreSQL instance is installed on a Windows machine and holds two database templates. template0 has UTF-8 default encoding, template1 uses WIN-1252. During the installation of the database schema of CMDBuild, the template1 is used. The WIN-1252 encoding of template1 is not compatible with the used UTF-8 encoding of CMDBuild/Java. I fixed this issue by re-creating the template1 schema with UTF-8:


DROP DATABASE template1;
CREATE DATABASE template1 WITH template = template0 ENCODING = 'UTF8';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

The next time I hit the install button of the wizard, I received another ORM_GENERIC_ERROR. This time the log stated that the plpgsql language was missing for template1. I altered the template1 by issuing a “CREATE LANGUAGE plpgsql”. After that I was able to install CMDBuild.

Unattended installation of Windows Server 2012 R2 in VirtualBox and getting an 0x80042565 error

Today I struggled with a working configuration for an autounattend.xml for 9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_DE-DE-IR3_SSS_X64FREE_DE-DE_DV9.ISO (Windows Server 2012 R2, Standard, Standard Core, Datacenter and Datacenter Core). The unattended installation inside VirtualBox always failed with an error 0x80042565 or did not use the partition scheme I had previously provided.

I suppose that the problem occured in the first place because of the disabled UEFI of my VM. The usage of the following DiskConfiguration section installs Win2K12 R2 correctly:

https://gist.github.com/schakko/d5df24a2aab89e5e7ed0

Dell XPS 15, Linux and HiDPI

A few weeks ago I bought a new notebook (Dell XPS 15, 15″, 512 GByte SSD, Core i7) for my after-work work and home usage. First of all: it is an awesome fast piece of hardware. Fedora 21 boots up in 3 seconds, Eclipse (STS) starts up in around 7 seconds. But it has some disadvantages regarding the hardware:

  • Having the laptop on the lap bends the case, randomly not releasing the buttons, see http://en.community.dell.com/support-forums/laptop/f/3518/t/19601453
  • At the beginning backspace and space key felt like already used. I must admit that I am using a mechanical keyboard at work and for my standalone PC at home, so every other rubber keyboard sucks 😉
  • Return key feels slightly too small at the beginning.
  • High pitching noise, probably coming from the touchscreen. Most of the time it occurs during scrolling through long documents and having CPU load. I am not sure why this happens.

Especially the problem with the non-releasable buttons drove me crazy at first because it seemed to occur randomly. After some days working with the notebook I accepted this failure. All in all it seems to be a very nice notebook for a developer like me, but…

… The HiDPI support for Linux software just sucks. Linus Torvald statement made his statement at the end of 2012 but the current state is still bad:

  • Default Chromium package has no support for HiDPI; buttons and menus have the wrong scaling. Firefox does support HiDPI and so I set it as my default browser.
  • Scaling of some GTK input fields (radio buttons, checkbox) is wrong, see https://bugzilla.mozilla.org/show_bug.cgi?id=975919
  • Using a second display (beamer) totally screws up the X server. I can’t  get a higher resolution than 800*600 when cloning both displays. Not sure, why this happens.
  • IntelliJ (including EAP 14), Eclipse (4.4) and Netbeans (8.x) are having wrong scaled icons. See wiki discussion for Eclipse at https://wiki.eclipse.org/Bug_421383_-_Graphics_Scaling_issues_on_high_DPI_displays

For a list of workarounds, the ArchWiki is the first place to look for.

Fixing gratuitous ARP requests

Due to some internal network problems I fired up Wireshark and saw a lot of gratuitous ARP requests/broadcasts. I had never seen the sending MAC or IP before but could assign it to one the ports our switching hardware. The designated port was used for a Citrix XenServer virtualization environment, so at first I suspected a miconfiguration of one of the bonds and some looping ARP packets. This assumption was wrong: I shutted down the server and the ARP requests still came from the physical network interface, so it could only be a problem/configuration of the interface itself.

I googled for “intel gratuitious ARP” and found the answer: the Intel NIC had an IPMI module and was sending announcements but the GUI was disabled.
Fixing the problem was easy. I ssh’ed into to the Citrix XenServer and used the ipmitool to disable the ARP sending mechanism:

modprobe ipmi_devintf; modprobe ipmi_si
ipmitool -d /dev/ipmi0 lan set 1 arp generate off

Second Hackcamp Wolfsburg – December 2014

Last Saturday our second Hackcamp Wolfsburg in 2014 took place. In the run-up to the Hackcamp I had suggested to use the NeosIT office as the event location. @stevenschwenke agreed to that and so I prepared our office on Friday evening. Before the event I expected a team programming session but in the end I explained (too?) much about the Spring Framework and showed samples, use cases and technical approaches to solve different problems with the framework.

Nevertheless it was an enjoyable circle consisting of Steven, Karsten, Sven, Nikolai, Daniel, Kevin, Tobse and me. Besides the usual software development topics we talked about TV series and net political issues. For lunch time we had ordered pizza and Steven bought a lot of juice and fruit. And certainly we had a lot of Club Mate available.

I am really looking forward to the next Hackcamp in 2015 – thank you for the participation and patience 😉

Mission accomplished: 17 weeks of Freeletics

Four month ago I decided to start Freeletics for gaining more power in preperation for bouldering and to gain back my sixpack I lost with 16. The first three weeks I had ongoing sore muscles: I did sports every day, switching between running, biking and Freeletics. Thankfully to my self-motivation and the fine weather I never thought about giving up.

After three weeks I tried to motivate some of my friends to join but my attempts were not successful and so I did almost every training on my own. Due to my flexible work time I scheduled most of the training sessions in the morning.

The first time I *really* sweared about Freeletics was during my first Kentauros session in mid September. We had almost still 30°C and I did the workout in the burning sun. I never sweated as much as I did until this workout.

A week later my first hell week started. Three workouts a day sounds like much but the two days pause between the hell days allowed me to regain my power.

After the hell week I changed my location from the parking area of VW Bad and Schillerteich to the parking area right in front of the new Vfl stadium. This place is lighted in the morning and there is enough space for doing sprint sessions. Another location I moved to was our office where I did most of the Hades and MAX sessions excluding Pull-Ups. That said I must admit that Pull-Ups are my nemesis.

One week before my final hell week started, my wife and I had flied to Teneriffa for a one week vacation. I had planned to prepare my hell week during the vacation and took my sport clothes with me. Unfortunately I got a bad cold after three days and so I had to pause the training for more than a week. Considered afterwards during the forced pause my body regained the power I lost in the weeks before and in most of the hellweek workouts I got PBs.

And then the hell week began. 12 workouts on 7 days. During the vacation my sleep pattern had dramatically changed and so I started the first hell week day on 3:30 am in the morning. During the rest of the week I had sleep deprivation. During the night I woke up and thought about the next workout. It was a crazy week with few sleep, only thinking about workouts, light lasting sore muscles and always being hungry. On monday morning at 8 am I started the last three workouts at the Schillerteich. It was gusty, around 3°C cold and I had to defeat Kronos in the first place. The Push-Ups, Situps, Squats and Leg Levers were easy, but …100 Pull-Ups? Half of the time of Kronos I spent doing the Pull-Ups. But it even got worse. After Kronos I had to do two Poseidons. In total 100 Push-Ups and another set of 100 Pull-Ups. My body was full of endorphins during the last 10 Pull-Ups and I finished my first 17 weeks Freeletics with a big smile.

In my opinion it was worth the effort. I don’t have any before/after images but I can assure that my body has visibly changed. All in all it was a crazy experience. I plan to do the MAX workouts during the winter and start again with Freeletics as soon as it is cozy and sunny.

Some new tools in our toolbox: Slack, JIRA for sales and marketing processes, Spring Data JPA, Justinmind

In the first days at work after my vacation I got in touch with some new tools and ideas which I want to share

Slack

We were searching for an internal chat solution for my former and current employee since years. Most of the self hosted chat solutions don’t have clients for the smartphone or don’t provide features like syntax highlighting of pasted code. Slack is a hosted chat, the provided free plan suffices our needs.

You might ask why the hell we need an internal chat, so let me explain it:

  • communicate with team members sitting directly at the customer
  • share ideas like images or presentations between the team
  • decrease the sound level in the office
  • don’t interrupt your coworkers so they must leave their “tunnel”

Additional to that we connected our JIRA instance to Slack so we receive issue changes from JIRA inside our project room inside the Slack chat.

JIRA for sales and marketing processes

In mid august a new coworker started in a position for sales and marketing. At this time we did not have decided which tool we want to use for supporting the sales and marketing processes. Our coworker responsible for JIRA administration built a new JIRA project which has different issue types for sales and marketing and maps the real process behind it to a JIRA workflow. The current status is visible on a JIRA Agile Kanban board. A really nice solution.

Spring Data JPA

A few months ago I found Lightadmin which dynamically generates administration web interfaces for Spring Data JPA entities without the need of writing any line of HTML. The project is really awesome: you get a CRUD administration interface for your Spring Data JPA entities with minimal effort.

The problem is that you can not easily customize the interface for the customer because this is not the target of the project. Because of this reason I decided to start a new project which adapts the techniques Lightadmin uses. But instead of generating the interface dynamically at runtime, the interface and backend code will be statically generated by Xtext. After the code generation the artifacts can be customized by our developers.

I am working on the project only for a few days and I am impressed what Spring Data JPA and it’s subprojects offer. I implemented a paginated list view with jQuery Datatables and a search for entities with Predicates / Specifications in five or six hours. Writing all the SQL/JQL code by hand would have kill me.

Justinmind

I am a really bad designer. From a technical point of view I know CSS, HTML and their friends really well  – but putting it together for getting a nice looking and intuitive interface is a race I will never ever win. I was glad when Twitter Bootstrap reached the light.

Whatever: Justinmind is a really nice tool for prototying interfaces. You can choose between different GUI components, bind them to events and fill it with test data. We are still in the phase of evaluating it, but this seems one of the best tools for easy prototyping. For a design-douche like me the tool is a revelation.

My four weeks summer vacation in 2014

Instead of the usual tech stuff I am writing I want to summarize my vacation. Jenny and I started our vacation on the same day. Our first week was consisted of finishing stuff we had lying around in the last months. I did a lot of running, have been bouldering two times in Braunschweig and canoed with one of my workmates.

In the second week we prepared our wedding ceremony. We had a lot of stress on thursday and friday because our supplier of dry ice had not received our order but we got an order confirmation. The dry ice was needed for the ice cream cake. In the end we got it managed and had an awesome ceremony in the Planetarium Wolfsburg. Our friend Sophie was a fantastic wedding speaker. After the ceremony we went to the Awilon: the food was excellent, our inaugural dance was really funny and we partied hard ’til sunday morning. The hangover on sunday was bad, but it was worth them. I was glad that a friend and other relatives of mine I havent seen for a few years joined our wedding day.

On monday in the third week we met again with my friend and his fiancee for dinner It was funny and we are looking forward to their wedding in the next year. A day later I started with sports again and began a new side project, too. The side project is written in old-school PHP and manages sport workouts. On friday I began the first Freeletics workout together with Julian. I was really relieved that my running and climbing sessions of the last months prepared me good enough and so the muscle hangover the next days kept within a limit.

In my last week I did only Freeletics with Tino and Thomas – Julian was unable to continue – and further work on my workout tool. The weather was – like the three weeks before – excellent. Most of the days it has been sunny which motivated me for sports or just relaxing outside.

Wrapping it up:

  • Finished watching Lost. NOW I understand the last season.
  • Prepared and cleaned up the Wolfsburger Ruderregatta
  • Ran 82 kilometers in the four weeks of vacation
  • Canoed on the Allersee with Timo
  • Made delicious cheeseburger with Bison meat
  • Watched Transformers 3 – worst movie for years
  • Watched Drachenzähmen leicht gemacht 1 & 2 – funny!
  • Will never order again ice cake and dry ice
  • Had an awesome wedding ceremony and wedding party with my wife, our family and friends
  • Met one of my friends again after eight years
  • Regained my motivation to do some programming in my spare time
  • Made a Spring MVC/REST architecture template
  • Started writing my workout app in PHP
  • Finished reading Marc Elsberg – Blackout
  • Finished reading Tom Hillenbrand – Drohnenland
  • Started reading Markus Orths – Alpha & Omega
  • Barbecued on some evenings
  • Got a sunburnt belly, brest, arms, legs – but only on the front 😉

Review Hackcamp Wolfsburg June 2014

Yesterday the first Hackcamp Wolfsburg took place at the Schiller 40. Steven Schwenke did a great job to organize and prepare the event. Despite the fact that only 5 persons, including myself, attended the event it has been a great success. Beneath my coworkers Kevin and Niko from NeosIT and Steven from MSG, Carsten from Eves IT was involved.

Steven started with his JavaFX workshop which gave us a good introduction what can be done with JavaFX. I was working with JavaFX the first time and realized that the framework is cool but there are some drawbacks: Inconsistent APIs, no easy option to import own components in Scene Builder, a missing marketplace for FX components, no reflection of bean properties inside the scene builder and so on. Nevertheless, it gave me a really good start. During lunch time we ordered pizza @Joeys and watched some very funny videos of Joko and Klaas. Being pigged out I started my Xtext talk with a small presentation I hacked together during lunch. It was not the first time I hold a presentation about this topic and the reactions are almost every time the same if the listeners are developers without experience in code generation or modelling: “WTF is he talking about?”. Sooner or later I must prepare an easy introduction presentation, but it is not so easy at all to give a methodical valuable start.

After the presentation with lot of Meta in it we implemented a small project I prototyped together with a customer. As we went along with the coding, the attendees got the idea of code generation and modelling and realized the possibilites what can be done with Xtext. I *really* like this moment 😉 I pointed Steven towards XtendFX and we did talk a lot about possibile applications. I was really surprised that the session took longer than I expected. Thanks for listening and the very interesting discussion!

At the end Karsten showed us JBoss Forge. At a first glance it looked like Spring Roo. I have to take a further look the next days.

After eight hours of hacking and talking I was really wasted but in a good way. I am looking forward to the next Hackcamp and want to thank all participants for making it such a good event!