Wow, it’s hard to find the right tone for this post as my current background is that I have been re-newed as an IBM Champion for the next year. Currently I am not feeling so IBM Champion-ish to be honest. As an IBM Champion you are rewarded for evangelising and advocating IBM solutions - which I always did during the last 16 years, especially Notes and Domino. But even with my bread-and-butter products it’s hard to keep on advertising these days.
Don’t get me wrong, I really appreciate being recognised as a specialist in the ICS world, but the other half of my yellow/blue soul just keeps revolting. It’s quite remarkable that I was elected again after my rant post about the current IBM products portfolio like IBM Verse or Watson Workspace. I also appreciate this behaviour. Constructive criticism seems not a blocker for being recognised and rewarded - that's how it should be.
Less is more
Apart from just being a „user“ of the products mentioned above I am also a developer who has to use the given SDKs and tools provided by IBM, which in this case is the Watson API for Java and Node.js as well as IBM Bluemix.
I was one of the first non-IBMers who blogged and published material about the IBM Bluemix ecosystem and when it started it was a lot of fun. The first version of Bluemix looked promising, modern and it just worked as described. Today I look at it and I feel a bit sad about to what this platform evolved. It’s not intuitive anymore, it’s buggy (see this and that) and it’s slow. I get the exact feeling when I looked at Ubuntu several years ago (or Java, Windows, Android). My term is: it’s developed to death.
Notes and Domino - it’s hard
At We4IT we are developing solutions on Domino for our customers. I am a member of the development team around Aveedo, the platform which aims to make the Notes client obsolete by bringing your Domino apps to the browser at your fingertips. Domino is still a mighty platform for almost all business-related protocols and use-cases but it isn’t a modern platform regarding development. XPages were a big step forward though it was already outdated when it was published back in 2008 as it was built on JSF 1.2 and Java 6. This is still the numbers we are working with. The major problem is Java 6 (1.6) as current frameworks and/or SDKs are built on top of at least Java 7, so is the Watson SDK for Java. IBM promised to deliver Java 8 support with the upcoming Feature Pack 8 which is announced for Q1/2017 - fingers crossed.
Until then we have to deal with substitutions, workarounds and 3rd party stuff.
Watson and Domino - it’s even harder
The Watson Java SDK was ported by one of the developers to run on a Java 6 environment - but not completely. All Alchemy API stuff won’t work (some do work after some research) but it’s tinkering and not a solution. The major problem is the SSL cypher lengths being used on all the endpoints Watson provides to use the services such as language recognition. Java 6 doesn’t support this bit rate on the SSL certificates.
Workaround - Node.js for the win
We ended up creating a proxy server based on Node.js which runs locally on the machine where Domino resides. This allows us to use the endpoints without SSL where the Java SDK will fail on Domino’s XSP runtime which is Java 6 based.
One thing I learned (again) during the last days while struggling with the SDKs, was the lack of or the missing documentations for Watson services. It seems the people who develop all the service runtimes and features are much faster than those who document them or implement it in the corresponding SDKs. For example it turned out that you CAN use the language translator for German text to translate them into e.g. English on Bluemix/in the Watson service but this language is not supported in the Java SDK. For this particular example we have to use Node.js in general until Java SDK has been updated.
I used Node.js seriously for the first time during the last 3 days and I have to admit: it’s great! I am far away from „loving“ it, but hey, we will see what happens. It’s less effort to get results than using any Java based code, that’s for sure. I never was a Java guy and I probably won’t be in the future. The caveat though was the documentation again: there is the API documentation bound to the Watson demo and the sample code inside the Github repository for the Node.js SDK. Both are wrong for some services (translation again). Hello, IBM, we need updated documentation!
developerWorks forum - for the win
Luckily I got answers from the community in the developerWorks forums around IBM Watson services - within 20 minutes for each question I posted - that’s amazing! Thank you for this!
IBM Bluemix and Node.js
When I finally sorted out all my problems I had with the Node.js proxy my next step was to deploy it on Bluemix - maybe a customer doesn’t want to run a local Node.js server to use Watson services in Aveedo, so this could have been the option. It wasn't.
I wasn’t even able to re-deploy the boilerplate application back to Bluemix without errors using the CF tool (which is the preferred way). I played around with any option and tried different settings (timeout in manifest.yml etc.) but no luck.
I ended up to deploy it successfully via the Jazz/Git repository and the DevOps services (build, deploy) - just to find out that also this SSL cypher is too long to be consumed by Java 6 on Domino - bummer.
IBM did a lot during the past years, created new products, services and strategies - it just seems to me to be „not ready for production“.
It’s hard to „evangelise“ and „advocate“ this.
p.s.: there are examples from other companies that show that it is possible to deliver whole ecosystems that work and are simple enough to work with - which I won’t name here.