| Recent Blog Posts
Thu, Sep 1st 2016 4:01a Niklas Heidloff
Some people have asked why I haven’t blogged since June. Here is why …
Almost two years ago I started to work for IBM Emerging Technologies. I wanted to work in this group for multiple reasons. One reason was because some of the people in that group worked as developer evangelists for Bluemix which is what I wanted to do as well. I really enjoyed this role since I could learn a lot, since I could blog and open source samples, since I could attend developer conferences and more. As yo
Analyzing Data with IBM Watson Internet of Things|
Tue, Jun 14th 2016 4:47a Niklas Heidloff
Once you’ve connected your ‘things’ with the Watson Internet of Things platform, the next question is how to process the received data. In some scenarios the raw data triggers actions immediately, sometimes the data needs to be persisted so that it can be used for historical/descriptive analysis and sometimes the data is used to perform predictive analytics and prescriptive analytics.
The Watson Internet of Things platform uses MQTT which is a lightweight and secure publish/sub
Recognizing Text in Images with Watson’s Visual Recognition API|
Mon, Jun 6th 2016 6:23a Niklas Heidloff
The Watson Visual Recognition service is now generally available and a lot of new functionality has been added. The service combines the old beta capabilities plus the Alchemy functionality and the previous Visual Insights service.
With the new service you can receive classifications of images, faces can be detected and even text is recognized. All of this can be done by simply invoking APIs without requiring deep learning skills.
With the new service you can now define and train multiple custom
Pictures from Bluemix at DNUG|
Fri, Jun 3rd 2016 4:12a Niklas Heidloff
This week I attended DNUG in Hamburg/Germany. DNUG is the German user group for IBM Collaboration Solutions. In the app dev track several sessions covered Bluemix.
It was the 43th conference of DNUG but this time it was very different. After years of declining numbers of attendees the new board has managed to double the number of attendees compared to the last conference. The new DNUG organization is now much leaner and cost effective. One example is that all servers and infrastructure has been
Machine Learning Courses for Developers|
Wed, Jun 1st 2016 3:07a Niklas Heidloff
As readers of my blog will know, I want to learn more about machine learning. I’ve managed to run some samples and I’ve built my own first little samples. It feels like the next step is to understand more about the different algorithms, for example when to pick which one and how to tune the parameters to achieve the best results.
To learn more, I’ve started to watch the first hours of the awesome courses below. The courses are a great introduction to machine learning and very d
Spark Machine Learning Samples for IBM Bluemix|
Mon, May 30th 2016 4:54a Niklas Heidloff
Below is a quick overview of samples that demonstrate how to use the machine learning capabilities in Spark on IBM Bluemix.
Flight Delay Predictions
David Taieb posted the slides of his hands-on session how to predict flight delays based on historical data and whether predictions. The sample uses the machine learning algorithms Logistic Regression, Random Forrest, Decision Tree and Naive Bayes.
When playing rock-paper-scissor everyone has his/her own strat
Integrating Tools in Bluemix DevOps via Open Toolchain|
Fri, May 27th 2016 5:26a Niklas Heidloff
At InterConnect IBM previewed a new set of DevOps functionality which is now available as experimental on Bluemix. Via Toolchains IBM tools and third party tools can be used seamlessly together for the development, deployment and management of Bluemix applications.
With toolchains other common non-IBM tools can be integrated nicely in the Bluemix developer experience, for example by providing a single sign on between Bluemix and the various tools. Additionally the tools can interact between each
Running the Spark Recommendations Sample on Bluemix|
Wed, May 25th 2016 5:29a Niklas Heidloff
Apache Spark comes with a set of machine learning samples. One of those sample is a movie recommendation system which makes personalized recommendations based on a technique called Collaborative Filtering. In this article I describe on a high level how this sample works.
For more details check out the tutorial from the Berkeley university. The dataset used in that tutorial contains 10 million ratings from 72,000 users on 10,000 movies. The Spark project comes with a synthetic dataset in the same
Discovering Open Data via Analytics Exchange on Bluemix|
Wed, May 25th 2016 3:22a Niklas Heidloff
As I’m trying to learn more about machine learning I spent some time to look for data that I can use. While GitHub is the place to get open source code, there doesn’t seem to be a counterpart for open data. Below are a couple of websites that help finding data.
In Bluemix there is an Analytics Exchange which gives you access to free and open data in categories such as economy and business, leisure, transportation, and others. The screenshot shows a sample dataset which contains revie
Getting started with Spark Machine Learning on Bluemix|
Thu, May 19th 2016 6:15a Niklas Heidloff
I’m fascinated by the power of machine learning and I’m trying to learn more about this technology. I’ve started to look into how to use the machine learning library in Spark.
The Spark documentation of the spark.ml package explains the main concepts like pipelines and transformers pretty well. There are also a number of good videos on YouTube about machine learning. I’ve used the spark.ml library as opposed to spark.mllib since it’s the recommended approach and it
Getting started with Predictive Analytics on Bluemix|
Wed, May 18th 2016 4:06a Niklas Heidloff
IBM Bluemix provides a service Predictive Analytics which developers and data scientists can use to build applications that help users to make predictions about the future for different scenarios. Below is a quick introduction of this functionality.
Let’s start with a definition of Predictive Analytics from Wikipedia.
Predictive analytics encompasses a variety of statistical techniques from predictive modeling, machine learning, and data mining that analyze current and historical facts to
How to build Facebook Chatbots with IBM Watson|
Thu, May 12th 2016 4:23a Niklas Heidloff
I’ve open sourced a simple sample of a chatbot for Facebook that leverages IBM Watson Dialog and IBM Watson Natural Language Classifier for conversations with users.
Get the code from GitHub.
The GitHub project contains a sample of a Facebook bot built on the Facebook Messenger Platform which is currently available as beta. The sample bot is pretty simple but might people give some ideas how to use cognitive Watson services and how to host the bot on Bluemix.
The sample bot shows recent tw
Check out the High Quality Bluemix Webinars|
Tue, May 10th 2016 4:11a Niklas Heidloff
In order to learn new technologies I often watch webinars and videos. For Bluemix there pretty good technical webinars with great speakers, mostly from the development teams. Unfortunately they are not that easy to find. So here is a quick overview.
IBM Bluemix Dev Webinars
Registration on event.on24.com (17 fields)
Replays are available after registration
IBM developerWorks Open Tech Talks
Registration on ibm.6connex.com (9 fields)
Replays are available a
How to invoke OpenWhisk Actions for certain IoT Device Events|
Mon, May 9th 2016 3:26a Niklas Heidloff
Serverless Computing is often useful in event-driven Internet of Things (IoT) scenarios. For example when IoT sensors exceed a certain temperature actions are invoked to fix the issue.
OpenWhisk is IBM’s serverless computing offering in Bluemix. In order to implement a use case like above with the experimental OpenWhisk service, at this point you need to deploy a non-serverless application which receives MQTT events from IoT devices and invokes the appropriate OpenWhisk actions. While such
How to use Spring Boot for Serverless Computing|
Wed, May 4th 2016 5:49a Niklas Heidloff
Serverless Computing is a relative new technology which allows developers to build event driven code which scales and for which you only pay the time it’s running. OpenWhisk is IBM’s serverless computing offering hosted on Bluemix.
Useful MQTT Tools for the IBM Watson IoT Platform|
Tue, May 3rd 2016 4:00a Niklas Heidloff
For the development of Internet of Things applications it’s often useful to simulate devices. Below are two options which are easy to use.
The instructions describe how to connect to the IBM Watson IoT Platform on Bluemix. In all cases you need to create your own Internet of Things Platform service and create your own device type and device.
With the MQTT Helper application on Bluemix you can connect to a MQTT broker and subscribe and publish to MQTT topics. The trick is to kno
Creating Docker Actions with OpenWhisk|
Mon, May 2nd 2016 8:32a Niklas Heidloff
How to use API Connect to manage LoopBack APIs|
Tue, Apr 26th 2016 6:11a Niklas Heidloff
As an example I used a simple sample application ‘Approval Requests’ built on the CLEAN stack. The sample is available as open source a
Developing OpenWhisk Actions via the new Web Editor|
Mon, Apr 25th 2016 6:02a Niklas Heidloff
In addition to Cloud Foundry, Docker and Virtual Maschines Bluemix provides a fourth compute option OpenWhisk. OpenWhisk is an event-driven compute platform that executes code in response to events or direct invocations without having to maintain servers. The advantage is that you only have to pay for actual usage, not for peaked projections.
Pictures from Bluemix at JAX 2016|
Fri, Apr 22nd 2016 4:04a Niklas Heidloff
This week my colleagues David Barnes, Ryan Baxter, James Thomas, Thomas Bück, Timo Roeseler and I attended JAX in Mainz/Germany which was attended by 2000 people, mostly Java developers. There was a lot of interest in Bluemix and we enjoyed the discussions with developers. Below are some pictures from our booth, our sessions and prize draws.
The team from left to right: Ryan, James, David, Thomas, Niklas
David Barnes in his keynote about the next generation of software developers and drones:
How to get started with Machine Learning on Bluemix|
Fri, Apr 15th 2016 10:22a Niklas Heidloff
There is a lot of talk about artificial intelligence (AI) these days, especially since Google’s AlphaGo beat a Go world champion. Companies like IBM are using this technology already in a number of products. For example on Bluemix developers can easily consume cognitive Watson services like speech or image recognition that use machine and deep learning under the cover. While these Watson services are very easy to use for developers, sometimes you want to use machine learning for other scen
Driving Cars autonomously with IBM Bluemix|
Mon, Apr 11th 2016 5:27a Niklas Heidloff
At JavaLand we presented how to steer Anki Overdrive cars with IBM Bluemix via speech and gesture recognition. Since the cars send their position data to the cloud we could also demonstrate a simple version of collision prevention.
The demo is available as open source and I documented it in a series of blog entries (see below). My colleague David Barnes interviewed me and created the video Driving Cars autonomously with IBM Bluemix. Thanks a lot, David!
Here is the high level architecture with
Measuring Heart Rate with Wireless Earphones and Bluemix|
Thu, Apr 7th 2016 10:06a Niklas Heidloff
The Dash from Bragi are wireless smart earphones with a lot of sensors in them. Below is a quick example how to get data from the heart rate sensor and send it to IBM Bluemix. This functionality could be used, for example, to track health of factory workers or patients in hospitals.
I open sourced the code on GitHub.
At this point the controller is running on a MacBook (when the device will expose more sensor data, I’d like to provide a sample mobile app). The controller talks to The Dash
Meet Bluemix at JAX 2016|
Wed, Apr 6th 2016 4:33a Niklas Heidloff
From April 19th until 21st my colleagues David Barnes, Ryan Baxter, James Thomas and I will attend JAX in Mainz/Germany to present IBM Bluemix and to talk with developers. JAX is a developer conference with around 2000 attendees with a focus on Java, architecture and software innovation. I attended JAX and W-JAX last year and based on my positive experience I’m sure it will be a great conference again.
David, Ryan, Thomas and I will give sessions related to the cloud, IoT and Docker. The
My Thoughts on the Next Generation of IBM Domino App Dev|
Tue, Apr 5th 2016 6:26a Niklas Heidloff
Before I started to work on Bluemix I had worked 15 years in the IBM Collaboration Solutions space, especially on application development. Below are my personal thoughts on how app dev in IBM Domino could evolve, both on-premises and in the cloud.
App Dev Models in Domino
Since Domino has been around for a long time the app dev capabilities have grown. At this point there are developers who build rich client applications via forms and views, there are developers who use Domino pass through HTML,
EngageUG Session: How to build Line of Business Applications with Bluemix|
Wed, Mar 23rd 2016 2:56a Niklas Heidloff
Tomorrow I’ll give a session at EngageUG with the title “Live on the Edge of Innovation with IBM Bluemix”. Bluemix is IBM’s innovation platform which supports developers to write new applications and functionality easily and fast without having to worry about infrastructure.
There is a ton on innovative services, runtimes and capabilities in Bluemix. In my session however I’ll focus on one aspect which is how to build collaborative Line of Business applications.
Tools for Node.js Developers on Bluemix|
Tue, Mar 22nd 2016 5:59a Niklas Heidloff
IBM Node.js Tools for Eclipse (beta)
With this Eclipse plugin developers get several tools to build Node applications. For example npm install can be triggered and applications can be launched directly from the IDE (including debug mode).
Here is a screenshot of the wizard to create new projects based on Express or LoopBack.
There is also JavaSc
Developing Offline Capable Mobile Apps with LoopBack|
Mon, Mar 21st 2016 12:09p Niklas Heidloff
Today I looked briefly into some experimental functionality of the LoopBack framework to develop offline capable mobile apps. I’d like to add this functionality to my sample of the CLEAN stack (Cloudant, Express, LoopBack, AngularJS, Node) which comes with (hybrid) mobile apps built via AngularJS, Ionic and Cordova.
There is a nice video describing this functionality. In a nutshell data is stored in HTML Local Storage in browsers. The data synchronization is done on the business logic leve
How to trigger OpenWhisk Actions on Cloudant Databases Changes|
Thu, Mar 17th 2016 6:23a Niklas Heidloff
Let’s use the same scenario as previously. In a help desk application you want to translate tickets which have not been written in English to English so that support agents understand. Rath
Wed, Mar 16th 2016 4:33a Niklas Heidloff
In addition to Cloud Foundry, Docker and Virtual Maschines Bluemix provides a fourth compute option OpenWhisk (experimental at this point). OpenWhisk is an event-driven compute platform that executes code in response to events or direct invocations.
IBM Bluemix Demo with Anki Overdrive Cars|
Mon, Mar 14th 2016 11:54a Niklas Heidloff
Last week at JavaLand the Anki Overdrive demo was perceived pretty well and I’d like to demo it at other conferences this year as well. Obviously it’s much more impressive to see live demos with the actual devices, but if we won’t meet, I put together a deck with photos and screenshots and an architecture slide.
Here is the series of blog articles about this demo.
Collision Prevention for Anki Overdrive Cars with Bluemix
Steering Anki Overdrive Cars via Speech
Pictures from Bluemix at JavaLand|
Thu, Mar 10th 2016 4:26a Niklas Heidloff
This week David Barnes, James Thomas and I attended JavaLand and presented IBM Bluemix. As last year it was a very good conference with high quality sessions and we had a lot of great discussions with developers. Below are some pictures.
Our Bluemix booth:
The team from left to right: James Thomas, David Barnes, Niklas Heidloff
We demonstrated Anki Overdrive cars connected to Bluemix to steer the cars via speech and gestures.
We gave out two GoPro cameras. This is a photo of the first prize d
Integrating Watson Dialog into Minecraft on Bluemix|
Mon, Mar 7th 2016 2:55a Niklas Heidloff
In an earlier article I wrote about how to use the Watson Personality Insights service in Minecraft. The sample was based on the work from my colleagues Kyle Brown, Joseph Kozhaya and Srinivas Cheemalapati who had documented how to run Minecraft servers as Docker containers on Bluemix. Recently they updated their documentation and added how to use the Watson Dialog service.
For my Docker session at JavaLand this week, I thought it would be fun to kick off the session with a Minecraft sample: Rap
How to deploy and run Swift Kitura Applications with Docker|
Thu, Mar 3rd 2016 3:36a Niklas Heidloff
At InterConnect IBM announced and demonstrated various ways to run Swift code on the server. You can use the Swift runtime in Bluemix (Cloud Foundry buildpack), you can use the Swift Sandbox, you can write event based logic with OpenWhisk and you can run Swift in Docker containers on Bluemix. With these capabilities iOS developers can now write server side code in the same language used for mobile apps.
In order to build REST APIs with Swift you need a web framework. For Node.js applications typ
Wed, Mar 2nd 2016 10:29a Niklas Heidloff
How to consume Bluemix Services in LoopBack Applications|
Wed, Mar 2nd 2016 4:28a Niklas Heidloff
With the LoopBack framework you can easily build REST APIs for your own business objects, you can build web and mobile clients and much more. The LoopBack backend applications and the AngularJS web clients can be hosted on Bluemix. Additionally Bluemix services can be consumed, for example the cognitive Watson services. Below is a sample how this works.
Get the code of the sample application from GitHub.
When Bluemix services are created and bound to Bluemix applications, they provide credential
How to write Mobile Apps for LoopBack Applications|
Tue, Mar 1st 2016 2:20a Niklas Heidloff
Download the sample application from GitHub.
In AngularJS applications you typically build views that interact with services via controllers. The services access data from t
How to write AngularJS Frontends for LoopBack Applications|
Mon, Feb 29th 2016 3:23a Niklas Heidloff
Download the sample application from GitHub.
In AngularJS applications you typically build views that interact with services via controllers. The services access data from the server-side applications. Obviously you can write your own services which invok
Authorization in LoopBack Applications on Bluemix|
Wed, Feb 24th 2016 3:05a Niklas Heidloff
The Node.js framework LoopBack supports authorization for models (business objects) via roles on both application level and object level. This is, for example, important in business applications where only people with certain roles have access to certain documents. Below is a sample how to use this functionality.
Download the sample application from GitHub.
The sample uses test users defined in a Cloudant database by default, but you can change it easily to authenticate against the Single Sign O
Customization of REST APIs in LoopBack Applications|
Tue, Feb 23rd 2016 3:27a Niklas Heidloff
LoopBack creates automatically REST APIs for custom models (business objects) that are persisted. While this is helpful to get started quickly, for example in proofs of concepts or first iterations, the final APIs often have to be customized. LoopBack provides various ways to achieve this.
When I looked briefly at LoopBack for the first time a couple of weeks ago, my initial concern was that I don’t want to expose the ‘schema’ of my databases as REST APIs via the out of the box
Authentication in LoopBack Applications against Bluemix|
Mon, Feb 22nd 2016 3:29a Niklas Heidloff
The Node.js API framework LoopBack supports third-party logins to authenticate users and to link accounts. This article describes how to authenticate from LoopBack applications against the Single Sign On service in Bluemix so that you can leverage existing enterprise directories.
Get the code from GitHub.
The Single Sign On service supports different identity providers. For example enterprise customers typically use SAML. If customers don’t have an SAML identity provider, they can install an I
Samples to get started with Cognitive Watson Services|
Fri, Feb 19th 2016 1:49a Niklas Heidloff
Over the last weeks I had to pleasure to investigate most of the Watson services on Bluemix. Below is a series of articles I published over the last weeks. In the articles I describe the different services, most of the times by providing simple samples including code snippets and screenshots.
Overall I really like the developer experience of the Watson services and how easy it is to embed cognitive functionality in your own applications. The last versions of some of the services can now be train
Usage of Cloudant in LoopBack|
Thu, Feb 18th 2016 4:02a Niklas Heidloff
The Node.js framework LoopBack supports multiple connectors for various data sources. Below is a sample how to use the Cloudant NoSQL database in Bluemix.
Check out the sample code on GitHub. It shouldn’t take longer than 15 minutes to set up the sample application. The sample uses basically a CLEAN stack with Cloudant, LoopBack, Express, Angular and Node.
After you’ve created the Cloudant service on Bluemix you get your own credentials. The credentials are stored in environment vari
Creating Business Objects and REST APIs with LoopBack|
Wed, Feb 17th 2016 4:00a Niklas Heidloff
Recently I’ve developed samples with LoopBack which is a very powerful Node.js framework. Over the next days/weeks I’ve planned to blog about LoopBack in more detail, especially how it can be used in the context of Bluemix. Below is a simple sample how to create business objects for which LoopBack provides persistence and REST APIs.
Here is a high level description of LoopBack from their website:
LoopBack is a highly-extensible, open-source Node.js framework.
Quickly create dynamic
Authorization of Node.js Applications in Bluemix|
Mon, Feb 15th 2016 4:00a Niklas Heidloff
As for authentication there are various ways to handle authorization in Node.js applications on Bluemix. Below is an example how to use the Node module acl. With this module you can use roles for authorization, both on application and even document level.
You can download the source code from GitHub and try the demo yourself. Follow the steps in the README and check out the screenshots.
In the sample two users log in against the Bluemix Single Sign On service. One user gets the role ‘admin
Customization of Authentication Pages in Bluemix|
Wed, Feb 10th 2016 3:08a Niklas Heidloff
With the Single Sign On service on Bluemix users can be authenticated against various directories, for example via SAML. A default set of pages is provided so that users can log on or change their passwords with an out of the box user interface. The pages can also be customized for your own branding and design.
Authentication in Node.js Applications on Bluemix|
Tue, Feb 9th 2016 3:03a Niklas Heidloff
There are different ways how to do authentication in Node.js applications running on Bluemix, either via Bluemix services, third party offerings, open source libraries or self written code. Below is a sample that leverages the Single Sign On service and a Mongo database to store user sessions for cloud native applications.
Get the code from GitHub.
The Single Sign On service supports different identity providers. For example enterprise customers typically use SAML. If customers don’t have
Meet Bluemix at JavaLand 2016|
Mon, Feb 8th 2016 4:06a Niklas Heidloff
Next month on March 8th and March 9th JavaLand will take place in the theme park Phantasialand in Cologne, Germany. After our positive experience last year, IBM sponsors JavaLand again this year. My colleagues David Barnes and James Thomas and I will present IBM Bluemix at our booth and in sessions.
At our booth you can not only learn about Bluemix, but we will also have two lotteries on Tuesday and Wednesday where people can win two GoPro Hero Black 4 cameras: 4:50 PM on March 8th and 3:50 PM o
News Analysis via AlchemyAPI for Topics, Companies and People|
Wed, Feb 3rd 2016 2:10a Niklas Heidloff
The AlchemyAPI service on Bluemix provides an API to access news and blog content from the last 60 days enriched with meta information like sentiments and entities identified through natural language processing. This allows, for example, to build applications focussed on trend analysis for certain topics, companies or people.
The AlchemyData News API indexes 250k to 300k English language news and blog articles every day and stores the last two months. The News API uses internally several of the
Samples of the Watson Tradeoff Analytics Service|
Tue, Feb 2nd 2016 3:15a Niklas Heidloff
The Watson Tradeoff Analytics service on Bluemix helps users to make decisions when balancing multiple conflicting goals. Below are a couple of samples which demonstrate the functionality of this service.
When buying technical devices I typically compare similar devices and then decide which one to buy. To find similar devices I often use filtering mechanisms that e-commerce sites provide. In some cases these sites also support comparing items by displaying tables. But static tables are not opti
Text Analysis via AlchemyAPI to identify Entities, Concepts and Sentiments|
Mon, Feb 1st 2016 5:15a Niklas Heidloff
With the AlchemyAPI service on Bluemix provides multiple AlchemyLanguage APIs that offer text analysis through natural language processing. Below are some samples that show how to extract entities and concepts and how to understand sentiments.
AlchemyLanguage provides 12 different APIs to analyze text. The APIs can be invoked separately or via a combined call to optimize network requests. Here is a quick sample how to invoke the service to find entities, concepts and sentiments for my last blog
Fun Worker Safety Demo leveraging the Watson IoT Platform|
Thu, Jan 28th 2016 11:50a Niklas Heidloff
Here is a nice demo of the IBM Watson Internet of Things platform. My colleague John Cohn led the creation and Travis Siegfried is presenting it.
The worker Bob, the builder, wears an intelligent helmet with an accelerometer and temperature, sound and oxygen sensors. The data is sent to the IBM IoT cloud and analyzed to observe the health of workers. Watch the one minute video for a demo.
You can you find other cools demos from John on his website. I like especially the video “Innovation
Customizing the Watson Language Translation Service|
Thu, Jan 28th 2016 3:31a Niklas Heidloff
With the Watson Language Translation service in Bluemix you can translate from and to English, French, Portuguese, Arabic, Spanish and Egyptian. To optimize the translations you can customize the service for your own domains. Below is a simple example.
Let’s say you want to translate news about your products. You can use the out of the box translation capabilities based on the pre-defined news corpus for most text. However for your product names you often need to customize the service to t
Simple Sample of the Watson Document Conversion Service|
Wed, Jan 27th 2016 9:33a Niklas Heidloff
With the Watson Document Conversion service on Bluemix PDF, Word and HTML documents can be converted into HTML, plain text or JSON. The converted documents can be used as input to other Watson services like Concept Insights and Retrieve and Rank.
In my concept insights sample I’ve used the service to convert the downloaded HTML files into JSON. From the JSON the title and body fields were extracted and uploaded to the concept insights service. Check out the Python script convert.py file to
Watson Concept Insights Sample for Eclipse FAQ|
Mon, Jan 25th 2016 3:34a Niklas Heidloff
My colleague Hiroaki Komine and I’ve open sourced a sample that shows how to use the Watson Concept Insights service and the Watson Document Conversion service on Bluemix to improve search results for the Eclipse FAQ.
Rather than limiting findings to traditional text matching, Concept Insights explores information based on the concepts behind your input. Let’s use the Eclipse FAQ and the email client Lotus Notes as an example. Lotus Notes leverages the Rich Client Platform from Eclip