| Recent Blog Posts
Mon, Oct 16th 2017 2:54p Niklas Heidloff
We demonstrated how to write a Node.js application that uses Botkit to connect with Slack and that uses IBM Watson Conversation as natural language processing service.
Get the code of our sample from GitHub.
Composing Serverless Apps with IBM Cloud Functions|
Tue, Oct 10th 2017 8:13p Niklas Heidloff
Today at Serverlessconf IBM announced a new key capability (as IBM Research preview) of IBM Cloud Functions. With the new tool ‘Composer‘ apps can be created which contain multiple cloud functions. These apps coordinate the invocations of actions and the data flow. Compared to the previously available action sequences the new functionality is much more flexible.
Cloud functions are typically rather simple and focussed on specific tasks which is why people often refer to cloud functio
Testing Watson Conversations in Slack|
Thu, Oct 5th 2017 7:03a Niklas Heidloff
This works well for production bots, but requires some configuration first. For testing purposes there is an easier way to create a Slack app with a bot user and to add this to a Slack team.
From the ‘Deploy’
Pictures from code.talks|
Wed, Oct 4th 2017 1:33p Niklas Heidloff
Last week I attended code.talks in Hamburg, Germany, which is a development conference with roughly 1500 attendees. As always it was a pleasure to listen to great speakers and to talk with developers at our booth. Below are some pictures.
Location (Cinemaxx cinema):
Inside the cinema:
Booth after setup:
Thomas’ session about Blockchain:
Serverless session mentioning OpenWhisk:
The post Pictures from code.talks appeared first on Niklas Heidloff.
Deploying Apps to Kubernetes on the IBM Cloud with Helm|
Tue, Sep 26th 2017 8:46a Niklas Heidloff
Helm is the package manager for Kubernetes. With Helm you can very easily deploy applications, tools and databases like MongoDB, PostgreSQL, WordPress and Apache Spark into your own Kubernetes clusters. Below is a brief description how to use Helm for the IBM Cloud Container service.
Here is a short description of Helm and Helm Charts from the Helm home page:
“Helm helps you manage Kubernetes applications. Helm Charts helps you define, install, and upgrade even the most complex Kubernetes
Deploying MicroProfile based Java Applications to Bluemix|
Fri, Sep 22nd 2017 2:50p Niklas Heidloff
Eclipse MicroProfile is an open source project to optimize Enterprise Java for microservices architectures. MicroProfile based applications can be deployed to Kubernetes. This article describes how to build microservices via the Microservice Builder and how to deploy them to Bluemix.
The Microservice Builder provides functionality to easily create new Java based microservices. Below is a quick walkthrough how to create new microservices, how to run them locally and how to deploy them to Kubernet
Deploying MicroProfile based Apps to IBM Cloud private|
Thu, Sep 21st 2017 2:30p Niklas Heidloff
Eclipse MicroProfile is an open source project to optimize Enterprise Java for microservices architectures. MicroProfile based applications can be deployed to Kubernetes. This article describes how to deploy a sample application to IBM Cloud private.
IBM Cloud private is a Kubernetes based platform to run cloud-native applications on-premises. It also comes with a Docker image registry. For developers there is a community edition available to run everything in one virtual machine.
The example I&
Watson Machine Learning Sample Walkthrough|
Tue, Sep 19th 2017 3:37p Niklas Heidloff
Last month IBM announced the general availability of Watson Machine Learning which can be used by data scientists to create models and it can be used by developers to run predictions from their applications. Below is a simple sample walkthrough.
As sample scenario I’ve chosen the Titanic dataset to predict whether people would have survived based on their age, ticket class, sex and number of siblings and spouses aboard the Titanic. I picked this dataset because it seems to be used a lot in
Some Pictures from Hack.IAA|
Tue, Sep 19th 2017 7:34a Niklas Heidloff
Last week I attended Hack.IAA, a hackathon with a focus on Artifical Intelligence and Car-2-X Communication organized by DigitalLife@Daimler. 60 students had 24 hours to come up with new business models and innovative solutions. IBM provided access to the IBM Cloud and Watson and helped participants with technical questions. I had great discussions with the students and enjoyed the event.
The students used some of the Watson services like Visual Recognition and Conversation, technologies like No
My Favorite Tech Talks for Developers|
Mon, Sep 18th 2017 3:21p Niklas Heidloff
During my workouts I enjoy watching tech talks to learn about new technologies and trends. I’ve created a YouTube playlist with some of my favorite tech talks.
The videos in the playlist are awesome sessions from great speakers like Martin Fowler, Brian Will, Erik Dörnenburg, Kevlin Henney and Jonas Bonér. The sessions cover topics like cloud-native, microservices, functional programming, reactive programming, engineering culture, coding best practises and more.
The post My Favorite Tec
Running Cloud-Native Applications On-Premises|
Mon, Sep 18th 2017 2:30p Niklas Heidloff
Cloud-native applications have a lot of advantages compared to monolithic architectures such as scalability and elasticity. Cloud-native platforms typically also provide services that developers can use without having to worry about infrastructure. These advantages are available in public clouds and now also in some private clouds which is important for companies with high data security and privacy requirements.
Recently IBM announced IBM Cloud private. The wiki describes the key features:
Node-RED Samples for IBM Watson IoT Hackathon|
Mon, Sep 11th 2017 11:49a Niklas Heidloff
Recently I gave an one hour webinar to help developers to prepare for a hackathon related to IBM Watson IoT. I demonstrated Node-RED and coded live some sample flows.
Get the sample flows from GitHub.
Getting started with the Watson IoT Quickstart
Using the IoT Starter
Building simple web user interfaces via the Node-RED Dashboard
Invoking REST APIs and implementing REST APIs
Leveraging Watson services: Conversation, Translation, Tone Analyzer, Text to Speech
Here is a screensho
Securing Kubernetes Applications with Vulnerability Advisor|
Tue, Sep 5th 2017 7:58a Niklas Heidloff
The Bluemix Vulnerability Advisor checks the security status of container images before deployments as well as the status of running containers. For example it can detect weak passwords, whether SSH is installed or whether images have known vulnerabilities.
The Vulnerability Advisor leverages various sources like the CentOS announce archives and Red Hat RHSA announce archives to know about vulnerabilities and it calculates risk based on the IBM X-Force Exchange technology.
While this functional
Tool to manage all Bluemix CLIs|
Fri, Sep 1st 2017 7:33a Niklas Heidloff
As a Bluemix developer you typically need to use several CLIs (command line interfaces). There is a specific CLI for Bluemix with multiple plugins to manage Bluemix applications and services. Additionally you can use third party CLIs like Docker, Kubernetes and Cloud Foundry against Bluemix.
Recently a new tool has been published for macOS ‘IBM Cloud Application Tools 2‘ (beta). I find this tool pretty useful since you can install and update all CLIs with a few clicks. In the past I
Introducing the Conversation Optimizer for IBM Watson|
Tue, Aug 29th 2017 8:18a Niklas Heidloff
In order to develop conversational experiences it’s important to understand how users are actually using bots. Based on this data conversational experiences can continuously be improved.
Watson Conversation comes with an improve component which helps analyzing and improving bots. Dependent on the service plan all conversations from the last 7, 30 or 90 days are stored. Via the Watson Conversation web interface you can get an overview of the interactions between users and bots, for example
Accessing Bluemix Services from Client-side Web Applications|
Mon, Aug 7th 2017 7:34a Niklas Heidloff
Bluemix is IBM’s cloud platform to build and host applications which can leverage more than 100 services, for example databases and cognitive services. The services provide APIs which require credentials. Applications which are hosted on Bluemix as Cloud Foundry apps or Docker containers can access these credentials from environment variables. This article describes how to invoke Bluemix services from client-side web applications.
Recently I described how to deploy Angular and other client
Angular Form Validations with Redux for multiple Routes|
Tue, Aug 1st 2017 8:43a Niklas Heidloff
Many frontend applications require the extensive use of forms to allow users entering information. Angular supports various mechanisms to handle forms, but I’ve struggled to figure out how to handle validations of data on different pages/routes. Below is a pattern I’ve used based on Redux which doesn’t leverage much of the Angular forms functionality but works very nicely for me.
Initially I thought that my requirements would be pretty straight forward and common for single-pag
Introducing the Conversation Inspector for IBM Watson|
Mon, Jul 31st 2017 10:10a Niklas Heidloff
My colleague Ansgar Schmidt and I have developed a new tool for developers to simplify building conversational user experiences with IBM Watson Conversation. The tool displays JSON data of REST API requests that is sent between applications and the Watson Conversation service and it allows developers to modify outgoing JSON messages.
With the tool developers can test their intents, entities and dialogs defined in Watson Conversation without having to write their own test applications or to invok
Building Serverless Web Applications with OpenWhisk|
Mon, Jul 10th 2017 2:42p Niklas Heidloff
Apache OpenWhisk is an open source cloud platform that executes functions in response to events at any scale. For example OpenWhisk can be used to run business logic in response to invocations from web and mobile apps over HTTP. This article describes how to build web applications where users can log in via their Google accounts and OpenWhisk is used to host protected APIs.
OpenWhisk on Bluemix comes with an API Gateway to manage access to APIs that have been implemented as OpenWhisk actions. Fo
Overview of Continuous Delivery Functionality in Bluemix|
Tue, Jul 4th 2017 7:05a Niklas Heidloff
For a Bluemix DevOps workshop I’ve prepared a deck that gives an overview of the Continues Delivery functionality in IBM Bluemix.
In the first part I describe why Continuous Delivery is important, what the differences are between Continuous Delivery, Continuous Integration, Continuous Deployment and DevOps as well as key concepts like automation and delivery pipelines. If you haven’t done much with Continuous Delivery yet, I suggest to watch this great introduction from Martin Fowler
Building Alexa Skills with IBM Watson and OpenWhisk|
Thu, Jun 29th 2017 8:12a Niklas Heidloff
I’ve open sourced a sample that shows how to build Alexa skills via the serverless framework OpenWhisk and IBM Watson Conversation. The sample demonstrates how to define a conversation flow declaratively via Watson Conversation dialogs and it shows how to pass context between different intents.
Here is a sample conversation flow:
User: Alexa, ask my skill what do you know about me
Alexa/Watson: I don’t know anything about you. Where do you live?
Alexa/Watson: Now I know
Great Introduction to Reactive Microservices|
Wed, Jun 28th 2017 1:26p Niklas Heidloff
Today IBM announced a new collaborative development initiative with Lightbend who provide a reactive application development platform. When trying to learn more about that platform, I’ve run into a great presentation from the Lightbend CTO Jonas Bonér where he describes the concepts behind reactive microservices.
There is a shorter version and a longer version of his talk on YouTube as well as a transcript on his blog. Here are some of my key takeaways.
Building microservices is relative
Building Slack Bots with IBM Watson Conversation|
Mon, Jun 26th 2017 8:42a Niklas Heidloff
I’ve open sourced a simple sample that shows how to leverage IBM Watson Conversation in Slack bots via the open source project Botkit. With Botkit and a Watson middleware text messages defined in Conversation dialogs can easily be used in Slack bots. My sample shows additionally how to use Slack buttons in messages and how to invoke business logic at certain stages of the conversation.
Botkit is an open source framework to build bots that can be connected to popular messaging platforms lik
New Slots Filling Functionality in Watson Conversation|
Fri, Jun 23rd 2017 1:44p Niklas Heidloff
In my previous role I worked on improvements for tooling for conversational user experiences. One of these improvements was an easy way to gather user input before actions are invoked. These typical conversation scenarios are often referred to as ‘slot filling’.
In traditional web applications users define input values in HTML forms and then click on submit buttons to invoke business logic. ‘Slot filling’ is basically the counterpart for conversational user experiences. F
Reducing Deployment Risks via Policies for Jenkins Pipelines|
Fri, Jun 16th 2017 10:42a Niklas Heidloff
Earlier this year IBM introduced a new service DevOps Insights (beta) which helps among other things to reduce deployment risks. Policies can be defined to ensure that unit tests, functional tests and other tests pass before new versions of applications are deployed.
As I blogged earlier this functionality can be used for IBM DevOps Delivery Pipelines. Additionally it can also be used for Jenkins projects since data can be sent from Jenkins to other tools like IBM DevOps Insights that are in the
Leveraging Jenkins in DevOps Toolchains on Bluemix|
Wed, Jun 14th 2017 9:31a Niklas Heidloff
As part of the IBM Bluemix Continues Delivery functionality toolchains allow the integration of third party and open source tools. One example is the usage of the automation server Jenkins to build and deploy applications rather than using the delivery pipelines provided by IBM.
In order to test this functionality I’ve run a Docker Jenkins container locally. Obviously you could also deploy Jenkins on Bluemix but I wanted to keep it as simple as possible.
In order to configure Jenkins, I s
Reduce Deployment Risks via Policies in DevOps Pipelines|
Mon, Jun 12th 2017 1:34p Niklas Heidloff
Earlier this year IBM introduced a new service DevOps Insights (beta) which helps among other things to reduce deployment risks. Policies can be defined to ensure that unit tests, functionality tests and other tests pass before new versions of applications are deployed.
The following screenshot shows the DevOps Insights dashboard with a sample application that contains two deployable units, one microservice and one web application. For each deployable unit icons indicate which tests have been ru
Integrated API Management for Cloud Foundry Apps|
Thu, Jun 8th 2017 9:53a Niklas Heidloff
Last week IBM introduced a new feature in IBM Bluemix. Developers can now easily add API management functionality to their Cloud Foundry apps hosted on Bluemix.
The end-to-end API lifecycle solution API Connect has been available in Bluemix for quick some time. With the recent addition it’s much easier to leverage this functionality since everything can be configured from the application dashboards.
I’ve just tried it for a simple sample. API definitions can be imported via Swagger/O
Integrating Tools into Bluemix DevOps Toolchains|
Wed, Jun 7th 2017 7:10a Niklas Heidloff
As part of the Bluemix Continues Delivery functionality toolchains allow the integration of third party and open source tools. Below are two samples how to leverage PagerDuty and Slack to get notifications about state changes in pipelines.
With PagerDuty you can receive text and voice messages on your smartphone and configure which teams members should be notified for certain event types.
Here is an example screenshot of my smartphone. You can take action via phone without having to log in to t
Some Pictures from Pioneers|
Wed, Jun 7th 2017 6:32a Niklas Heidloff
Last week I attended Pioneers in Vienna, Austria, to present IBM Watson and the IBM Cloud and to talk with developers. Below are some pictures.
Pioneers is a conference primarily for startups and investors. IBM provides a program where qualified startups can receive up to $120K in IBM Cloud credits.
The new team in Germany from left to right: Niklas, Steffi, Marion, Ansgar and Ethan.
The conference was held at the Hofburg Vienna.
Some more pictures from out booth.
I also brought my Anki ca
Managing Microservices on Kubernetes with Istio|
Wed, May 31st 2017 5:13p Niklas Heidloff
Last week IBM and Google announced Istio, an open platform to connect, manage, and secure microservices. Istio improves the visibility of the data flowing between the different services and the good news for developers is that you don’t have to change your code.
There is good documentation available, but in a nutshell Istio inserts proxies in pods which are called instead of the custom containers (services) directly. This allows Istio to control and monitor the requests to the services. As
GitLab now available in Bluemix|
Tue, May 30th 2017 2:51p Niklas Heidloff
I’m still catching up on all the new functionality that has been added to IBM Bluemix over the last year. One new capability is to use GitLab for source control and lightweight project management.
Earlier this year the original JazzHub functionality was sunset and new and advanced capabilities have been added to Bluemix Continues Delivery. Developers can now use GitLab and integrate it in Bluemix DevOps toolchains. Alternatively you can also use GitHub (public) as well as GitHub Enterprise
Automated Frontend Testing with Bluemix Delivery Pipelines|
Mon, May 29th 2017 10:37a Niklas Heidloff
In order to do functional end-to-end testing of web applications, Selenium is a great tool to execute automated tests on different browsers. Below is a quick introduction how to run these tests from delivery pipelines in IBM Bluemix.
Bluemix DevOps provides toolchains to build, deploy and manage applications. These toolchains can contain services provided by Bluemix as well as open source and third party tools. An example of a third party tool is Sauce Labs, which allows running Selenium based t
Deploying Node Express Apps to OpenWhisk|
Wed, May 24th 2017 1:35p Niklas Heidloff
I’m catching up with all the great new features that have been added to OpenWhisk over the last months. My colleague Lionel Villard published two articles how to run Node Express web applications in a serverless environment. Very cool.
Rather than repeating everything from Lionel’s articles, let me give you a quick summary how this works.
In the OpenWhisk action you use the openwhisk-expressjs module to send a redirect to the Express server.
const app = require('./server');
Quick Update: Excited to work as Developer Advocate again|
Mon, May 22nd 2017 1:54p Niklas Heidloff
Over the last year I’ve worked on a very interesting internal project. I’ve learned a lot about conversational experiences and it was a lot of fun. Most importantly I enjoyed working with great people in the Emerging Technologies organization.
Recently a new opportunity has come up and I’m happy to share that I will work as developer advocate again! I will be part of an international organization of advocates and will focus on developers in Germany, Austria and Switzerland. Tec
My Advice: Don’t use Angular 2+ without Redux|
Thu, Apr 13th 2017 6:34a Niklas Heidloff
Recently I have used Angular 2+ in one of my projects. There are many things I like about Angular like dependency injections, TypeScript, etc. One thing that gave me a hard time was to understand Angular’s change detection strategy. Below is a quick tip how to use Angular without having to worry (too much) about how to refresh your components.
One of the design goals of Angular 2 was to provide better performance than AngularJS which is why new features were added to reduce changes to the
Invoking OpenWhisk Actions from Angular 2 Apps|
Tue, Apr 11th 2017 2:14p Niklas Heidloff
In my last blog entry I documented how to deploy Angular 2+ apps to Bluemix via the HTTP server nginx. All that server does it to host the static files. Below I describe how to use OpenWhisk actions for server-side business logic that can be invoked from Angular apps.
In order to avoid cross origin security errors proxy servers need to be used. Fortunately both the local web server that is installed via the Angular CLI and nginx can be configured as proxies.
I’m using the same simple app a
Deploying Angular 2 Apps to Bluemix|
Tue, Apr 11th 2017 8:01a Niklas Heidloff
Over the last months I’ve done quite a lot of Angular 2 development (now Angular 4). Below is a description how to create a new Angular app and deploy it as Docker container to Bluemix in just a few minutes.
In order to create a new Angular app you can use the Angular CLI.
npm install -g @angular/cli
ng new angular-app
ng build --prod
There are several ways to deploy Angular apps to Bluemix. For example you can build a simple Node.js web server to host the files. Or y
Running the Sample App BlueChatter on Kubernetes|
Mon, Apr 10th 2017 3:56p Niklas Heidloff
Since last month Bluemix supports Kubernetes (beta) which many people consider the de-facto standard for orchestrations of containers. Some of the older and simpler Bluemix sample applications use docker-compose. Below is a description how to run those examples on Kubernetes.
Essentially the docker-compose file needs to be converted to a Kubernetes yaml file. As example I use the chat application BlueChatter. The sample is a Node.js application that leverages Redis to store session data. The fil
Orchestrating Docker Containers with Kubernetes|
Fri, Apr 7th 2017 1:37p Niklas Heidloff
Last month IBM announced the beta of Kubernetes support in the IBM Bluemix Container Service. Below is a short introduction to Kubernetes and a short description how to get started using Kubernetes on IBM Bluemix.
In a nutshell Kubernetes allows running and managing cloud native apps that consist of multiple containers. To get started you need to know some terminology. For example a ‘Deployment’ contains ‘Pods’ that can contain multiple Docker containers (but typically co
Using IBM Watson Discovery to query Unstructured Data|
Wed, Apr 5th 2017 7:32a Niklas Heidloff
In my previous blog entry I described how to use Watson Knowledge Studio to create models to identify information in unstructured data. These models can be used by the Watson services and offerings Watson Discovery, Watson Explorer and Watson Natural Language Understanding. Below is a quick intro how to use Watson Discovery to query unstructured data.
Watson Discovery is a service to extract value from unstructured data by converting, normalizing and enriching it. In order to use it you first ne
Understanding Natural Language Text via Watson Knowledge Studio|
Tue, Apr 4th 2017 2:10p Niklas Heidloff
One of the newer IBM Watson offerings that I really like is Watson Knowledge Studio. It basically allows identifying information in unstructured data. Below is a quick overview of the Knowledge Studio functionality.
Watson Knowledge Studio is not a Bluemix service but an SaaS offering to create models for custom corpora of data that can actually be deployed and used in other Watson services (more about this in another blog). These models are either machine-learning models which work more generic
Getting started with Tensorflow on IBM Bluemix|
Mon, Apr 3rd 2017 4:11p Niklas Heidloff
In order to learn Deep Learning I’ve taken an Udacity course that I can highly recommend. One reason I took that course was because I also liked the Udacity machine learning courses. Another reason was because I wanted to learn Tensorflow which to me looks like the most popular deep learning library right now.
Below is the YouTube playlist of the course. The assignments can be run locally via Docker.
Another good starting point to learn Tensorflow is the video “Tensorflow and deep l