UrbanCode Plugins – Where Do I Begin?

As a manager of a highly technical team, it can be tough to stay on top of everything that happens within my team.  Recently I have been seeing an increasing number of requests for UrbanCode Plugins, those nifty little add-ons that make UrbanCode extensible and much easier to use.  Now you can go and grab an already existing plugin from the UrbanCode Plugins site, because that site has about 336 of them (I just looked at the list today – by the time you read this the number will have changed).  The point is, there are a lot of existing plugins out there already.  Note that some of these are “community” plugins, meaning that they are community supported.

But what should you do if you need a plugin that has not already been developed?  Well…. you should go and create a plugin for yourself.  Where should you start?  One of my team members (Darrell Schrag – check out his blog, DevOps for Everyone) created an UrbanCode Deploy and UrbanCode Release Plugin workshop recently.  I knew about it, but never realized how much it could help our UrbanCode customers.  My mistake – this stuff is good!

It is part of the IBM UrbanCode Learning Circle, which is a great way to get yourself up to speed with UrbanCode.  It provides a roadmap for how you can become a self-taught DevOps guru (or at least proficient with the UrbanCode Deploy and UrbanCode Release tools).  The lab workbook is 150 pages of hands-on training, exposing you to all of the different facets of building your own UrbanCode plugin.  I know that 150 pages sounds like a lot, but you should be able to invest an afternoon and learn what you need to know about creating your own UrbanCode plugin.

If you still have questions, you can always go out to the UrbanCode Forum and ask the community for answers.  The forum is monitored by the IBM development and support teams, as well as by other UrbanCode users.  Just use the tags “urbancode” and “plugin” on your post, to make sure that the right people see your questions.  The key thing to remember is that you are not alone – there are plenty of other people who are trying to do similar things to what you want to do.  If you’re lucky, maybe there is someone who has already developed what you want.

 

 

Resume inflation – Welcome to the New World

In North America, there has been a lot of focus on the recent stories involving television newscasters/journalists who have “inflated” their resumes.  Brian Wiliams was the first big one, and is now facing a 6 month suspension for exaggerating claims for battlefield experiences during the Iraq conflict.  Now Bill O’Reilly is facing similar questioning of his claims of journalistic heroism during the Falkland’s war in 1982.  In both cases you see a massive outpouring of words and opinions on how these two men have lied, or embellished their experiences, in an effort to establish themselves in their profession.

The whole thing puts a small sour grin on my face.  In the technical world, we have been dealing with this for at least the last two decades.  For almost as long as I can remember, I have been talking to software vendors, software contractors, and people that I am looking to hire, and silently asking myself the same question, “Is this person telling me what they can do, or are they telling me what they think they can do?”.

In the software products field, it has become something of a game, where purchasers put the various solution vendors through a series of trials to demonstrate capability.  I have always jokingly referred to this as the “Vendor Olympics”.  The scary part is that these competitions are often decided on criteria that have little to do with technical capability, and more to do with trust.  “Can I trust this vendor to do what they tell me they are going to do?”, is often the most important question.  That type of thinking has led to organizations implementing flawed solutions, because, “nobody ever got fired for selecting IBM/Microsoft/Cisco“.  This kind of thinking leads organizations and individuals to indulge in some strange behaviors.

It leads organizations into “pushing the envelope” when looking to recruit talent.  “We’re an Agile development shop”, is a quote that you hear from almost any place looking to hire top talent.  Top talent wants to work with Agile, which emphasizes a degree of reasonable expectations on a developer.  If you go and look at the development methodologies in use at these places, you will find a mix of agile, waterfall, scrummerfall, eXtreme Programming (XP), and mass confusion.  They are telling you what they think they can be, and not really what they are.

Job seekers are just as bad.  I cannot begin to tell you how many candidates I have interviewed who claim to possess skills that they don’t really have.  I have had candidates tell me that they know Agile, and then struggle to tell me about how story points work.  These are the good candidates, because I can get to the truth with a few simple questions.  The tough ones are the people who claim to have deep technical skills with REST, HEAT, Cloud, Enterprise software, and other things that I cannot ascertain with a few simple questions.

Why do they do it?  Have you LOOKED at the job posting boards out there?  Companies are looking for “perfect” fits, advertising jobs with a laundry list of critical skills, and HR organizations are looking for keywords in applicant resumes.  Do you have experience in complex technical sales involving Cloud solutions?  I do, but not many other people do.  Many are just as qualified as I am, they just need a minimal amount of time to learn some new concepts.  So in an effort to get through the HR screening process, many job seekers “inflate” their resumes, so they can get that initial conversation with a hiring manager.  It becomes a big game.

So why bother writing about this?  Because I am growing tired of having to play this game.  Don’t inflate your experiences, just tell me what you know and how deep you know it.  Don’t tell me, “oh yeah, I know Node”.  I would much rather hear about how you are familiar with Node, haven’t done any real projects with it, but are extremely interested in learning it.  I am tired of HR finding me “perfect” fits.  I want imperfect fits.  I want people who are going to be challenged, and who like learning and stretching themselves and their skills.  I value the following qualities over all else:

  • Honesty
  • Willingness to learn
  • Ability to learn

So I am imploring my HR staff, now and in the future, to quit finding me the perfect candidate, and to stop sifting through resumes looking for keywords.  I want to build flexible teams, with high trust cultures, that can rapidly become high performing teams.  If I can’t trust you to be honest on your resume, how can I trust you to do a quality job for me?  I do NOT want a bunch of specialists, who are as busy looking for their next position as they are in working on my project.  We need to stop the inefficient hiring games, and we need to get down to the business of actually creating something of value.  We need to reestablish trust in the workplace, and it all begins in the hiring process.

So be warned – if I catch a hint of resume inflation, I will not hire you.  Even if you would have been a good fit otherwise.  My three values are listed above – if you want to impress me, then demonstrate those values to me.

New Year’s Resolutions – Must Have Skills for 2015

My 2015 goals

(Note: My goal is pretty personal, so I have blanked out the picture here. Use your own picture, or even a cartoon, to illustrate what is important to you.

(Note: I was asked by the folks at Webucator to comment on what the most valuable workplace skill for 2015 would be.  I don’t know if I answered their question, but it did get me thinking….)

It’s a brand new year, and with the changing of the calendar, many of us take the time to make some resolutions for the new year.  For me, that means doing a couple of key things.  First, I have one big thing that I want to focus on and achieve in 2015.  I write this down in big letters, put a picture with it, and hang it up in my office.  It’s an old high school sports trick to make sure that you keep your goals in the front of your mind at all times.  I see it every day while I work, and see it up close each time I leave my office.  It’s a simple and effective way to make sure that I keep my focus on what is important to me in 2015.

The other thing that I do at the beginning of each year is to make a map of where I want my year to go,  To begin this, I take an inventory of my skills.  This is a simple list of the skills that I have, and if you keep something like this on LinkedIn (or some other social media), then most of the work is already done, because you have your list of skills from last year.  Just add the new things that you have learned.

Next think about where you would like to be in the next year or two.  This is part of your professional goal for the year.  What kinds of things do you want to be doing?  Where would you like to be?  What technologies interest you?  Take some time and think about this, because this is important.

Now we get to the heart of the matter, and we begin to look at the skills that you want to grow in 2015.  This part requires some work.  It requires some reading, and it requires some thinking.  Many people struggle with that “thinking” piece.  Most of us spend our days reacting to new events and new information, and just reacting to life in general.  For this part, you need to consume information, digest it and it’s meaning, and then reflect on what you have read.  It means that you have to slow down, and really think about things.

So where do we start doing some digging for the skills in general demand for 2015?  Start close to home and talk to your boss, your co-workers, and technical leaders that you know.  All of them have opinions and some idea of the things that will be important for the coming year.  Are you still in school?  Then ask your professors, classmates, and any technical leaders that you know.  This also helps you to network and build positive relationships in your current work environment.  People will talk to you, because everyone feels flattered that you find their ideas and opinions important.  Listen to them, and take notes.

The next thing to do is a little bit of good old-fashioned web searching.  Look for articles and blog posts (like this one) that talk about important skills for the future.  I’ve read more of these things than I care to remember, but as I read them I notice some common themes coming to the forefront.  Good places to start include Cybercoders, ComputerWorld, Infoworld, and Forbes.  Some might find my putting Forbes on the list a little strange, but the real value in software is where software can have positive business implications in the real world.  Forbes gives you a real business perspective on things, and that is important in the current software environment.

After doing all of this, I had my list of areas and skills that I think will be important in 2015.  I then matched this up against my own skills, and my long term desires.  I now have a list of areas that I think I would like to pursue, and the skills that I need to grow to be able to pursue them.  With this knowledge in hand, I can now create a second poster for my wall to remind me about the important skills and opportunities that I want to be on the lookout for in 2015.

So what skills do I have in my list?  Which skills do I think are important for 2015?  I have two big ones:

  • Cloud technology – everyone is talking about how “Cloud” makes everything better.  Not too many people can tell you WHY, and even fewer can tell you HOW.  You will want to learn more about Cloud technologies (like Bluemix, Open Stack, Cloud Foundry, AWS, Docker, Azure, and others), and make sure that you get some real hands-on experience with them.  You want to be the guy who can tell people both WHY and HOW.
  • DevOps – DevOps is another “hot” area in recent months.  There are a lot of vendors with DevOps solutions, as well as some good open source alternatives.  That’s all wonderful – but you need to understand the concepts first, and how massive automation can lead to better software development.

So now you can take my two “most important skills” for 2015 and add them to your list of sources.  Go and look at other sources, talk to people, take some time to THINK, and come up with your own personal list that fits your current skills and where you want to be.  Make sure that you write your list down and make it part of your everyday routine – reminding yourself of the big picture.  Let me know what you come up with, because I am always looking for new sources of information and new viewpoints to help me refine MY list.

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.


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 259 other followers

%d bloggers like this: