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">
<tbody>
<tr> 
<td style="vertical-align: top;">1 </td>
<td style="vertical-align: top;">2 </td>
<td style="vertical-align: top;">3 </td>
</tr>
<tr>
<td style="vertical-align: top;">4 </td>
<td style="vertical-align: top;">5 </td>
<td style="vertical-align: top;">6 </td>
</tr>
<tr>
<td style="vertical-align: top;">7 </td>
<td style="vertical-align: top;">8 </td>
<td style="vertical-align: top;">9 </td>
</tr>
<tr>
<td style="vertical-align: top;">10 </td>
<td style="vertical-align: top;">11 </td>
<td style="vertical-align: top;">12 </td>
</tr>
</tbody>
</table>

HTMLWidgetWithEdits

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!  


HTMLWidgetAfterTable

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>.

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

  • 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.

ForkDialog

  • 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”.

RenameConfigJSON

  • 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.

ConfigChanges

  • 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.

ManDeployStatus

  • 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.
TiaNodeInBlueMix
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.

ShowMeTheScore

  • 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.

Open Source and Vendor Tools – What makes sense?

It’s been a long time (Jazz CLM and Open Source in Sept. 2011 and Jazz Compare with Open Source in Feb 2009) since I posted on the subject of open source tools and vendor supplied tools.  Since most people don’t have the patience to look that far back in my blog’s history, and some things have changed over the interim, it’s time for a new post.  For anyone new to this blog, and in the interests of full disclosure, I work helping enable customers with tools and technologies from IBM/Rational (a vendor).  Hopefully you will find this a useful and objective discussion of the relative merits of these approaches.

The Simple Case for Open Source

So let’s look at an example of the typical argument that most people trot out in support of open source, “Open source is free, the support is much better than what you get with vendor supplied tools, and you avoid vendor lock in“.  Um…. yeah.  Let’s take a closer look at this statement, and see where it falls apart.

Nothing is Free

Open source tools are not free.  People make this false assumption because there are no licensing costs associated with open source tools.  However, you still have the costs associated with provisioning hardware for them, setting them up, and administering and maintaining them.  To be fair, you also have these costs when using vendor supplied tools, however vendor supplied tools tend to focus on administrative concerns, and thus tend to require a little less effort.  Open source tools are getting better in this respect, but there is a whole industry of companies that have a business model based on the administration and upkeep of these types of environments.  In some cases, an approach with one of these companies may be a more cost effective solution for you.

The point to be made here is that you need to evaluate these things with ALL of these costs in mind.  Think to yourself, do I want to maintain these tools and development environments myself, or would I prefer to pay someone else to do it for me?

Nothing is Easy

Open source tools will often make broad and sweeping claims for support.  They point to Git or Maven as examples of open source tools with great user support from the other users, in the forums and the self help sections dedicated to this purpose.  I really admire this type of support, because it can be quite good.  I find the various Linux forums quite useful when debugging my own Linux issues.  I try to get our support areas and forums to adhere to this type of standard (but to do so with a little bit of class and respect – sometimes those forums can be a little rough).  The thing to keep in mind is that while these are examples of good user support through forums, this only really holds true for open source tools that have reached a certain period of longevity, and a critical mass of users and administrators.  Some open source tools do not have this level of maturity or this size of user base.  Those tools may grow to achieve that level of support at some time in the future, but it all depends on the popularity of the tools over a period of time.

When evaluating support, pay attention to how long it takes for the forum to provide answers to complex issues.  Don’t forget, it “counts” even if the original submitter ends up posting the solution.  That is an example of good behavior in these environments, as administrators share solutions with others who might have a similar issue at a later date.  Vendors typically have teams dedicated to addressing issues as soon as you alert them.  Forums tend to be less time critical.

Transparency is Good (or is it?)

Some people claim that, “since I can see the source code, I can be sure of what is going on”.  They have a point.  It also means that anyone who wants to exploit weaknesses in the tool code can easily do so.  The other thing to keep in mind is that many vendors are shipping source code with their tools now anyhow.  Vendors would LOVE it if you made a suggestion to improve their products (“Hey look!  Free developers!”).  And modifying open source is not as easy as some would have you believe.  Often you will need to maintain your modifications to the open source code base, and then port and test these changes with each new release.  Wouldn’t it be easier to just have someone else maintain these fixes for you?

This argument is about code transparency, and should not be confused with business transparency (which I am a BIG proponent for).  It’s not bad or good, it’s just something else that you need to be aware of.  The fact that you can see (and modify) the code has implications that can impact the overall strategic value of your solution.  Be aware of those implications.

The Simple Case for Vendor Supplied Tools

Now let’s look at the reasons that people give for going with vendor supplied software development tools, “Vendor tools have better functionality, they do the code maintenance for us, and they deal with incorporating new technology.  We’ll always have support!”.  Um…. OK.  Let’s take a closer look at this statement and see where it falls apart.

The Cost of Functionality

Vendors love to claim that their tools are “best of breed”.  Often the functionality that can be found in vendor tools is specialized and more advanced than what you will find in an open source tool.  Vendors will provide functionality and usage patterns that will support certain industry standards or regulatory standards.  Often with open source tools, the administrator has to create these type of mechanisms as either a “plugin” or some “bolt on” addition to the open source tool.  This is one of the general strengths of the vendor supplied tools.  As a consumer of these tools you need to evaluate the relative worth of this additional functionality.  If you are doing some simple software development project, with a small co-located team, then you may never even use these capabilities.  Why pay for something that you will never take advantage of?  It’s like buying a sports car in a city where you cannot drive faster than 30 mph.  You are paying a premium for performance that you will never utilize.

However, if you need that additional functionality, then the availability of this specialized capability makes the licensing costs associated with vendor supplied software extremely attractive.  Why should you come up with a custom solution for this issue when somebody has already done all of the thinking, development, and testing for you?  You are not in the software tools business, so why should you dedicate any time or effort into developing software development tools?  You don’t collect rainwater on the roof, you pay for (and take advantage of) infrastructure and work that has already been done by an organization that specializes in delivering water to your office.  Water isn’t that complicated.  The costs associated with having some else worry about it, so you can focus on where you bring value, are seen as an acceptable trade off.

Incorporation of New Technology

Vendors will claim that they will provide the “latest and greatest” technology in their products.  For many vendor products this may be true.  Successful vendor products are like the support of successful open source products in this respect  For vendor tools, once a critical sized user base has been established, there is enough revenue to justify the constant upgrading and incorporation of new technology into the tool.  Vendors have entire teams dedicated to improving their tools, funded with maintenance contracts.  However, if a vendor tool does not have enough revenue associated with it, often the vendor will leave these tools on “life support”, with a skeleton staff tasked with maintaining the tools, but with no real innovation going on.  Just because something is a vendor tool does not ensure that it will be supported for a long time, or that it will continue to incorporate new technologies and innovate.  Have your eyes open, and know what you are getting into.

The Reality

Neither of these approaches seem to address all of the concerns and risks involved with software development tools by themselves.  It leads some to ask the question, “Why use software development tools at all?”.  If you think that you don’t need tools, then spend some time trying to develop a real product without them.  I have, and it’s not very pretty.

What About Integration?

The actual difference between vendor tool functionality and support, and the functionality and support provided by open source tools is not as vast as many vendors would like you to believe.  There is one notable exception to this.  That is the area of integration.

Integration should be a vital part of your strategy when deciding on tools to support your software development environment.  You should be seeking to break down barriers between business analysts, developers, testers, and IT administrators.  That is the whole idea behind the DevOps movement, which uses automation to help break down these barriers and improve communications.

Vendor tools tend to focus on integrations, and will usually have a supported API for integrations to their tools.  Open source also makes use of API’s, but the stability of these API’s isn’t the same as it is with vendor supplied tools.  With open source tools, the focus is commonly on providing extension points for the consumer to write the integrations themselves.  With vendor supplied tools, these integration points exist, but vendors will often make the implementation of these integrations available with a simple configuration change.  It is often how vendors will differentiate themselves from their open source alternatives.

Integrations can be tricky, and they often come with unadvertised consequences.  Is your tool going to integrate with some other tool in your environment?  If the other tool becomes unavailable, will your tool be able to work without a loss of functionality?  Will performance suffer?  Often the best integrations introduce a high degree of inter-dependency between the tools, which can provide a nice user experience, but makes your overall environment tougher to upgrade and maintain.

Probably the most important integration to consider is the one that you don’t know about yet.  You have other tools and automations that you may incorporate in the future.  Does the tool that you are considering provide an easy interface for sharing it’s information, and for linking it’s data to other (at this time unknown) repositories and systems?  You can never really know what the future holds, so it’s important that your tools adhere to your philosophy with respect to sharing data and integrations.  If you plan on using a centralized data warehouse for this, will the new tool be able to populate that data warehouse with the necessary information?  If you like the concept of linked data (which I really like), do the new tools support the idea of leaving data in place and creating linkages between data in different repositories?

The approach that you choose will be up to you, just make sure that your tools are consistent in applying this approach.

What Your Strategy Should Be

So what is a software development organization supposed to do?  Are there no good answers?

The More That Things Change….

…. the more they stay the same.  In my earlier blog post on this subject (Jazz CLM and Open Source) I argued for treating your software development tools like an investment portfolio.  I see no reason to change my thinking.  Many things have changed in the interim, and there are different factors like cloud computing, DevOps, and emerging standards for data sharing (like OSLC).

I still think that treating your investment in tools like a portfolio is important.  Don’t invest in a single vendor’s tools, or in an all open source tool environment.  Either one of these approaches has the potential to leave you vulnerable in different ways.  Financial investors spread their investments around to limit risk, and you should think the same way about your tools.  It is more important to have a software development environment philosophy.  Have some general standards that you consider to be important, and choose the tools that provide the best fit for your philosophy and environment.  Don’t fall into the trap of having a single tools vendor, or insisting on an all open source solution.  A mixture of these will probably be the path that provides the best fit for you, and imposes the least amount of risk.

For example, I would insist on adherence to open standards.  I think that having open standards allows you to more easily transition into and out of new technologies, since huge interfaces do not need to be written (or re-written) to accommodate the changing of one tool in the environment.  I would also insist on easy integrations via REST based technologies.  That allows you to create even simple integrations between tools using hyperlinks between RESTful objects.  Some people insist on more full featured integrations, but I typically find that the more “full featured” an integration is, the more “brittle” it is.  It makes it more difficult to upgrade tools, or introduce new tools into the environment.

I would also insist that the tools selected be able to easily scale to fit the size of my organization.  If you only have 100 developers, then your tools should scale to support those users and more, without large amounts of support staff needed.  Larger organizations will have more significant support requirements.  Keep in mind that security plays a role here.  Some cloud offerings will scale “forever”, but may not support the security requirements that your business requires.  I would look for tools that provide easy an intuitive user interfaces.  Nothing is worse than sitting in front of some tool or application, knowing that it can do everything you could ever want, and having no clue about how to do it.  Finally, I would look at the relative costs of the tools.  This includes licensing, support, hardware needed, and the administrative burden.

Your organization and industry may have some other things that need to be part of your philosophy.  Some organizations would put support of software development process on their list.  Others would consider support for particular regulatory standards.  The key here is to have a consistent philosophy for what you consider important in your tools.  You should then look at your current tools, and any potential tools, through this philosophical lens.

Summary

So you’ve read all of this, so now what should you take away?  You should have a philosophy regarding the tools that support your software development infrastructure.  Have 4 or 5 key capabilities that you value in your environment, and be consistent.  For me, I would consider the following:

  • Don’t put all of your investment into a single vendor, or solely into open source.  Diversify to reduce your risk.
  • Insist on adherence to open standards
  • Look for integrations that allow you to link DATA, not link different tool applications
  • Look for scalability to fit the needs of your organization, while keeping security in mind
  • Look at overall cost – not just the cost of the licenses, but the cost of the hardware needed, the cost of administration, and the cost of support

and finally……

  • Don’t just follow what I say, decide on the key things that are important to your organization.  Choose 6 or fewer things that are critical, make that part of your philosophy on software development tools, and focus on having all of your tools support that philosophy

Other Things To Read

I provide some links below to some of the better arguments for/against both open source and vendor supplied software.  I do NOT agree with the arguments in these articles/blogs, I only supply them to you as a way for you to be informed.  I “get” both arguments, and I agree with some of the points raised on both sides of this.  You should understand both sides of the argument, and decide what works best for your individual situation.  Life isn’t black and white; you ignore the shades of grey at your own peril.  Some of these posts border on fanaticism, but they represent well written arguments and observations on some of these points.

Why Open Source Misses the Point of Free Software - a convincing argument from Richard Stallman, but one that begins to attach too much ethical importance to the development of software.

The Problems of Open Source – a convincing argument from Dr. Tarver that rips Mr. Stallman, but one that tends to discount the quality of some open source products.

Open Source Sucks – one person’s view on the problems of open source….

Open Source Rocks – ….the same person’s view on why open source is great.

Socket.io and the Business of Open Source – a real-world look at how open source is used in producing vendor products, and the impacts of open source on those products.

Using Python to Build a Jazz Widget – Part 1

I have been spending the past couple of weeks wondering about what I would write about next.  As a manager, I don’t get a lot of time to dig into the deep technical issues like I used to, and I miss that.  So I had some spare time on my hands, and I wanted to do something different that would help me learn something, and also be useful.  I am picking up Python, so I figured that something useful in Python would be good.

As always, the code in this post is derived from examples from Jazz.net as well as the blog posts I mention. The usage of code from that example source code is governed by this license. Therefore this code is governed by this license, which basically means you can use it for internal usage, but not sell it. Remember that this code comes with the usual lack of promise or guarantee. I did all of this against a v4.0.2. RTC instance.  So read on, and feel free to try this out for yourself.

The Problem and the Approach

One of my big issues as a manager is getting the story of my team across to our stakeholders.  I have widgets which show the state of our significant stories and epics, but my stakeholders are not all technical types, and sometimes they need something a bit more graphic.  The presentation needs to have some color, and some interesting graphics.  I didn’t want to fool around with BIRT, because I might have some custom calculations, and some custom icons that I want to use.  I also don’t want to have to upgrade the report when my tools get upgraded.  So I thought that I could create a Python script that would use OSLC to get the information that I need.  I can then take this information, and create a small HTML page with the information and links that I want to show.  Using the new External Content widget (see my earlier post on Management by Results), I can then display this content on a dashboard.  If I set up a cron job on my machine to run every six hours, I will not put an undue burden on the Jazz infrastructure, and I will give my stakeholders a nice dashboard view of what they want to see.

So this solves my reporting issue, allows me to learn Python, allows me to get deeper into OSLC, and should meet the needs of my stakeholders.  Time to get to work!

Figuring it Out

So since I am a Python newbie, I decided to do what I always do when starting with something new.  Do a web search for using Python with OSLC, and try to borrow as much code as possible from others who may have done this before.  Why reinvent the wheel?  I did see some good blogs on using Python and OSLC with RQM, easy authenticating with Python, as well as some OSLC with Python posts on the Jazz forums.

My First Sample Program

The blog posts were a good place to start, since everything begins with authentication.  So the first thing I did was to download and install the requests library by Kenneth Reitz that was mentioned in the easy authentication with Python blog post.  Since I am running Ubuntu, I just needed to make sure that I had the Python pip module installed.  I then downloaded the requests library,  Then I did a quick “sudo pip install requests”, and BLAM, the whole thing was all set.  My Python environment was set, now to try a quick sample program.

So I just want to get into the repository, authenticate, and see if I can get ONE single resource out of the repository.  No luck.  I keep having authentication issues.  So the next thing that I go and look at is the first blog that I listed, using Python and OSLC with RQM, and use the JazzClient class defined there.  I really like how simple it makes the main program read.  Still no luck.  As I look through the responses that I am getting back, I notice that I am hitting https://jazzserver:9443/ccm, and when I go and look at the Jazz repository the base URI is https://jazzserver:9443/rtc.  Looks like I have been hitting the wrong spot!!  Once I change that to the correct address, and add a second storage of the appropriate cokkies as described in a Jazz forum post, everything begins to work.

Now most of this code is “borrowed” from the blogs that I referenced earlier, but you can find the code out on JazzHub.  You can find my project on JazzHub, under the title “Python Jazz Client“.  Check out the HelloWorld.py and JazzClient.py files.  You can use them, but you will need to change the user, password and base URI in the main module.  Your base URI will probably look like “https://mycompany.com:9445/ccm&#8221;.

This Python Jazz Client project on JazzHub is interesting, as it is the first real “development” that I have ever done on JazzHub.  I made it a public project, so if you are interested in this type of work, or you have suggestions for expanding this JazzClient class, please join the project and pitch in.  I can honestly use all of the help that I can get.

Conclusion

So there it is, a bunch of Python code that helped me get more comfortable with Python, utilized OSLC, and gets through authentication and can pull information on individual work items.  It was so easy that even a slow-witted manager like me was able to do it.  Next I will begin to build on these basic capabilities, to pull specific information from work items, and then use this to create some simple HTML presentations of the data.


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


Follow

Get every new post delivered to your Inbox.

Join 185 other followers

%d bloggers like this: