Category Archives: General

Aurelia – validation of dependent inputs

Form validation in Aurelia is actually pretty nice.
You can configure the validation rules in a chainable api and add multiple rules to single fields.

However there is a problem if you want to trigger the validation of an input when another input is filled. A good example are two inputs (a start value and an end value). Of course you want to validate that the start-value is less than the end-value. But if you add the rule to both fields only the edited field will show (and reset) the error message.
Ok… This explaination might be a bit confusing… Let’s consider the following example:

You have two inputs, ‘Start’ and ‘End’. End has to be greater than start. You type ’20’ as start and ’30’ as end. It gonna look something like this:

But suddenly you realize, the start should really be 50. Of course the validation will fail, and the start will be marked as invalid.
If you now change the value of end to 100, the start-input will still be marked as invalid, because only the input you are editing is validated and you haven’t told the validation that the inputs are dependent.

This is only an example of many other use cases. I’m sure you can think of other examples like two dates (I will show this in another blogpost, where I’ll tell you about some problems I had with the Aurelia materialize datepicker), or two inputs where only one should be filled and the other be empty.
Everything results in one problem: Validation of dependent inputs.

Continue reading

JSF ViewState Hack Attempt: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 – com.sun.faces.renderkit.ServerSideStateHelper.getState (

Hack Attempt on JSF ViewState

This article explains why the error java.lang.StringIndexOutOfBoundsException: String index out of range: -1 in the class ServerSideStateHelper in the method getState (313) might be someone trying to hack your application server. It is getting quite technical in here… but bear with me… it’s really interesting. I also break down the actual attack to demonstrate what the attacker was trying to do.

Continue reading

illucIT Software on Maven Central

We have decided now to publish our free Software package on Maven Central under the namespace “com.illucit“. This way the packages can be used by everyone without having to declare a separate repository in Maven or SBT.

This software packages also contain the software displayed in out Showcases:

Image Editor Component for PrimeFaces


Sourcecode on Github:

Maven coordinates:


High-performance prefix index and search word highlighter

Showcase Page:

Sourcecode on Github:

Maven coordinates:


Introducing Git and GitFlow

Recently one of our customers faced the challenge of fixing a production error in his desktop client application. Using SVN this may be a time consuming and error-prone task. So I held a workshop about Git and GitFlow.


Our customer’s application is deployed in different versions. It may also be deployed to different customers. With a different set of features. This scenario seems quite common nowadays. However a lot of software companies are not ready to tackle this problem.


Git – a distributed Version Control System

The easiest and most effective way to support this scenario is to implement a workflow based on Git. Therefore I held a workshop about Git and GitFlow.

Continue reading

Using Lombok 1.16 with Netbeans 8.1 and Maven

Project Lombok provides annotations which reduce boilerplate code in Java applications (see Listing 1). The Netbeans IDE supports it almost out-of-the-box. You just have to enable the option “Project Properties > Build > Compiling > Enable Annotation Processing”. However the current version 1.16.8 is not working using Netbeans 8.1 and Maven.

Continue reading

Atlassian Bamboo Variable Extractor

Free Variable Extractor Tasks for Bamboo


Automatic Deployment Package Version Number Assignment

This plugin for the build tool Atlassian Bamboo provides 2 new types of tasks to extract variables from text or XML files. These extracted information can then be used later in the process e.g. by using the extracted variable to automatically set the version number for a deployment package. Without this plugin you always have to copy and paste the version number.

Continue reading

Gmail and IPv6

In the past weeks we had the problem, that some of our emails sent from our company SMTP server were flagged as Spam by Gmail (and some servers that use a spam filter from google), although we didn’t use any language we considered typical for spam.

After some investigation and fiddling with the server settings, I noticed we were using IPv6 to connect to the Gmail SMTP server. I found some other posts indicating that Gmail has problems finding the reverse DNS entry if you connect via IPv6, thus flagging your emails as spam.

There seem to se some workarounds for this:

  1. If you don’t use IPv6, you can simply disable IPv6 in your MTA (Mail Transfer Agent), so only IPv4 is used (where Gmail can resolve the reverse DNS entry). For postfix you can do this with:
  2. You can create a transport map for gmail (see for postfix)
  3. You can set up a reverse DNS entries for all your IPv6 addresses (see

After we configured our MTA to only use IPv4 when connecting to Gmail, the problems were immediatly gone and our email are now delived as expected.

Social Coding

As a software developer, it is important to keep up with current technologies, stay in touch with fellow developers and look out for interesting projects.

Especially Open Source Software (OSS) has a lot to offer for the whole community of developers and techies, so platforms like Github and Bitbucket have become bigger and more important over the last years.

The key word is “Social Coding”, a concept in which software development is not pursued in small, isolated teams, but inside the whole community. The main aspect is to make OSS projects public very early to profit from the many suggestions, add-ons and help from the community. Also finished software projects can be put on social coding platform to distribute them to a larger audience and to allow others to build derived works upon existing software.

Github basically invented the “pull requests”, an idea where people who want to make contributions to an OSS project can simply fork the current process of the software into their own account, implement some changes, and present the changes to the maintainer of the original software. This practice encourages the maintainers to get code improvements and new features from the community without giving away the control over the project.

As we really like this idea of social coding, we created accounts on the platforms Github and Bitbucket for illucIT, too. I hope we will find some interesting projects to contribute to and we also plan to release some OSS projects there by ourselves in the future.

About illucIT Software

illucIT is a software development company with focus on Java Enterprise Applications. We implement tailor-made software solutions that suit the business requirements of our customers. For that reason we employ state of the art technologies for web, desktop and mobile platforms. To provide our customers with a full service, illucIT covers all parts of software development from agile project management to actual programming including UX and design.