Software Dev.

How to connect to SAP HANA using JDBC

Recently I had to connect a Java application to SAP HANA and I made some notes along the way:

The first step is to get the SAP HANA JDBC driver, a file called ngdbc.jar. The quickest way is to download the SAP Hana Cloud Platform SDK from here:

Choose the latest “Java Web Tomcat 8” from the download section (a package starting with neo-).

Unzip the archive to any location in your machine.

Extract the JDBC driver (ngdbc.jar) from the archive. You will find the driver in the archive inside a hidden folder under: repository/.archive/lib/ngdbc.jar)

Use the driver with the connection string


Where the port is


So if your instance number is 10, the port would be 31015.

The custom driver class name is



Software Dev.

How to Connect Pentaho Data Integration to SAP HANA


Recently I had to connect Pentaho Data Integration to SAP HANA and I made some notes along the way:

The first step is to get the SAP HANA JDBC driver, a file called ngdbc.jar. The quickest way is to download and install the SAP HANA client from the SAP Software Download Center, and then extract the file from your installation directory
(C:\Program Files\sap\hdbclient\ on Windows, /usr/sap/hdbclient/ on Linux)

If you don’t have a user account for the SAP Software Download Center, you’ll need to get the driver from some other source. For example:

  1. Install the SAP HANA tools into eclipse (oh, yeah, you may need to install eclipse first)
  2. Look for the eclipse plugin files that were installed with the SAP HANA tools  (mine were in <home_folder>/.p2/pool/plugins)
  3. Look for any jar file with jdbc on its name. I found one called
  4. Change the jar extension to zip and unpack it. Cross your fingers.
  5. Look for a lib directory and see if the ngdbc.jar file is in it.
  6. Repeat 4,5 until you find the file.

(I don’t get why SAP wants to hinder development for their platform by making it almost impossible to get their JDBC driver… but anyways…)

Go to the folder where you installed Pentaho Data Integration and copy your recently obtained ngdbc.jar file into the lib directory.

Restart (or start) Pentaho Data Integration.

Pentaho Enterprise Edition: If you have the Enterprise Edition of Pentaho Data Integration, doing a bulk load in SAP HANA is pretty straightforward. Just follow the instructions here.

Pentaho Community Edition: I believe Pentaho doesn’t provide the SAP HANA bulk load plugin for you. In that case, you need to set up a Generic Database connection and use a regular table output step.

Create a new transformation, and then create a new connection.

Screen Shot 2016-06-21 at 11.16.56 PM

Per this page, we learn that the connection string for a SAP HANA connection is


Where the port is


So if your instance number is 10, the port would  be 31015.

The custom driver class name is

Screen Shot 2016-06-21 at 11.17.47 PM

Fill the form, click test, Ok and you’re good to go!

You may now use this connection to read/write data from/to SAP HANA.

I tested this with PDI 4.4, 5.4 and 6.1. Help me keep this post updated by pinging me at twitter if any of this is no longer valid.


Best of Project Mgmt. Sales Software Dev.

Stop punishing your users and learn some design fundamentals


One thing that never ceases to amaze me is how bad in-house enterprise applications look and behave: clashing color combinations, buttons that don’t respond to clicks, messy forms, elements that look like links but aren’t, inconsistent non-standard controls, no user feedback whatsoever, ugly reports, you know the drill. It’s even more incredible how the poor users find the courage and patience to put up with those monstrosities.

Commercial applications are not exempt from this, although in lesser degrees, because they’re usually tested by real users. Master of all this is SAP, whose interface and user experience appears to have the sole purpose of making us feel miserable at our jobs. Even their Business Intelligence product, whose intention should be to provide a decent way for looking at data, empowers users to create notoriously ugly and unusable charts:


This doesn’t exclude industry darlings like Apple. They also have done their own missteps.

The reason behind all this is that most applications are done solely by engineers. Hey! Don’t get me wrong, I’m an engineer myself. But I also know –somewhat– the limits of my expertise.

With the massive adoption of smartphones and the fierce competition in the different app stores, now we have very well designed applications in the hands of millions. Beauties like Paper, Partly Cloudy, Clear, Instagram or even the mundane mobile Google Maps. Applications who manage the difficult task of being useful and beautiful at the same time.

Also web apps, like twitter, asana, wunderlist, Gmail and even Facebook are becoming more and more versed in good practices of user interface design. So, as an application developer you have more pressure by the users, or at least some kind of responsibility to create pleasant and usable applications.


Nothing beats an engaged user that loves an application which solves a problem for her and it’s a dream to use at the same time. You’ll have better bug reports, better testing and better rapport to top management. If your app doesn’t get someone excited about what it looks like, then you’re doing something wrong.


Ok, I’m a software developer. How do I stop punishing my users?

Use a framework

If you’re developing a web application, user Interface frameworks abound. I particularly like the all-inclusive Dojo and Ext JS. But you can use other standard ones like jQuery UI or yui. Frameworks make your life easier because usually someone who really knows about design has pre-thought things for you. That doesn’t mean that these libraries doesn’t have ux and ui failures (I’m looking at you, Ext JS grid), but still you’re better off using them than boldly deciding to develop your own.

If you’re not keen on using a full blown javascript library for user interface, at least get some help on the static side of things. I –and everyone else– am using twitter bootstrap at the moment.


Hire a designer

In 2005 I started incorporating designers in all of our development projects. We gave them the specs, the intended audience and our general usability idea. They provided the magic. From that moment onwards, people started telling us that our applications where much easier to use, and even beautiful. They went from “Meh” to “Wow! I love this!” in weeks. The change was absolutely amazing.


Don’t try to reinvent the wheel

Get some ideas from the best practices around. Sites like UI-Patterns will give you pointers on how to design login screen, error notifications and even forms. Copy the best practices and then innovate.

If you’re designing a Windows client application, you can take ideas from Quince. And please, oh please, at least take a look at the Windows User Experience Guidelines. No, you don’t know everything. You really need to read this.


If you cant’ afford a professional usability test, do the “mom” test

Put someone in your family to use your application. You’ll see how some incredible questions and suggestions emerge from these “regular users” sessions.


Learn some design sensibility

This is the toughest part. It will be very hard to convince yourself that you don’t have any design skills. But believe me, there are reasons why you ended up as a software developer and not in design school.

The Non-Designer’s Design Book changed my way of approaching design and opened my eyes to the pervasiveness of bad design on the web. An easy to follow book that teaches us engineers the basics about typography, alignment and general good design principles.

Also, I read an entire book on forms and it was a life-changer. If you’re doing some kind of enterprise application it will surely have a lot of forms. Forms that Work will teach you a couple or a dozen things you never knew or thought about designing usable forms.

I also keep a tab on Jakob Nielsen’s usability articles. It’s a great free resource of user experience commentary and the product of years of research on good design principles.