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.