Working in the BlueMix Garage

screen-shot-2017-03-01-at-2-26-39-pmI have always been a fan of gamification and now I can be manly and say I am working in the garage, the BlueMix Garage!  You can earn points by completing different tasks in the BlueMix Garage Method site.

3000 Members now in the BlueMix LinkedIn Group!

Today, as I processed the pending membership requests on LinkedIn for the IBM Bluemix group, we surpassed 3,000 members!  In less than two years the group continues to grow and membership and activity have grown regularly each week. Keep promoting it and keep posting important material to the group!

While the group has some good discussions and examples of how BlueMix is used, if you prefer video then you should consider checking out the YouTube channel dedicated to IBM BlueMix, which is run by the Developerworks team:

Managing your BlueMix applications in Slack with Cloudbot

bluemix-slack

Slack has become a very popular collaboration tool for developers and designers. Think of LinkedIn groups combined with a Facebook or Twitter feed that is isolated to only the team members participating. It is equivalent to an on going persistent eMeeting chat that never ends, is searchable, and most of all, captures all conversations around a topic in a single place. Some argue Slack is the end of email and other collaboration techniques, specifically around projects.

In this video Yu Cao demonstrates how to setup Cloudbot for slack where you can then chat with the bot to get information about your your BlueMix applications.

“Cloudbot is a ChatOps bot platform built to be deployed on IBM Bluemix that integrates services and tools into a development or operations team’s workflow in a collaborative chat environment.” – link

 

Why IBM adding SWIFT to the cloud is a huge game changer.

IBM + Swift

Long ago we use to dream about writing server software in the language we write the client software in. Then came Java, the end to all arguments, Java everywhere, etc. The only problem was there were a few camps that didn’t totally buy into Java everywhere and in some cases banned the virtual machines existing on devices, like the Apple products. Similar to what happened with Adobe Flash. I do believe this was a huge step in killing Java, in the end, people are going to choose the popular language but having a strong ecosystem on both ends is critical for programming languages. I have to mention .NET because it really has achieved this nirvana for the Microsoft world. The .NET platform is certainly a platform to be reckoned with, it even runs on Linux. The biggest problem for .NET is according to WinBet.org Microsoft’s market share in the United States is only 2.8% for mobile devices – if this was a Presidential candidate they would be bowing out by now.

So then came a technology called Node.js. Once again a proper stab at using the same language in the client applications as you use on the server and in this case it’s JavaScript. The only problem was language enthusiasts still debate whether JavaScript is even a full language. Here is a really nice article for the uninformed about JavaScript. I personally believe Node.js is great; everything I have done in Node has been dead simple and easy. But I also noticed a problem, a shift in the market per say, in mobile applications. Companies began moving away from hybrid applications and began investing in native mobile applications. Specifically almost every vendor I work with asks about the Apple platform support for business applications (not really customer facing). I am talking about check out terminals, store associate applications, inventory apps, pick and pack, check-in/check-out devices,etc. I never hear the Android discussion come up for these kinds of devices.

So now we have a dilemma, we are back to different client and server languages. Interestingly enough, the IBM BlueMix services are REST base so you don’t really care what the server platform is, however, if you are developing the server and the client facing application you do care what languages are used. So I started seeing myself creating Node applications in BlueMix and Swift based applications for the devices – two very different languages and skill sets needed; and I am still not a good Swift programmer even after a couple of apps.

Now comes what I consider a huge announcement:

Apple just gave IBM a huge leg up in the cloud wars with Amazon

IBM’s partnership with Apple bears even more fruit today as theIBM Cloud becomes the first cloud computing platform to support the smash hit Apple Swift programming language.

 

We can now take an awesome full featured language like Swift and use it in both server and client applications. And most will agree Swift is an amazing and fun language to program in. Think of Swift as the language of the best of the rest. Swift brought in the best features from many languages all rolled up into one.

The question is how long will this last? Will it grow the Apple marketshare? Could this be the nirvana we are looking for? I am very interested in hearing others feedback on this.

So now all of you Apple iOS developers should go over to the IBM Swift page and check out what Swift you can do on the BlueMix servers!

Using Watson Translation service in an Eclipse SWT application

Image (3) flow-680x156.png for post 5379

In this video I show how I used Watson Translation services in IBM Bluemix to translate an entire catalog of products and categories. I used a simple Node-Red flow to achieve this with little programming on the server-side.

Allowing CORS from a Node-Red Bluemix application

I wrote a rating application some time ago in Node-Red and have since needed another similar application but with slightly different behavior. So I went ahead and created a new Node-Red application on Bluemix and decided to start from scratch since it was so simple to set up. This application has three requests – Get Rating, Post Rating, and Post Comment. Here is the current flow:

Image (1) rate-flow-680x422.png for post 5391

The problem I had was the requests actually respond with JSON and I could not figure out how to enable CORS!

The first thing I did was in the Image (2) cors.png for post 5391 node I added the following to the response:

Image (3) cors2.png for post 5391

And that did not work. Then, I stumbled upon this in my Cloudant dashboard in the Account Section under CORS:

 

Image (4) cloudant_admin-680x212.png for post 5391

Once I checked all domains it worked fine! I am sure I can restrict the domains appropriately but I guess I don’t understand why the CORS options are under the Cloudant section and not the base application somewhere. I would think this is a specific thing to hitting the Cloudant service directly, not through a Node-Red Node. I am very interested in hearing others opinions on this.

Update:

After using the Cloudant UI to update my profile I went back and checked the bluemix-settings.js saw it indeed added the httpNodeCors line to the profile:

httpNodeCors: { origin: “*”, methods: [‘GET’,’PUT’,’POST’,’DELETE’] },

So this is clearly the issue as I saw a similar question on developerworks but saw no example of the syntax.

Searching a Cloudant DB search index with Node-Red

After much searching the internet and seeing multiple posts about this subject I can only think that many others are greatly confused with the use of the Cloudant In node in Node-Red. I think my problem was terminology and not being familiar enough with the Cloudant nomenclature more than anything and the user interface in Node needs a little more work.

I basically want to return all documents where name=XXXXX. My document is pretty simple, here is an example:

review-doc

So lets start by looking at my index definition:

cloudant_index

Now you will notice I have three references to “namesearch”:

  1. The design document name is “_design/namesearch”
  2. The Index name is “nameSearch”
  3. The index in the search index function is also named “nameSearch”

My flow takes in an HTTP request, formats it with the Selector node, and passes the query on to the Cloudant In node:

flow

The selector node is pretty basic, after following many different instructions I finally resolved the problems with this function:

selector

This results in a payload that looks like this:

nameSearch:Create a category layout

The Cloudant In node now has the following configuration (which seemed to be the primary problem, I will explain later:

cloudantin

The problem I had was I could not future out the search index fields. Mainly because this is the form when no fields are filled in:

designdoc

Notice it specifically says “design document“. Now, anyone that is not familiar with this, based on my configuration, would most likely fill it out like this:

node-red cloudant in

But after scouring many documents on the internet a suggestion was to just remove the “_design/” from the first field. Which resulted in the correct version I have above:

cloudantin

Needless to say this actually took me hours to figure out because I thought it was something with the query being passed in!

If you are not familiar with Node-Red then click this link.