App-V 5: Application Troubleshooting: “Fly-by-Night” Error Messages

To continue the discussion of application troubleshooting, I wanted to provide some clarification on a certain type of application failure. In a blog post a while back ( http://blogs.technet.com/b/gladiatormsft/archive/2013/05/15/app-v-process-exit-codes-and-why-they-matter-when-troubleshooting-virtual-applications.aspx ) I discussed using Process Monitor to dissect silent application failures or exits. Process Monitor allows us to look at process exit codes to determine leads on application failures…(read more)

App Scoping. Who can see the apps?

 

We know that there is a single app catalog per web application. With the one web application matra, you can have separate department or business units site collections under one web application. Further, these departments will develop their own apps that are valid only for their site collections and will have some security needs. So how to prevent users of one department/business unit from installing/seeing apps developed for another department. Here is the solution

Permissions and app scoping can be achieved by the following configuration

 

  1. 1) Only site owners can install the apps
  2. 2) The site owners must have read-only permission on the root of the app catalog to be able to see the app and thereby install it.
  3. 3) Security isolation for the apps should be achieved by creating folders in the app catalog and assigning permissions to those folders.
  4. 4) Once the folder is created, break inheritance on the folder and only provide read-only access to site owners who should be able to install the apps on their sites.

For example

  • Site 1 – Site Owner is Bob
  • Site 2- Site Owner is Joe

In the app catalog;

  • Provide Bob and Joe read-only access at the site level
  • Create a folder Site 1 Apps in the app catalog
    • Break inheritance and remove Joe’s access to this folder so that only Bob has access to this folder
  • Similarly, create a folder Site 2 Apps in the app catalog
    • Break inheritance and remove Bob’s access to this folder so that only Joe has access to this folder

With this setup;

  • Only Bob can add apps to his site, Site 1,  from the Site 1 apps folder from the catalog. He will not see the apps in the Site 2 Apps folder
  • Similarly, Only Bob can add apps to his site, Site 2,  from the Site 2 apps folder from the catalog. He will not see the apps in the Site 1 Apps folder

Fun of PM.2 … Energi[s|z]ing the team

Continuing with the program management (PM) persona from Fun of PM.1 … Persona within the ALM Rangers, we focus on Energize in this post.

image_thumb6

We focus today’s post on Energize, which breaks down into leverage, mentor, and remove impediments sub-topics.

image

leverage

The Program Manager (PM) leverages resources and orchestrates agendas, skills, and personalities to encourage a vibrant, passionate, and cohesive team. It is important to identify different personalities, traditions, and cultures, especially those that avoid disputes or will not question (apparent) authority. The PM needs to encourage a delicate balance of tampering the extraverts and encouraging the introverts. Remember, there is no “I” in team! When the team works as “one” and has all the tools it needs, the passion, quality, dream, innovation and energy levels will rise to new levels.

DSCN02250136bar-outside_ Robert Bernstein and Willy-Peter Schaub balancing work & fun @ TechReady. 

! Leverage and orchestrate resources to enable the “dream” team and lead by example.

remove impediments

Similar to a flight controller helping pilots avoid turbulence or assisting them in an emergency, a Program Manager (PM) works with the team, stakeholders and in particular, the Scrum/Ruck master, to proactively identify potential impediments and take ownership of known impediments and the resolution thereof.

10509515_10152146576886607_4779679760073980492_n … image sitting in the project control tower as PM.

Common Ranger project impediments and PM actions:

  • Team member goes dark or is unavailable due to a family emergency.
    PM finds a replacement resource or takes ownership of responsibilities, assumes the role and delivers on behalf of the unavailable team member.
  • Team requires a special infrastructure in the upcoming sprint(s).
    PM works with stakeholders to prepare and support the infrastructure.
  • Team is bogged down trying to align documentation with the common template and styling.
    PM encourages the team to work with a basic template, i.e. FastStart – Contributor.dotx, and takes ownership of merging and aligning the documentation, and collaborating with the copy editor to maintain a consistent style and readability.
  • Team is blocked due to a technical issue or product bug.
    PM collaborates with the stakeholders and product teams to identify and resolve the issue / bug.
  • Stakeholders introduce scope-creep and churn, unsettling team and impacting deliverables.
    PM collaborates with the stakeholders to avoid scope creep and move scope-creep to subsequent release backlogs.
  • team is missing the quality bar or are not meeting the definition of done (DoD).
    PM does whatever needs to be done to assist the team to “ship”. The buck stops with the PM!

Knowing that there is always an understanding sounding board, supporting wingman and encouraging mentor, allows the team to focus on their core commitments and intuitively energises them.  

! Avoid turbulence, to enable and focus the team.

mentor

As mentioned in Fun of PM.1, we are investigating peer mentorship as another effective strategy to bridge the ecosystems.

image1_thumb

Mentors are wise, trusted advisors, who help others learn and awaken, who inspire and convey their wisdom without teaching or managing.

New PMs connect with practiced PMs as peer mentors enabling them to assimilate themselves into the world of PMs quicker and more effectively, while creating a two-way learning experience.

image17_thumb

Similarly, ALM Ranger PMs connect with feature PMs as peer mentors. This enables the exploration of different environments, PM skills and responsibilities, and creates another two-way learning experience and creates the foundation of another bridge. 

! A peer mentorship is an effective enabler and awakener.

energizing through leadership

The Program Manager leads, not manages, by example and by morphing into whatever persona the team needs to keep the ship on track and the team unblocked. We base the illustration below on a typical four four-week sprint ALM Ranger project, with a Scrum/Ruck Master (RM), Product Owner (PO), Project Lead (PL), 3 engineering pairs, and the Program Manager (PM). As always, all roles, except the program manager, are volunteers, geographically distributed and part-time.

image

The PM wears several hats during a typical project, including developer, contributor, tester, reviewer, PO proxy, backup Scrum/Ruck Master, enforcer of quality, consistency and scope, pizza coordinator and release advocate. A “Jack of all trades” or “Tron of all bits.”

During the Training-Research-Planning (TRP) sprint, the PM supports the RM, PO, and PL, taking ownership of setting up and supporting the team infrastructure, collaborates with the RM and PL to populate the backlogs and synchronizes with the PO to ensure the objectives, vision and backlog meets the PO’s acceptance criteria. The PM is responsible for creating the right platform for the team to catapult into the development sprints, and understanding the context of the project to be able to shield and become a proxy for the PO. The PM’s involvement typically spikes at the beginning and end of the TRP sprint as shown.

During the development sprints, the PM gets involved as contributor, developer, reviewer, tester, backup lead, PO proxy and whatever other persona/role the team needs to keep the team energised and unblocked. The review, testing, and planning activities spike at the end of each development sprint, where the PM drives the milestones and especially quality bars. Engineers should focus on their work during their precious part-time slices, and then intentionally re-focus on their family time and/or “real” job. The PM should worry about dotting their i’s and crossing their t’s in terms of process, style, quality, plans and collaboration for the team.

The team needs the greatest commitment by the PM during the Quality-Planning (QP) sprint, to enforce the no-scope-creep and we ship-today-and-improve-tomorrow mantras. In addition the PM becomes the release handyman, helping the team resolve the last few bugs and gremlins, completing quality essential processes, packaging the release with the PL and working with the PO to get the infamous “thumbs up” to ship a silent BETA and eventually the release. The PM morphs into whatever personas the team needs to ship and to ensure the team is drenched with Kudos and recognition when the PO gives the approval to ship.

! Do you have any problem with your project? Call the Program Manager … or, wait, the problem was pro-actively addressed … wow, now I have energy for the next challenge q:)

… call to action!

At this point, we have skimmed persona and energise topics of the Program Manager (PM), within the context of the ALM Rangers. In the next post, we will investigate how the PM enables the team, building invaluable bridges.

? Thoughts? Candid feedback?

! We need your feedback and questions to fuel these discussions and help us improve our mentoring program.

special thanks

Special thanks to Anisha Pindoria and Rui Melo, who help me improve these posts as part of our peer mentorship, and Bill Heys, who turns my gibberish into human readable content.

reference info

Changement sur le licensing Visual Studio Online

Un nouveau type d’accès est en cours de déploiement sur Visual Studio Online : l’accès “stakeholder”. Ce nouveau type de compte est gratuit et n’est pas limité en nombre d’utilisateurs (contrairement à l’accès “basique”). Son rôle est de permettre aux sponsors des projets d’avoir un accès aux indicateurs et au backlog du produit. L’idée est de faciliter l’adoption de TFS au sein des équipes business en leur permettant de participer directement au produit. De cette manière il n’y a plus de distinction…(read more)

Started means started, not completely ready.

Windows is extensible. Extensible means we have places that are built for external software writers to plug in to provide additional functionality that was not included by default. This makes Windows very powerful as a platform. This comes at a price. In any plug-in model, you have the option to document the contact or to document the contract and ENFORCE it. For the most part, Windows does not enforce these contacts.

Let’s walk through and example. On Windows we have the concept of services. Services are apps that run in the background, automatically even if the user is not logged in. These services can have a few different startup options, but a common one is Automatic. This means the service will be started at boot of the system. Pretty early in the boot cycle. Here is the contract for a service and how long they have to go from “Asked to start” to “Started” @ Writing a Servicemain Function (MSDN):

Excerpt from this page:

The sample initialization function, SvcInit, is a very simple example; it does not perform more complex initialization tasks such as creating additional threads. It creates an event that the service control handler can signal to indicate that the service should stop, then calls ReportSvcStatus to indicate that the service has entered the SERVICE_RUNNING state. At this point, the service has completed its initialization and is ready to accept controls. For best system performance, your application should enter the running state within 25-100 milliseconds

I have highlighted the key line. The contract, despite being delivered softly, is “Dear service, you have 25 milliseconds to get to the started state”. The problem is the service writer’s perception of what “Started” means. Our intent, was “Started” means you have crossed the start line. Many developers believe this means their service has reached a point where they feel they are FULLY operational. Why does this matter? Well, automatic services are started in a serialized manner. First the Service Control Manager (SCM) reads the list of services out. It first orders the list based on each services LoadOrderGroup,then each group is re-ordered them based on dependencies. To see the outcome of this sorting, you can use  LoadOrder from Sysinternals. So we have a list of services, divided in to groups, that are reshuffled to take care of dependencies. The list ends up being, for the most part, alphabetically sorted based on the service name.

If a service that is marked as automatic decides that he is going to take a long time to start, but while doing this, continuously reports pending back to service control manager, then all the services that have not started yet, have to wait. In addition, any request by anything already running to start a service is blocked too. So a service named “AAA Service” that is marked as automatic, begins is startup, and decides to do a lot of work, or connect to something over the network, or any other bad decision, while still reporting back to SCM pending has blocked the box from allowing you to have a quick boot.

 

I have seen this as a frequent cause of hangs during boot. Here is a diagram from a case I worked where a customer hit this issue:

Issue Diagram

 

The bad behavior is the contract violation of the aaaService. As the end user, you are stuck staring at a logon screen waiting to get to your desktop.

Free and unlimited project stakeholders, and organizational accounts for Visual Studio Online

Was just going through my email and noticed the announcement for two new features for Visual Studio Online:

****************

 

Invite stakeholders to a project to keep them informed on what’s happening with that team or project. They’ll have access to the team home page, where they can view updated project information. They’ll also have access to the backlog, taskboard, and Kanban board, where they can create and edit work items or work item queries. You can add unlimited stakeholders to your team projects at no charge – in addition to the five Visual Studio Online Basic users you get for free with your account!

Important. If you intend to move existing team member(s) from existing plans to the new stakeholder plan, remember to visit the Microsoft Azure portal and remove any paid user plan that you no longer need, to avoid being charged for them on the next billing cycle. 
 

With organizational accounts, users can use their own company credentials to sign in to Visual Studio Online. To use organizational accounts, link your Visual Studio Online account with Microsoft Azure and set up Azure Active Directory.
Stay involved and shape the future of the service, give us feedback via UserVoice, MSDN Forums, or Brian Harry’s blog.

Note: You can learn more about these (and more) updates from the release notes on the Visual Studio web site.