What is a Learning Circle?

“An education isn’t how much you have committed to memory, or even how much you know. It’s being able to differentiate between what you know and what you don’t.” - Anatole France

Recently I was alerted to the IBM Learning Circles.  I should say that I was re-alerted, because I had known about them, but had not gone out to look at them in quite some time.  I was pleasantly surprised at what I found.

In the old days (back when the calendar year began with the numbers “19″), I used to spend a fair amount of time travelling around and delivering training classes to our customers.  The classes might focus on how to effectively use some tools, or might just be on specific software development concepts.  It was fun interacting with customers and the end users of our technology, but it didn’t really scale so well.  It also took the people being trained out of circulation for the 2-5 days that the classes were being taught.

Fast forward to today.  The customers that I deal with cannot afford to take there developers out of circulation for days at a time.  Developers don’t want to learn things in a classroom, they want “just-in-time” training, and often research answers to their problems with web searches.  The pace of life for developers has increased, and the traditional training techniques just don’t cut it anymore.  This is what the IBM Learning Circles are trying to address.

So what is a learning circle?  It is a different way to approach training and enablement.  It is a collection of reviewed content, organized so end users can consume training content in smaller pieces.  More importantly, they can control when they train, and how much they train.  They can look for topics that address their specific problems.  They have the ability to create Personal Learning Roadmaps that give them a step-by-step guide to relevant training materials.  So now the training is not only “as you need it”, it’s also “as you want it”, “when you want it”, and tailored to your specific needs.  You even become a member of a community of people from around the world who are doing the same thing (learning about a particular topic) that you are doing.  It’s pretty cool.

Right now there are a bunch of learning circles out there.  There are circles for Agile Skills, Engineering Lifecycle Management (RELM), Test Automation and Service Virtualization (think Greenhat), and UrbanCode Deploy and Release (just to name a few).  So if you are considering deploying these solutions, it would be a good idea to check into these learning circles.  What do you have to lose?


Bluemix gets your deployments rolling, rolling, rolling…..

I recently spent some time with some of our most knowledgeable Bluemix people.  We were helping one of our customers explore the possibilities of Bluemix for their organization.  Dan Berg and Scott Rich are two of the sharper guys I know, and they were helping us.  Dan Berg came up with a great technique that enables “Blue/Green” (or rolling) deployments on Bluemix.

You can read his developerWorks article, Automate Rolling Deployments with IDS for Bluemix , and learn how to do this.  The code samples and public Bluemix project that he provides allow anyone to be able to expose this kind of capability for their Bluemix users.  I was going to post my version of the directions for doing rolling deployments in this blog article, but Dan’s is very clear and easy to follow.  He even has links to the Bluemix project with sample code, and links to a post on Blue/Green deployment.

The “meat” of this is the deploy.sh script, but there are changes to the build script (in Ant) as well.  The build script changes that he discusses will copy your updated deploy.sh script to the archiving directory.  This is important to remember (see below).  Dan discusses the deploy shell script, and you should pay particular attention to where you would add the binding of services to your new application.  The nice thing is that you can test this out in a QA pipeline deploy, before you even attempt to do something like this for real.

Just some words of caution as you go through this.  The first is that you need to remember that your build and deployment scripts are under Git control.  This is great, because it allows you to see changes in your scripts, and gives you the ability to rollback to a previous version if necessary.  It also means that as you change your scripts, you will need to COMMIT and PUSH your script changes.  I have made the mistake of editing my scripts in the web browser editor, and then wondering why the changes I make don’t seem to do anything.  It’s because my script changes have not been pushed into the cloud yet.  Another issue is that even after you have pushed your changes into the Git repository, you still need to build the application to get them to execute.  Why?  Because the copy of the deploy.sh script to the archive directory occurs during the build, and the auto-deploy runs from the archive directory.  This isn’t an issue if you have auto-deploy turned on, since the Git commit will automatically kick off a build, which then kicks off an automatic deployment.

The scripts work great.  Ina session with one of our customers last week, the students set up a test that exercised the application being deployed.  It was a simple application, and we just changed some of the titles on a web page.  We then implemented a rolling deployment, and did a push of our changes in Bluemix.  We could then watch as the changes were built, and then auto-deployed in Bluemix.  Their tests noted no interruption of service when we deployed our changes.  It was pretty cool.



Cooking with Bluemix

One topic that is causing quite a bit of talk and controversy is BlueMix.  I am surprised by the number of people who are well aware of BlueMix, yet have no idea about the power and strategic implications of BlueMix for the long term.  For many people, it was either second hand knowledge that they had heard from somebody, or just initial reactions to the slideware that they had seen.  Many people have only seen the (now infamous) Twilio BlueMix demo.

That demo is really good at showing one thing – how can I get changes and new functionality developed and deployed into the market quickly.  It shows the raw speed with which you can use DevOps services, and composable applications, to bring functionality quickly to your customers or stakeholders.  Unfortunately, it is a short demo, and so some of the more strategic implications of the platform have not been properly presented or understood.  I have my own BlueMix demo, which I show YOU how to set up and run for yourself.  My demo is very “geek focused”, and tends to focus on the development tools and the usage by developers.  So my demo is pretty limited too.  What is really needed is some plain talk on what strategic advantages the BlueMix platform can give to an organization.

Here’s my quick list of strategic capabilities that BlueMix can give an organization:

  • The ability to rapidly build custom applications that use common services and interfaces.  The components available to a user of BlueMix for constructing their application range from a variety of development tools, from an IDE, to testing tools, to automated deployment tools.  This allows development teams to use the tools that fit the project, rather than a “one size fits none” approach to having a common development infrastructure.
  • It also allows a team to use business services, to provide an application services like location services, mobile capabilities, database storage services, “big data” services, and a host of other things.  A close look at the available services shows a mix of open source services, IBM services, and other vendor services.  These are exposed via stable API’s that an application can interact with.
    • This means that rather than selling products, capability providers will be selling metered capabilities.  You make your service available on the BlueMix platform, and the application development teams use what they want, and pay for what they use.  This is similar to water and electricity usage in a house.  You may indirectly pay for the supporting infrastructure, but you are billed based on the amount of resource that you use.  Using this analogy, our current perpetual licensing would be like charging a home owner for their first five years of electricity usage when they bought the house.
    • This will (hopefully) create an API economy, where service providers expose their API’s, and the market decides which are most useful/applicable.  It might be a good time to buy the www.apitracker.com domain name, because this space could quickly explode.
  • The ability to quickly build and deploy, in an automated manner, makes huge economic sense for some organizations.  Why?  Many development shops struggle with maintaining development, testing, and production environments.  They build out QA environments that do not match their production environments, due to the excessive hardware cost and configuration complexity.  Why buy all of that hardware when it sits idle 60, 70 or even 80% of the time?  With BlueMix, applications can be deployed to development and test environments in the cloud, scaled to appropriate levels (the cloud is elastic, you can add resources), used for testing and evaluation, and then DESTROYED.  When it is needed again, it is merely a simple automatic reprovision and redeploy in the BlueMix  environment.  You only pay for what you actually use (notice a trend here?), and the not for idle hardware.
  • You also have the ability to easily scale your deployments.  Is your app popular?  Is that popularity causing you headaches because now the server is overloaded and performance stinks?  Just twist a dial, and deploy additional server instances.  Did you over-allocate servers, or memory, or CPU resources?  Then twist a dial and scale your application down.  You only pay for the resources that you use.
  • Many organizations currently use virtualized environments to do this, but this environment is unwieldly and requires constant manual intervention.  BlueMix is based on CloudFoundry and OpenStack, which means that deployment patterns and automations are portable.  This gives customers flexibility, and avoids vendor lock in.
  • The underlying technologies are based on open standards (like OSLC, HEAT, etc.), so the entire stack is flexible, allowing you to use different technologies without having to do a large “rip and replace” effort.

BlueMix is a young product, and it’s capabilities are being expanded as we speak.  Having BlueMix as a PLATFORM (hence the whole PaaS moniker, or Platform as a Service), means that as new technologies and new business needs arise, services can be developed and then provided to the organizations running on BlueMix.  This “API Economy”, or store of services, can be compared to a kitchen.  BlueMix is the basic plumbing, electricity, and structure.  DevOps services (which provides development tooling and deployment automation) can be seen as a stove.  The basic environment in the buildpacks can be thought of as the sink.  There is the potential to buy a new stove, or change the sink.  You might choose to  use something other than DevOps services, or a different buildpack, but it will have some impact on your meal.  You look into the pantry, and choose the ingredients (services) that you will use to prepare your meal.  You may follow a recipe (the project templates), or you might just whip something up yourself (who needs a recipe for a grilled cheese sandwich?).  You then prepare your ingredients (providing the custom code to bring elements together) using utensils (the Orion IDE), and your stove and sink.  Once the whole process is complete, you have your meal (a finished application).  The only difference is that BlueMix gives you a “magic plate multiplier”, which allows you to cook for one, yet feed one hundred by scaling the size and number of deployment instances.

(Note: IBM seems obsessed with food lately, check out the Watson Food Truck.)

The analogy may not be the greatest, but it does help illustrate what BlueMix does, and it does all of this on the cloud.  Everything is done on the cloud.  No clients.  No plugins.  No extensions.  Just a browser and an active account.

Jazz Moves – Learning the basic steps

Recently I have been getting a lot of email requests from people asking if they can do something “non-standard” with Jazz.  I am going to answer your questions, but I am also gong to tell you WHY you get the answers that you do from our experts.  Here is a sanitized example of a recent email:

Hi Daniel
My name is John Doe. I saw that you wrote an article on the CLM deployment wiki 
on Jazz.net. I have a question that you may be able to help with.
A customer is deploying CLM 5.0 with Oracle and they have a standard practice 
of creating a single "temp" tablespace for a set of applications like our CLM 
suite. Will everything in the CLM suite function correctly if all four CLM apps 
use the same "temp" tablespace or is it necessary for each app to have its own 
temp tablespace as it is described in our documentation?
John Doe

Just because you might be in a rush, I will give you the answer right away.  The answer is,

"Just install it the way it is supposed to be installed.
You CANNOT have all of the CLM apps use the same tablespace."

Now let me tell you WHY you get this answer (and some other seemingly unsatisfactory answers) from our support teams and subject matter experts.

Basic Steps and Stock Answers

I can fire off this answer almost immediately because I know that we have never tested CLM in a configuration where all of the CLM applications share the same “temp” tablespace.  We have enough of a challenge in fully testing all of the various topology permutations, without looking for edge cases that customers will rarely attempt to deploy.  This leads us to the first basic law of software support

Software Support Rule 1: If we did not explicitly test the scenario in question, then we don’t support it.

We’re not trying to be mean, and we’re not trying to make your life difficult.  We just want to save you the time/frustration/energy of trying an approach, or planning on some approach, that just will not work.  So often when confronted with questions like this one, we will rely on Software Support Rule 1, and tell you that you cannot do these types of things.

Now let’s dig down a level.  I honestly don’t know if this would work from a technical perspective, but I know enough about Jazz architecture to make some technical assumptions, and do a little bit of thought on why this still may not be a good idea (even if it might be technically possible).

If I assume that the customer in question has installed the minimum of CLM products (say JTS, CM, QM, and RM), then I have four different applications all sharing the same “temp” tablespace.  Having all of these applications making transactions into this tablespace will cause some requests to this tablespace to queue up, when load becomes heavier.  This will impact the end user performance, as requests are not answered in a timely manner.  Which leads us to the second basic law of software support:

Software Support Rule 2: If it could adversely impact performance, then it is a bad idea

There are some other things that come into play here.  One of the things that we constantly worry about when architecting Jazz deployments is the ability to easily move and administer Jazz resources.  What would happen to this shared temp table during an upgrade?  The upgrade process will often manipulate data in the repositories, if the structure of the data schema has changed.  Having a shared temp tablespace could impact this.

What if I added a second CM (or RM or QM) instance to my deployment?  Would two different instances of the same application still be able to share the “temp” tablespace?  In this case, I can envision where a CM instance might ignore data in the temp tablespace that was in reference to another CLM application, but I doubt that we would have made provisions to validate the identity of  a particular CM instance associated with any of the temp data.

Software Support Rule 3: If it adversely impacts future scalability, then it is a bad idea

So given all of this information, it is much too risky to attempt something like this.  There are potential issues at a variety of different levels.  All of this thinking goes into the simply stated reply of,

Just install it the way it is supposed to be installed.  
You CANNOT have all of the CLM apps use the same tablespace.

Now What Do I Do?

So that gives us our answer, but it doesn’t answer the question of how we can move forward with this particular installation.  Here are some things to keep in mind as you determine which course to take:

  • Perhaps the DBA’s don’t understand the Jazz architecture.  They might think that this would be a more efficient use of resources, and easier to maintain.  In the case of the Jazz CLM deployment, it will not be.
  • “Standards” get broken all of the time.  Often you merely need to provide a good technical justification for why you cannot adhere to the standard.  Keep in mind the end goal here – providing a more efficient, transparent, and cohesive software development environment.  The goal is not to make the lives of DBA’s and Systems Administrators easier.  We DO want to make their jobs easier, but it is not our primary goal.

Remember that any architecture is a series of tradeoffs.  While we want to conform to existing norms and standards as much as possible, it is not always feasible.  The key here is to make sure that any Jazz CLM solution deployment has a stable and supported architecture, which balances the needs of the software development teams that use the solution.

Simple Jazz Widget Tricks – Adding a Table

This is a simple and quick post on how you can add a table to a widget on your Jazz dashboard.  It is not rocket science (in fact it is just simple HTML), but it does allow you to show data that might not normally be available in your Jazz dashboard.  If you want to learn more, and do more, with HTML widgets in your dashboards, then I strongly suggest that you visit any one of the various different websites that provide HTML for Beginners types of courses (like w3 schools, HTML.net, HTML dog, Code Academy, or any one of hundreds of other sites).

How do we do this?  First go out and create an HTML widget.  Now open the HTML widget, and type in a nice heading for your table, something like “My Cool Data in a Table”.  Now click on the icon in the upper left of the widget, this will toggle your display from visual to HTML, and you will now see you widget contents in raw HTML format.  They will look something like this:
HTMLWidgetBeforeTable Add the code below to your widget, and get rid of the <div><br><div> elements:

<table style="text-align: left; width: 200px;" border="1" 
cellpadding="1" cellspacing="1">
<td style="vertical-align: top;">1 </td>
<td style="vertical-align: top;">2 </td>
<td style="vertical-align: top;">3 </td>
<td style="vertical-align: top;">4 </td>
<td style="vertical-align: top;">5 </td>
<td style="vertical-align: top;">6 </td>
<td style="vertical-align: top;">7 </td>
<td style="vertical-align: top;">8 </td>
<td style="vertical-align: top;">9 </td>
<td style="vertical-align: top;">10 </td>
<td style="vertical-align: top;">11 </td>
<td style="vertical-align: top;">12 </td>


Now click on that HTML icon again and you will be toggled back to a visual mode.  You will now see your nice pretty table within your widget!  


You can now go in and enter data and change the data in each of the individual cells.

What’s Next?

Here are some helpful tips when working with tables in Jazz HTML widgets:

  • This is not some Jazz specific capability, it is just simple HTML.  If you want to learn more and do more, learn HTML using some of the resources that I linked to at the top of this post.
  • To add another row of data, just add a block of HTML at the end of your table, between the last </tr> and the </tbody>.

<td style=”vertical-align: top;”>7 </td>
<td style=”vertical-align: top;”>8 </td>
<td style=”vertical-align: top;”>9 </td>

  • To change the width of your table (the columns will automatically resize based on the contents), just edit the WIDTH parameter in your <table> tag. I used 200px in this example (for 200 pixels). Play around with different table widths, but keep in mind that your audience will use different browsers, and may have different widths for their browsers.
  • Each block of data between <td> and </td> represents a single CELL in your table.  Each block of data between <tr> and </tr> represents a single ROW in your table.  Now you can see how the data is organized in HTML format.
  • It is easiest for me to just put in a blank table using HTML, and then go back to the visual editor to fill in the data in the table.  Do what is easiest for you, but keep in mind that you can edit the contents of the widget in either mode (visual or HTML).

BlueMix Demo for Innovate

One of the things that I will be focused on this year at Innovate is helping show everyone our new cloud capabilities with BlueMix.  BlueMix allows you to develop composable applications (applications that are based on a series of cloud services and capabilities) using a development environment in the cloud, with automated deployment to cloud.  It takes advantage of our DevOps Services (which are based on the Jazz technology).  I will be working and coordinating the BlueMix pedestal for then IBM Labs.  If you come down and see us, we can give you a quick demo of  BlueMix with DevOps Services.  Some of you might like to run this demo for yourself, so I am supplying the basic demo script here.  Now you can show people exactly what you saw at Innovate.

BlueMix Demo Script

This is being done as a “self-paced” demo script.  My name is Dan Toczala, and you can contact me through my blog, or via email (IBM – dtoczala@us.ibm.com, Personal – dtoczala@gmail.com)

Introduction and Prerequisites

You want to run through a demo of BlueMix capabilities.  This is where to begin.  You’ll need an IBM ID, so you can register for both JazzHub and for BlueMix.  We will assume that you already have an IBM ID, and that you have a registered account for both JazzHub and for BlueMix.

The application also requires that you have API keys for both Twitter and for Klout.  If you do not have accounts for either of these web services, then you will want to get accounts.  They’re free.

  • To get the API key for Twitter, you should go to the Twitter Application Management page, and create a new application.  Twitter will then assign you an API key and API secret for your application.  You will need those for this demo.
  • To get the API key for Klout, you will need to register your new app to get an API key.  Just give it the information needed, including email and password.  You will use “https://ace.ng.bluemix.net/&#8221; as the company website for the application that you are registering, as well as for the callback URL.  Once you register, you will receive a Klout API key, which you will need for this demo.  Note: This might take some time.

First Steps – Create Your Project in JazzHub

The first step is to create your project in JazzHub.  So first log in to JazzHub and get to your initial screen.  If you already have JazzHub projects, you will see them listed here.

  • On the top menu bar, you will see a menu option for “Explore”.  Click on “Explore”.
  • In the search bar, type in “Jstart”, and search.
  • You will see a number of projects pop up.  Select the “jstart | Twitter Influence Analyzer (Node)” project.
    • Note: You can choose something else if you want to show off/explore some other aspect or platform of BlueMix.
  • You will now see that main page for the “jstart | Twitter Influence Analyzer (Node)” project.
    • You will see the files in the project, and some text below that from the “README.md” file in the project.  If you read the directions in this file for the IBM JazzHub method, you will find that it matches much of what we explain here.
  • Click on the “Edit Code” button.  DON’T PANIC – you’re not going to start editing code yet.  You should see something like the picture below.  Now you will create your own demo project by clicking on the “Fork” button on the secondary menu bar.


  • At this point you will be asked for a name for your new project.  Give it a good name like, “Twitter Analyzer Demo App”.  Make sure that the checkbox for “Make it private” is NOT checked.  You will want to be able to show other people that they  can access your application from ANYWHERE.  Note: This operation may take a minute or two.
    • You are now creating a project with a fork of the code from the original project.  This project will be integrated with BlueMix, so you will be able to edit your code “in the cloud” from your browser, and then deploy these changes to your application instance running out on the cloud.
  • When it has completed, you will notice that your browser is now showing your new project.  You are now looking at your very own Twitter Analyzer application!  Now we need to make some minor changes, and we’ll get this working in no time.
  • Our first code change is to the “config.json.txt” file.  First we need to rename this file to “config.json”.
    • To do this, find the “config.json.txt” file in the file list in the left hand side of the browser.  Click on the file to highlight it.  Right click on the file, and in the resulting dialog box, choose “Rename”.  Now you can rename the file to “config.json”.


  • Now we need to do some configuration for the APPLICATION (not for the BlueMix infrastructure).  Our application needs the API keys for both Twitter and Klout.  You got those keys during the pre-requisite section above.  You need to enter them into the code here.  This is a normal editor, so just click in the file and replace the text in those fields with your key values.  I show you what it looks like below, but don’t use the keys shown here because they won’t work for you.  You need your own keys!
    • If you wait 5-10 seconds, you’ll notice that the file will “save itself”, and save your changes automatically.  If you are impatient, then you can move to the “File” menu item, and select “Save” in the menu dropdown.  Take a few minutes and explore the different editing options available to you.


  • In the file list on the left hand side, you should see a file at the top level called “manifest.yml”.  You will need to edit it.
    • We want to make out app look like a real application.  So we will change the following two lines of code in the manifest from this:
url: TwitterInfluenceAnalyzerNode${random-word}.${target-base} #deprecated, kept for temporary compatibility
host: TwitterInfluenceAnalyzerNode-${random-word} #Hostname for app routing. Unique to domain
to this (use your own username here instead of mine):
url: TwitterInfluenceAnalyzerNode-Tox.${target-base} #deprecated, kept for temporary compatibility
host: TwitterInfluenceAnalyzerNode-Tox #Hostname for app routing. Unique to domain
    • We also need to make a change for the Mongo DB services plan.  We change this line from this:
plan: '100'
to this (getting rid of the single quotes):
plan: 100
  • Now you are ready to go, so let’s deploy this thing and test it out.  You will now click on the grey “DEPLOY” button in the menu bar.  You might need to enter your login credentials for BlueMix (remember those pre-requisites?) into the dialog box.  Once you do, you will see a banner telling you that BlueMix is now deploying your application.  Note: This operation may take a minute or two.
    • Note that you may get an error about, “Unable to find the plan for mongodb service”.  I got that too.  Look at the forum to see a similar issue, and then get rid of the single quotes around the number 100 in the manifest.yml file.  Now try deploying again.  You can get a lot of answers to your BlueMix questions in this forum, so you might want to bookmark this.
  • Now click on the main project name in the left hand file list.  It is the entry at the top, and it matches the name of your JazzHub project.  Scroll down in the information on your project, and you will see a section with Manual Deployment Information.  The little green circle here means that your application has been successfully deployed by BlueMix.
    • Click on the links here.  You can jump to your deployed application from here, or even check out the log files on your deployed instance.


  • So to check out your new Twitter Analyzer application, just type in a twitter handle (username) into the search bar of the application, and click the Analyze! button.  You should see the Klout score for that particular user come up.
    • Use your own Twitter ID to see your influence score from Klout, and then compare it to people like Shaquille O’Neil (Shaq), Shakira, or even me (dtoczala).  As you check these people out, notice how your collected inquiries are shown on the home page of the application.
  • You should also go and take a look at your BlueMix dashboard.  You should see that your application is running, and also see a link in the application box to your application.

So now you have everything set up for your demo.  You can include this setup as part of your demo if you want, just be sure to give your application a slightly different name, and have it deploy to a sightly different location (remember those edits to the manifest.yml file?) so you don’t run into issues.

Demo Time

Now let’s look at how you can demonstrate cloud based development, with cloud based deployment, and cloud based DevOps Services capabilities.  We want to show a basic scenario of events that follows this basic flow of events:

  1. Looking at your deployed application
  2. Noting the need to change something
  3. Making the change to the code
  4. Deploying the changed application
  5. Looking for feedback

Our “demo” is going to look at a simple web application, called the Twitter Analyzer, which uses some services (like Mongo DB, Twitter, and Klout) and a Node,js environment, to deliver some simple social influence scoring for you and your closest friends.

Getting Set Up

Start out by opening up two browser tabs, one should be pointing to your new project on JazzHub, and the second should be opened to your BlueMix Dashboard.  Later we will do things from both of these pages, so leave these in different tabs.  You might even want to launch some additional tabs for some of the other work.

Looking at your deployed application

So let’s first look at the BlueMix dashboard.  On the dashboard you can see a section with your applications, and another section with your services.  Look at your new BlueMix application.
You can see in the lower left that the indicator for application health is green, meaning that your application is currently deployed and running.  In the middle of the box you see a link, which will take you to your running application (more on that in a minute).  In the upper right, there is a control icon, which will allow you to start, stop, or delete your BlueMix application.

If you just click on the box itself, you get taken to a page that displays the current state of your application.  From this screen, you are able to add services, monitor or change your runtime environment, and view files and logs on the system.  All of this is interactive, and allows you to control the amount of resources that you utilize, and gives you the ability to easily scale your deployment to fit your needs.  Spend some time poking around to see what is available.

Now lets go back to that original dashboard.  Just click on the “DASHBOARD” option in the top menu bar.  Now let’s click on the link to the actual running application.  When you do this, you will see a simple application pop up in a new browser tab.  This is the Twitter Analyzer Application.  Now just for fun, type in a twitter handle (username) into the search bar of the application, and click the “Analyze!” button.  You should see the Klout score for that particular user come up. Use your own Twitter ID to see your influence score from Klout, and then compare it to people like Shaquille O’Neil (Shaq), Shakira, or even me (dtoczala).  As you check these people out, notice how your collected inquiries are shown on the home page of the application.

Noting the need to change something

At this point we are somewhat familiar with the look of BlueMix, and with our sample application.  We do have a problem though.  Our sample application is a bit boring.  We want to give it a little life.  Rather than “Analyze!” for our button, we want our button to say, “Show Me The Score!”.  Since this is a social application, we might even want to fool around a bit, and change the help button in the upper menu bar, to read “I am confused”.

So now we have identified two changes that need to be made to our BlueMix application.  How do we communicate this to the development team?  To do so, go into the JazzHub tab in your browser.  If you are not already in the sample project, select it and go into it.  You should see an overview of your project.  Now click on the grey “Track & Plan” button in the upper right hand corner of your browser, which will bring you to the tracking and planning tools for your project.  If you click on the arrow next to the grey “Track & Plan” button, you can decide to activate the new Track and Plan capabilities.  Note: This demo script may not be “perfect”, as the look and feel of some of these capabilities can change over time, and will change based on the use of some of these features.

If You Are Using the Track and Plan Capability

You can see the framework.  If you don’t see any iterations, then go ahead and create some sprints by hitting the green “Create Iterations…” button.

  • Once you are done, go to the text box and type in the headline for your new work item.  Hit return.  You’ve just created a work item!  Now click on the link for your new work item.
  • Make the summary quick and understadable, “Change Analyze button” for example
  • Make sure that the Filed Against field is set to your project
  • Change Owned By to your own user id
  • Make the Priority Medium
  • Add a description of what you want done.  For example, I might put “This is so sleepy.  We need to change the text on the analyze button to be something other than analyze.  Could we make this button say something like “Show Me The Score!”?
  • Once you are done filling in your information, click the “Save” button in the upper right.  This saves the task into the work queue for your application.
  • Now use these same steps to create a second task, this one focused on changing the name of the Help button on the top menu.
    • Make sure that you click the “Save” button once you are done creating this second task.

Alternate directions if not using Track & Plan capability

Now we want to create a couple of work items, or tasks, that we will assign to ourselves as developers.

  • Click on a link to “Create a work item
    • If this isn’t available, then click on the “Work Items” option in the top menu bar, and then select “Create work item -> Task
  • Fill in the information for your work item
    • Make the summary quick and understadable, “Change Analyze button” for example
    • Make sure that the Filed Against field is set to your project
    • Change Owned By to your own user id
    • Make the Priority Medium
    • Add a description of what you want done.  For example, I might put “This is so sleepy.  We need to change the text on the analyze button to be something other than analyze.  Could we make this button say something like “Show Me The Score!”?
  • Once you are done filling in your information, click the “Save” button in the upper right.  This saves the task into the work queue for your application.
  • Now use these same steps to create a second task, this one focused on changing the name of the Help button on the top menu.
    • Make sure that you click the “Save” button once you are done creating this second task.

Making the change to the code

So now at this point you cease being a stakeholder, and now you become a developer.  How do I find out what work is assigned to me?  Once I find out what is assigned, how do I then go and do my work?  We will walk through a quick scenario where you find the work on your queue, pick something to do, and then go and do it.

  • Stay in that window where you just created those work items.  You can log out and then log back in if you want (to be more realistic, and to prove that we’re not cheating here), but you can do this more quickly right from where you are.  In the menu bar at the top of the display, click on “Work Items”, and select “Shared Queries” in the drop down menu.  (note: if you are using the Track & Plan beta, just click on “My Work” in the left hand nav bar.)
    • In the next step we are going to go and look at the work that we have in our queue.  We’ll also fool around a bit and show some of the collaboration that you can leverage to make your teams work together more smoothly.  If you are interested in the query capability of the environment, go and click on “Create Query” (it’s on the far right), and create a query for yourself right now.  It’s pretty easy to do.
  • You will see a set of pre-defined queries listed.  Click on the query “Open assigned to me“, to see a list of the current tasks assigned to you.  You will see the query return the two work items that you have just created.  Hover over the links in the query (but don’t click yet!).  See how a summary of the work item is shown in a quick popup?  This is great for when you want to dig in just a little bit, without navigating to the work item to see everything in the work item.
    • In a BlueMix world you will see things in context.  What does this mean?  It means that although you may have other projects out in the BlueMix universe, you will only see the work items assigned to you for the project that you are currently looking at.
    • if you are using the Track & Plan capability, you can just use the My Work link in the left hand nav bar.  This makes things much simpler, but you do lose the rich hover functionality
    • Take note of the two work items that you created.  Write down the ID’s of those work items.
      • Help menu item work item number ->
      • Analyze button work item number ->
  • Click on the link for the Analyze button work item.  You should see the work item displayed.  Now we are going to go and update the work item, and explore some of the features in the development environment, before going off and working on this.
    • Change the state of the work item (in the upper right) from “New” to “Start Working“, indicating that you will begin working on this.
    • In the discussion field, enter in some text explaining that you will fix this, and you will do an awesome job with it.  Fool around with some of the formatting.  In the menu bar at the top of the field, click on the “Insert User Link” icon.  Then search for your name, and click “Add and Close“.  You’ll notice that your name is now a link in the discussion area of this work item.  If you have a friend who is also registered, put their name in the work item as well.
    • Under the “Summary” field you will see some links for the tabs associated with this work item.  Click on the “Links” tab.  You might notice that you show up as a Subscriber for the work item.  That means that you will get notified whenever this work item changes.  Under links, if you click on the arrow next to the Related button, you can see the various types of relationships that you can create between this work item and other work items, code changes, and even external content.  Now you can click the “Save” butoon (upper right), and save your changes to the work item.  You’ll see that the current state has now changed to “In Progress”.
    • At this point, feel free to go and explore the other tabs, and the information on those tabs.
  • Now we want to go and work with some code.  If you look in the upper right of your browser, you will see an “Edit Code” button.  Press that button to begin looking at your code.
    • You might want to open the code in a different browser tab.  It’s up to you.
  • Let’s start by finding where in the code that Analyze button is.  Well navigate to the top page of our website.  To do so, click the arrow on the “www” folder, and then click on the index.html file.  You should see the contents of the file appear in the browser window.
  • We’ll start by looking in this file.  In the grey menu bar, click on “Edit“, and then in the drop down menu, select “Find…“.  Fill in the word “Analyze” to find the next occurence of the word in the file.  We see it in the title of the webpage, but that isn’t what we want to change.  Clicking on Next in that search dialog just keeps highlighting the same thing.  So the code for our button must be in another file….
  • So let’s find out where.  In the grey menu bar, click on “Edit“, and then in the drop down menu, select “Search files..“.  Fill in the word “Analyze”, and watch as a list of all of the files with “Analyze” in them appear.  We want the “all.html” file, because we now remember that this is the file with the button code.  Click on the link for “all.html“.
  • Now look at the top of the file, and make the code change that was suggested in the work item.  Change the “Analyze!” text displayed in the button, to “ShowMe The Score!”.  The diagram below shows the code change.


  • If you are doing this from memory, then you will want to go to the menu bar and click on “File“, and select “Save” in the dropdown menu.  If you are reading through this as you go, the environment has probably already saved your changes.  You can tell if you have unsaved changes by checking the file name at the top of the window.  If it has an asterisk next to it, then you know that your changes have not been saved yet.
  • So now we have our simple code change done.  Now we need to deliver our change.  In the vertical set of icons on the left side of your screen, you will see a cylinder.  Hover over the cylinder, and one of the options in the pop-up menu will be Git Status.  Click on “Git Status“.
    • Once you run through this demo, it might be fun to check out the Git repository, and get a feel for the full control that you have over your Git repository for this project.  You might also want to check out some of those other options that are available in that icon menu on the left hand side of your screen.
  • If you are running this demo right after doing the setup, you will see the changes that you made to the config.json and mainifest.yml files listed here.  If you see these, then follow the sub-bullets below
    • By clicking the arrow next to those files, you can review the changes made.  This is a nice little feature for code reviews and sanity checks.
    • Click the icon next to that for the all of those changed files to stage your changes to the Git repository.
    • Once you have all of the changes staged, click on the grey “Commit” button.and then enter in some comment for committing your initial changes.  You will also need to fill in your email address, to validate the changes going into the repository.  DO NOT COMMIT YOUR CHANGE TO THE “all.html” FILE!!
  • Now let’s look at the change that we made, and commit it to the repository
    • By clicking the arrow next to the file, you can review the changes that you made.
    • Click the icon next to that for the all.html file, to stage your changes to the Git repository.
    • Once you have the change staged, click on the grey “Commit” button.and then enter in some comment for committing your initial changes.  Mention the work item number in your comment.  (Remember writing that down earlier?)  So for me, my comment was “Changes for Analyse button as described in task 8225″.  You may also need to fill in your email address, to validate the changes going into the repository.

At this point you have made your code changes, and checked them into the SCM system.  Ordinarily we wouldn’t commit the changes after staging them.  We would go through a test cycle to test out our changes BEFORE we committed them.  Then we could back them out if they failed to address the work item requirements or introduced other issues.

Deploying the changed application

So now you have some changes, and you want to deploy them to an environment and get this code “live”.  It’s really easy with BlueMix, just follow the steps below.

  • Click on the pencil icon (“Show current folder”) on the left hand side icon bar.  This will get you back to the editor.
  • Find the manifest.yml file at the root directory and click on it.  You will see your manifest file contents.  Now look up above the editing window, and you will see a grey “Deploy” button.  Click the “Deploy” button.
    • If you have been working on this for a while, you may need to authenticate with BlueMix again, just provide your ID and password.
    • Otherwise, you will see a message indicating that your deployment is in progress.
    • While you are waiting for the deployment to complete, go to the tab in your browser with the BlueMix dashboard.   if you click the refresh button in the browser, you will see that he status of the application is now stopped.
    • Go back to your editing browser window, and wait for the “deployment in progress” message to disappear.  Once it is gone, go back to the browser tab where you had the BlueMix dashboard.  Click refresh in the browser, and you will see that your application is now running.
  • Click the link to the deployed application in your BlueMix dashboard.  You should see the Twitter Analyzer application now running, but with a much more informal button.  Your code changes have been applied and deployed.

At this point I think that you can figure out how to make changes to the Help button, just doing what you did above.

Looking for feedback

Do you have anything that would make this demo better?  Are there questions that you would like to see explored?  I have some topics for changing things below, if you have others, please forward them along to me.
IBM – dtoczala@us.ibm.com, Personal – dtoczala@gmail.com

IBM Innovate is almost here… where am I?

It’s that time of year again, time for another Innovate conference.  As has been the case for the past few years, this year’s IBM Innovate conference will be held at the Walt Disney Swan and Dolphin resort.  I am not writing this blog post just to tell you about the conference, we have a bunch of marketing types that do that.  What I want to do is publicize where I will be during the conference, some interesting things that you might like to see, and give you some pointers and tips for surviving the conference.

Where’s Tox?

This year I will be focused on the Rational Emerging technologies, and most of my focus will be on IBM’s new BlueMix offering.  I will be working a pedestal in the Innovate Labs on the main conference floor.  Stop down and ask me to show you what BlueMix can do.  I’ll show you how you can quickly start up a project to create cloud based applications, using a cloud based development environment.  Once you understand how this works, and the resources that you have, it can become a really powerful way to leverage innovation within your software development organization.

I also have a session on Wednesday afternoon, which takes me back to my Jazz roots, entitled DRD-1400Common CLM Administrator Deployment Challenges.  This session will get into the patterns that I have seen (along with my co-presenters) in customers looking to deploy the Jazz solutions.  We’ll talk about some of the technical approaches that successful organizations have used for deploying Jazz, as well as some of the organizational challenges that are frequently encountered.  You’ll need to excuse this shameless self-promotion of my own session, but I would like to get a good conversation on this so I can help people do this successfully.

What’s Good This year?

Anything that I am involved with (grin).  Seriously, I like my session on CLM Administration mentioned above, but it may not be for everyone.  I do think that everyone can get some benefit by learning about our BlueMix offering.  There will be several pedestals dedicated to BlueMix, so you should stop by a couple and see what all of the excitement is about.  There are also some sessions dedicated to BlueMix.  There are 10 sessions dedicated to BlueMix, but here are the ones that caught my eye:

Some of the other sessions that have caught my eye this year include sessions on Watson, Mobile Quality Assurance,  and DevOps.  Here are my favorites:

How Do I Survive Innovate?

Innovate is held in Florida, in June.  It’s hot, it’s humid, and it can wear you down.  I have found that having this on a Disney property can also be a somewhat expensive proposition, since meals and drinks on the Disney properties tend to be a bit expensive.

So what do I do to survive Innovate?  I will either rent a car, or take a cab, from the airport to the Swan & Dolphin.  On the way to the hotel, I will pick up a case (yes, a case) of my favorite soda.  Refreshments can be found at the conference, but not always when you need them.  It’s hot, and I get thirsty.  Your hotel room will have a small refrigerator  so why not get what you like, and keep it cold.  It helps me cope with the heat, and I spend less time worried about finding refreshments.  I also tend to dress down, and wear light clothing.  I hope people are there to listen to my ideas, and not to judge my fashion sense.

If I rent a car, I try to eat some meals away from the Swan & Dolphin.  I can eat at a more reasonable price, and I can get more variety.  I can run out and get a pizza or sub, and spend a lot less.  After attending Innovate at the Swan & Dolphin for the last 5 years (it might be more, it’s so hard to remember), I am bored with the limited options that I have for food.  Having this kind of flexibility is really helpful, and makes surviving the week much easier.

One of the best things to do at the conference is to talk to other people and discover new ideas and approaches towards the use of our tools, and software development in general.  So I try to keep myself flexible, and leave gaps in my schedule for talking to people.  Some of the best learning opportunities at Innovate have occurred for me in the random “hallway conversations” that I have had with people.  I try to keep an up-to-date calendar with me at all times, and I usually use something like Google calendar that I can access from a smartphone.  I am usually on the go quite a bit, so I often don’t have time to crack open my laptop to check my schedule.  Having something that I can access via a mobile device (phone or tablet) is critical.

Finally it is important to know the layout of the place.  It can be easy to get lost.  The Dolphin has a couple of elevator banks, so know which one your room is off of.  Most of the conference takes place at the Dolphin, so be familiar with where the various meeting rooms are.  At the Lobby level, there is registration, and the Asia, Oceanic, and Australian conference rooms.  There are also the Europe conference rooms, which typically are held for red carpet lounges, presentation support, and other things like that.  If you go downstairs, you get to the Convention hall level, where you see most of the convention pedestals, and where they serve meals.  If you go upstairs, you get to the Ballroom level, with all of the Northern and Southern Hemisphere meeting rooms.  Some sessions are held in the Swan, and those meeting rooms are all in the same block of Swan meeting rooms.  To get here from the Dolphin, just walk across to the Swan, turn right at the fountain inside the Swan, and the meeting areas will be in front of you.

I hope that you find some of this helpful, and I hope that your time at IBM Innovate 2014 is enjoyable and productive.  If you see me, don’t hesitate to stop, introduce yourself, and let me know if any of this was helpful or informative for you.  Then we can talk about the challenges of software development, and have one of those “hallway conversations” that can be such a valuable experience from the conference.

No Nonsense Tech Talk Member

These are my PERSONAL views and observations

The postings on this site are my own and don't necessarily represent IBM's position, strategies or opinions. Anyone is free to use, copy, distribute, modify or sell the source code and other materials directly linked from dtoczala.wordpress.com and is provided "as is" without warranties. I am not responsible for any harm or damage caused to your computer, software or anything else caused by the material.

Recent Twitter Traffic


Get every new post delivered to your Inbox.

Join 206 other followers

%d bloggers like this: