Ionic iOS 9 WebView Glitches and Performance

ionic-html5-native-frameworkWith the latest release of iOS there have been some performance implications for Hybrid Ionic Applications. In particular, animations around page transitions seem glitchy and sometimes never transition entirely. The problem seems to be around the ui-routing angular module. The temporary fix is to include the following ios9-uiwebview module to patch this issue.

To fix your hybrid app, start by adding this file (angular-ios9-uiwebview.patch.js available at to your solution and reference it in your index.html page. Next, add the following dependency to you base app’s module.

Read More

XCode 7.1 Cordova CdvViewcontroller.h not found

cordovaIf you’re using Cordova and building/simulating through xcode 7.1 you may notice the following issue when you go to archive next, “CDVViewController.h not found”. This is because of a header search path configuration variable that is looking in the wrong root path. It’s looking in the wrong path because Apple decided to change the directory when they added the second platform, TVOS.

There will probably be a bug fix to cordova to help set this configuration variable correctly when adding the platform, but for now you’ll just need to manually change this value.

In the Build Settings click in the the search box and type “Header Search Paths” and then change the following
“$(OBJROOT)/UninstalledProducts/include” to “$(OBJROOT)/UninstalledProducts/$(PLATFORM_NAME)/include”

Read More

SSL Securing an Azure Website

stock_lockSSL Certificates aren’t a routine activity that every developer has to do often, so it’s often a Google or DuckDuckGo search to find a tutorial to recall the steps.

What’s an SSL Certificate?

SSL Certificates are small data files that digitally bind a cryptographic key to an organization’s details. When installed on a web server, it activates the padlock and the https protocol (over port 443) and allows secure connections from a web server to a browser. Typically, SSL is used to secure credit card transactions, data transfer and logins, and more recently is becoming the norm when securing browsing of social media sites.
GMO GlobalSign Inc.

In summary, an SSL Certificate allows you to encode web site requests so that important credentials (usernames/passwords) or billing information (credit card numbers, addresses) are encrypted so only the user and the server know the details.

Purchase an SSL Certificate

First, find an SSL Certificate provider. There are quite a few providers that can secure your site with varying degrees of security and liability warranties. For smaller solutions you may not need a $1,000,000 coverage protection plan, so a $10 SSL certificate with $10k coverage is probably enough. SSL Certificates can secure your single domain, any sub domain, or multiple domains. Purchasing for a single domain, such as, is the least expensive. Wildcard certificates (*) will cover any sub domain for a given domain. So you could secure,,,, etc. You should do the math to see if it makes more sense to purchase single domains or a wild card. Note that there is also a cost savings in terms of time to not have to issue an individual cert for every domain. Lastly, a Multiple Domain cert can provide a certificate for multiple domains.

Here are a few SSL Certificate providers that provide quality SSL Certificates.

Create the SSL Certificate CSR Request

In IIS on your local machine/server, create a new server certificate by clicking on the server node and opening the Server Certificates screen. Right click and select Create Certificate Request or simply click on the link on the right side of the screen in the Actions pane. Your Distinguished Name Properties are simply details about your organization.

Common Name:
// Note that you should use instead of just Including the www will protect both variants whereas just will only secure the non-www host name.
Organization: Your Name or Organization
Organization Unit: IT
City: City
State: WI (abbreviation)
Country: US (abbreviation)

Cryptographic Service Provider Properties

Most SSL Certificate providers will require that your Bit length be a minimum of 2048 and RSA SChannel.

Complete Request with Provider

After purchasing the SSL Certificate you’ll need to activate that certificate and supply the CSR. The CSR will specify the credentials, as well as the domain covered, in a blob of letters and numbers. Copy this text from the txt document and paste it as the CSR. After submitting the CSR, you’ll be prompted to confirm that you own the domain. You can choose to verify that you own the domain by sending an e-mail to that domain, adding a DNS entry, or uploading a special text/html file to the website’s root. If verifying by e-mail, follow the instructions in the e-mail to complete this step.

Complete Certificate Request

You will receive the certificate in a zip file by e-mail shortly after completing the previous step. Extract the .cer file. Back in IIS, open the Server Certificates panel again and click ‘Complete Certificate Request’ in the Actions pane. You will be prompted to enter a friendly name (use the common domain name used during the CSR step) and select the .cer file you just extracted. Select Web Hosting as the certificate store.

Export for Azure

Now that you have completed the certificate, you can export the cert for the Azure site. Right-click on the cert within the Server Certificates grid and click Export. Note, if the certificate does not show up, you may need to close IIS and re-open it. Specify a directory and a file name of the .pfx file that it will create and input a password. It doesn’t matter what you name the .pfx file, but for consistency it’s easy to just name the file the same as the common domain name.

Azure Portal – Custom Domains and SSL

In Azure and within your Azure Web App, select the Custom Domains and SSL blade in settings. Next, click the ‘Upload Certificate’ button in the blade header. Select the local PFX file and input the password that you specified as you exported out of IIS.

Azure – Bring External Domains

This step can happen before or after the Custom Domains and SSL, but it does need to occur so you can see your domain is accessible to the Web App. Click the Bring External Domains button in the Settings header and then input the domain. Click Save and your domain and certificate should be available to link together.
Link the cert and domain together in the settings blade by setting the SSL bindings host name (your domain) and certificate (SSL certificate).
SNI SSL will allow you to use the same IP to support several secured websites. Otherwise you will need a unique IP for each website.

Read More

Cordova iOS Error ITMS-90339 Invalid CFBundleResourceSpecification

ERROR ITMS-90339: “This bundle is invalid. The Info.plist contains an invalid key ‘CFBundleResourceSpecification’ in bundle ….”

You’ll need to override the default xcconfig that builds the app on the iOS side. This can be done by providing an override in the \res\native\ios\cordova folder within your solution. Start by checking your \platforms\ folder for an iOS folder. If you don’t see an iOS folder, simply execute

Next, you will need to copy the build.xcconfig to your overrides folder.
So copy \platforms\ios\cordova\build.xcconfig to \res\native\ios\cordova\build.xcconfig

Lastly, update the override build.xcconfig in your res\native\ios\cordova folder by editing the file and commenting out the last line.

Read More

Getting Started with Story Point Estimation

Story Points are nebulous units of measure. They are not tied to a specific units such as Hours, Man-Hours, Days, or Sprints. Story Points should compare the relative complexity of one Task/Product Backlog Item (PBI) to another.

Story Points will help quantify the amount of work. Again, Story Points quantify work.

If your team is just getting started with Story Point estimation, it’s important to talk about the RELATIVITY of one task to another. You’ll want to start by coming up with a baseline. A baseline is simply picking a task and assigning it a value.

It’s been my experience to use Days to help establish a baseline with the team. So, choose a few Tasks or PBI’s and use estimates tied to days and then quickly break from the idea of days and continue estimating based on the idea of, ‘is this next task easier, more difficult, or about the same as the existing tasks that have estimates’. Since you’ve kicked off the estimation session with days, it’s easy for the team to fall back into thinking about the estimates in comparison with days, but you need to break that line of thinking. Continue estimating newly refined Backlog Items using the relative technique.

If you need to create a burn-down or release plan, start with a reasonable estimate to how many Story Points the team can complete in one sprint. This is called the Velocity – the average number of points completed per Sprint.

If you’re looking for a tool to help the team with estimation, check out which is available for iPhone, Android Phones/Tablets, and on the Web.

Read More

LIFS – Last In First to Start – Daily Standup

There is often a little bit of awkwardness as the team prepares to start the daily standup, who should kick it off? Does the Scrum Master just point to someone? Does someone start it organically? Here’s a technique to try with your teams to streamline the start of your stand-ups.

linepeopleYou may have heard of FIFO – First in First Out, as used in Queue, Inventory Management, etc. However, you may not have heard of LIFS or Last In First to Start.

In your next stand-up, try a LIFS approach to who kicks-off the stand-up rotation. As the team funnels in for the stand-up, the last member to join the meeting, or the call, is the first to start. Then continue to rotate to each team member in a clockwise fashion. Try this approach today! Let me know what success you have had with your teams and this approach by leaving a comment below.

In a rut with your stand-ups? Try another twist on stand-ups, the ‘Walk the Board‘ technique.

Read More

A Twist on the Daily Stand-up, Walk the Board

The Daily Stand-Up is an opportunity in an Agile/Scrum project to inspect and adapt. It gives the team a chance to look at what happened yesterday, what’s the plan for today, and voice any impediments in the way. It’s a time-boxed event, not to exceed 15 minutes but it can definitely end shorter.


The typical stand-up is a round-table discussion where everyone on the team hits on those three points: yesterday, today, impediments.

While this may seem like a great flow, and it is, it gets monotonous and often fails to address other concerns on the team if bad habits form.

So, here’s a twist that you can try with your teams today.

Walk the Board

If you’re half-way, or more, through a sprint, try the Walk the Board technique. The Walk the Board technique involves bringing up the Sprint Task Board and walking the PBI’s on the board. This will call out what tasks are in progress, how anyone can help contribute to them, and when they plan on having them done. It may also allow the team to discuss which tasks they plan on picking up next. After you finish walking the board, still ask the question if anyone has any other comments or impediments.

Read More

5L Retrospective Technique

Looking for a new retrospective technique to try with the team this sprint?

There’s a common Agile retrospective pattern called the 4 L’s, which was made popular by ebg consulting. If you want to read the original version, check out this link 4 L’s

The original technique focuses on four words starting with the letter L, hence the 4 L’s. You’ll need sticky notes, a white board, and some dry erase markers. Write the categories on the board, describe them, and provide an example of something that might fit into that category. Give the team 10-15 minutes to come up with their own topics that fit within those categories and then put them up together. The Scrum Master (SM) should then read the topics within the categories one at a time and spur up conversation. The SM should record any action items on the board as the group discusses.

4L’s Retrospective

  • We liked it when a good thing took on a life of its own.
  • We learned that it really resonated with many folks.
  • We lacked sharing the full understanding of the technique.
  • We longed for more sharing.

Before running this retrospective with my team I took a step back and tried to come up with personal examples for the 4 L’s. I could easily identify with the first three L’s, but I was confused when comparing the difference between lacked and longed for. So I decided I would come up with my own fourth L. After some thought I came up with two new categories, both starting with the letter L, and hence force this retrospective technique will be known as the 5L’s.

5L’s Retrospective

  • Something you liked about the sprint, team, project, etc.
  • Something you personally learned
  • Something the sprint, team, project, etc. lacked
  • Something considered a liability, such as risks, tech debt, etc.
  • Praise, shout-outs, or also known as lauded

Try out this new technique with your team for your upcoming retrospective and let me know what you think. I always enjoy positive and constructive feedback.

Read More

MSSQL Aliases

For those of you that wish to reference your local MSSQL database by any other name than LOCALHOST or MSSQLSERVER (which it’s named by default if you didn’t change it during the installer), you can follow the instructions below to change the name.

Note that this also works with SQL Express installations if you want to have localhost work as the alias for localhost\sqlexpress.

Alias for SQL Configuration

  1. Launch the Sql Server Configuration Manager application, simply start typing from the windows start screen and you should see this executable utility filter to the top.
  2. Click on the SQL Native Client XX.0 Configuration (XXbit) element in the tree, and then click on Aliases
  3. Right-click and select New Alias
  4. In the Alias Name field, choose a new name that you want to reference the server by, ex. localhost
  5. In the Server field, specify the name of the server that you wish to point to, ex. localhost\sqlexpress


Read More

Estimating Tasks with T-shirt Sizes

The Fibonacci sequence and the Mountain Goat modified sequence for Planning Poker (1, 2, 3, 5, 8, 13, 20, 40) are great intervals for Story Point estimation. It’s a great interval for determining the relativity of one backlog item (or user story) to another backlog item. However, these two intervals are cumbersome when it comes to estimating the time it takes to complete tasks associated with a backlog item.

So, the next time you are in your Sprint Planning meeting and you have already planned out the WHAT and you’re ready for the HOW, try T-shirt sizing for task estimates.

Remember that the Sprint Planning meeting can be broken into two sections. The WHAT and the HOW.

The first section of Sprint Planning, the WHAT, is what Backlog Items are we planning to bring into the Sprint. This involves the whole Scrum team, including the Product Owner. Second, the HOW is creating the tasks required to fully complete (per your Definition of Done) each Backlog Item. When you have finished tasking all Backlog Items, look back at the Sprint Backlog and commit/forecast the Backlog Items you plan to complete for this Sprint.

While your estimates for the Backlog should be relatively measured against each other with Story Points, estimates for tasks can be loosely relative and based on the hours it will take to complete the task. If you play Planning Poker with the intervals mentioned above, you may have unnecessary arguments on close estimates. Try this new approach…

T-shirt for Tasks

  • SM – Small – 2 hours worth of work
  • MD – Medium – 4 hours worth of work (1/2 day)
  • LG – Large – 8 hours worth of work (full day)
  • XL – Extra Large – too large to complete in one day, break into smaller tasks!

In the Estimated app, you can change the table’s card format. If you’re in the real-world and you don’t want to download an amazing App, AND you don’t want to use the Estimated Mobile Offline Version, you could create the cards manually.

Good luck and happy estimating! Let me know if you have tried this technique and found success, comment below!

Read More