Scrum Debates: Story Pointing Bugs

Our company adopted scrum as our method for development over a year ago. And to this day, we’ve yet to get it entirely right. Over the months we’ve had to address issues ranging from “What do we do when critical issues come up?” to “Who should be a part of our daily scrum meeting?” to “What the hell is a story point anyway?” But one such problem that our Product owner recently brought up is, “Should we really be story pointing bugs?” And the answer, of course, is… well, actually, no one can really agree on an answer.

Well, let’s start out with why we all originally said yes. In any given sprint, our team will have to commit to some handful of stories and bugs off the top of the product backlog. If both the stories and bugs are story pointed to the same scale, then we have no problem deciding how much we can commit to this sprint given our previous velocities. And for a while, this worked fine.

But let’s look at this from the product owner’s point of view. Let’s say we’ve just released the next version of our product and now our product owner is looking over the backlog, trying to figure out how many sprints we’ll need to complete the required features (let’s say there are 10) we need for the next release. Each of these features gets defined as a story. For the sake of simplicity, let’s say they all have a story point value of 10, resulting in a total of 100 story points. In our past sprints, our velocity has averaged 20 story points. So our product owner can set the next release date for five sprints from now. Easy! Continue reading Scrum Debates: Story Pointing Bugs

Macro Security Settings in Excel 2007 and 2010

What is the problem?

A customer was exporting Excel reports by OfficeWriter to the XLSM format and was alarmed when he opened his output and saw a security warning:

Some active content may have been disabled:

 

 

Obviously, anyone who hadn’t experienced the Excel Trust Center Security Warning before could easily have been alarmed by this.

What is going on?

The security prompts are caused by the settings in Excel’s Trust Center, which was introduced in Excel 2007. Basically, when a workbook is opened in Excel 2007 or 2010, it is automatically run through the Trust Center feature for security reasons. Excel’s behavior for handling workbooks with macros will change depending on the settings selected in the Trust Center.

Some notes about Trust Center security warning messages
  • Some active content may have been disabled indicates that there are multiple types of active content that have been disabled, not just macros. If the workbook contains just macros, the security warning will read Macros have been disabled.
  • In Excel 2010, the security messages are the same, but the coloring makes the warning more obvious. For more information about the difference in the security warning between Excel 2007 and Excel 2010, check out this article.

To get to the Trust Center: Office button > Excel Options > Trust Center > Trust Center Settings. And on my left, Macro settings:

 

For example, say the ‘Disable all macros with notification’ option is selected. This is the default macro security level for Excel 2007/2010 and this setting will prompt the user to enable macros anytime the workbook is opened. The end-user can change the security setting to ‘Enable all macros’, and then macros will run without the prompting.

For more general information about Macro security settings, please refer to this Microsoft article: http://office.microsoft.com/en-us/excel-help/change-macro-security-settings-in-excel-HP010096919.aspx

I am developing a workbook with macros. How can I avoid having the Trust Center prompt my end-users?

A note about macro security settings
Enabling macros to run without prompts could be potentially dangerous if a workbook contains malicious macros. The security prompt is designed to prevent macros from running unless the user decides they are safe to run. Each of the following suggestions will allow macros to run without prompting, which may harm your computer if the macros are malicious

Since the Trust Center’s settings are determined on a per-user basis, depending on which security settings the user has selected, the behavior the end-user experiences may vary. Here are some ideas for avoiding the Trust Center security prompt:

Digitally sign the macros (recommended)

One of the macro settings is to ‘Disable all macros except digitally signed macros’. This means that if the macros are signed by a Trusted Publisher, Excel will run the macros without any security prompts. All unsigned macros will still prompt the user to enable them, but they will not be prompted for workbooks that contained macros signed by the Trusted Publisher.

This Microsoft article explains how to digitally sign a macro project: http://office.microsoft.com/en-us/excel-help/digitally-sign-a-macro-project-HA001231781.aspx

After you have signed the project, the end-user will need to add you as a Trusted Publisher. This is explained below.

The first time the user opens a workbook with signed macros, they will be given the following options:

  1. Help protect me from unknown content (which is to leave the macro disabled)
  2. Enable this content (enable for one-time use)
  3. Trust all documents from this publisher (enable all macros from this publisher).

Instruct the end-user to select Trust all documents from this publisher, which will add the publisher who signed the macros, you, as a Trusted Publisher. All subsequent workbooks with macros signed by you will not display security prompts when opened on the end-user’s machine.

For more information about Trusted Publishers, please refer to this Microsoft article: http://office.microsoft.com/en-us/excel-help/add-remove-or-view-a-trusted-publisher-HA010034138.aspx?CTT=5&origin=HA010167227

Use a trusted location (not recommended in some cases)

If a workbook is opened from a trusted location, it does not go through the Trust Center. This means that regardless of the Trust Center settings, Excel will run the macros in the workbook without any security prompts. Trusted locations should always be secure and trustworthy.

If your end users are opening the workbooks directly from the browser cache (e.g. the workbook is streamed to the client from a web application), DO NOT tell them add their browser cache as a trusted location. The browser cache is an easy target for hackers who can force the browser to download potentially comprimised workbooks. This is not to say that trusted locations are never recommended. For instance, your end-users could specifically designate another location as trusted, and copy any files to that location before opening them, which is the secure way to use trusted locations to avoid the security prompts.

Here is a Microsoft article that discusses trusted locations: http://office.microsoft.com/en-us/excel-help/create-remove-or-change-a-trusted-location-for-your-files-HA010031999.aspx?CTT=5&origin=HA010167227

Enable all macros (not recommended)

This option runs all macros without prompting. This is NEVER recommended because it potentially exposes the end-user to malicious macros, even if your macros are safe.

Macro Settings in Excel 2003

If you are using Excel 2003, the macro settings will be different. Excel Hints has a good overview of those settings here: http://excelhints.com/2010/08/06/adjust-the-security-level-in-excel/.

Working around history.back() bug in BlackBerry Torch browser widget

I’m on the team working on Pylon, a smartphone app which allows the user to approve Nintex tasks, among other things. It currently uses BlackBerry Webworks, which is a platform that uses HTML and JavaScript in the UI. On one screen we wanted functionality that would send the user back to the previous screen (as if they clicked the back button). The way to do this in JavaScript is:

history.go(-1);

or

history.back();

However, in my testing this did nothing on the BlackBerry Torch running OS 6, or on the Torch simulator. I found a workaround which works on most OS 5 and 6 devices (see Caveat for the exception.)

Basically, I needed to write a Webworks extension function to trigger the behavior from Webworks. Continue reading Working around history.back() bug in BlackBerry Torch browser widget

Notes from the User Testing Files: Content Grouping


[Photo Credit: Jocko B]

Useability testing, be your testers sheep or goats, is a fascinating, frustrating and (hopefully) enlightening process. Once you’ve chosen your tasks and assembled your testers, you sit back and watch them use your site. Grapple with it, actually. You wonder: Why are you looking there? Don’t you see that tab? Can’t you tell this is a local search? Whyyyyareyoudoingthatstopitanddoitright!

This sort of thinking is counter-productive.

Your poor, beleagured tester is doing this instead of that because that is not obvious. Or, alternatively, this seems to be a more likely goldmine than that. If the latter is the case(something you’ll need to ask the tester during the debriefing bit) then it’s time to rethink your categories.

Let’s say you run an online boutique that sells clothing for dogs, quechiccanine.com. Um, yes, these exist! And no, I don’t dress my dog in argyle. Yet. Continue reading Notes from the User Testing Files: Content Grouping

T-SQL Tuesday 016: When is yesterday, exactly?

This is my contribution to the “recurring, revolving blog party” that is T-SQL Tuesday. Thanks to this month’s host, Jes Borland, for the topic!

On a consulting project some months ago, our client had a database full of daily financial data. For every day that the markets were open, we had a row with some data about the trades that had happened that day. If we ignore all the sticky details, it looked something like this:

date high low
3/8/2011 10 8
3/9/2011 11.5 9
3/10/2011 10.5 8.5

One of the reports we wanted to generate from this data was a day-on-day comparison, where each day’s high and low were compared with the previous day’s to see how it was changing. The goal was something that looked like:

date today’s high yesterday’s high change today’s low yesterday’s low change
3/9/2011 11.5 10 +1.5 9 8 +1
3/10/2011 10.5 11.5 -1 8.5 9 -.5

Continue reading T-SQL Tuesday 016: When is yesterday, exactly?

How to Assign ASP.NET Development Server to a Specific Port

Recently I was working writing a .NET web service as well as a client application to access this web service. I like to continually test throughout my development, and I noticed that this time, the .NET development server continued to switch ports every time I ran my application. This forced me to change my URL in my client app each time I ran the application as well. To resolve this issue I set the development server to have a static port instead of a dynamic port. Here’s how to do it: In Visual Studio 2008 if you’re using a web application project, right click the project and select properties. You will see the following web tab:

 

 

 

 

 

 

 

There you can set the specific port. In my case I set it to port 8080, but you can set it to anything you would like.

 

Automating Installation and Uninstallation for SharePoint 2010 Farm Solution

I’ve been trying to figure out how to automate the process for uninstalling a farm solution in SharePoint 2010. This is a two-step process:

  1. Retract the solution from the farm
  2. Remove it from the solution store

Unfortunately, you can’t perform the second operation right after the first, because there’s a delay when SharePoint retracts a solution. The delay can be several seconds, so you can either wait, or do something else while remembering to perform the second step.

Similarly, when installing a farm solution, you must first add it to the solution store before deploying it. Deployment can also take several seconds. In this case the delay is less inconvenient because you can let it run and work on something else, but it’d be nice to know when deployment completes. Continue reading Automating Installation and Uninstallation for SharePoint 2010 Farm Solution

Installation Error 1327

What’s the problem?

I was working with a customer who was faced with the following error message during her installation of OfficeWriter: Error 1327: Invalid Drive: H:

When she looked in ‘My Computer’, there was no H drive on hard disk or mapped to a network location. She was baffled as to why the installation was trying to point to an non-existent drive.

What’s going on?

Error 1327 occurs during any basic installation when there is an incorrect value in the Data field in some of the Microsoft Windows registry keys. This issue is addressed by Adobe in this article and by Robert LaThanh in this post.

How to resolve the issue:
  1. Open regedit and navigate to each of the following registry keys:
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
  2. Check to see if any of data values point to a drive that is not mapped to in your computer (either on hard disk or a network location). In particular, look to see if any of the data values point to the drive that the 1327 error mentioned.
    In the case of the customer, one of the data values in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders was set to H:\Favorites.
  3. If there are any incorrectly mapped data values, modify the values.
    The customer changed the value from H:\Favorites to %USERPROFILE%\Favorites and that resolved the Error 1327 issue.

Here is a sample of what the particular corrected registry key should look like:

 

WARNING: When modifying the registry, make sure you back it up!

Since the solution involved modifying registry values, it was important to make a back up of the registry, so I sent her the Windows 7 instructions for backing up the registry. Microsoft also has articles for backing up Windows XP and Windows Vista.

Notes from the User Testing Files: The Sheep-Goat Effect

Recently, I referenced  something quite obscure – the “sheep-goat effect”. The reason I say  “quite obscure”  is that no one had any idea what it was. And I spoke to literally scores of people. The “sheep-goat effect” was coined in ESP experiments whereby people who believed in ESP did significantly better than those who did not believe in ESP on ESP-type tests. The believers were called “sheep” and the non-believers, “goats”. The “sheep-goat effect” is therefore used (apparently by only a very small handful of people aside from me, if at all), to illustrate that the belief in something can have a causal effect on that event happening.

So why was I making this reference in the first place? Because the sheep-goat effect goes beyond ESP tests–it can be a very powerful concept in marketing.  This is especially true if your product or service is not widely accepted, is novel or is subject to public skepticism (like ESP).

Marketers love to gather feedback – by way of surveys.  Just Google how to create a good marketing survey and you’ll run across suggestions regarding target groups and sampling. Here are a few you’ll find regarding target group: Continue reading Notes from the User Testing Files: The Sheep-Goat Effect

Side-by-Side Data Markers (3 of 3)

BACKGOUND:

The ExcelTemplate method of creating Excel files is to design a template in Excel that contains data markers. Data markers are cell values that begin with %%= or %%=$ that specifies a database column, variable, or array to insert into the spreadsheet column. ExcelWriter does this by inserting a new row into the worksheet for each row of data being imported. This means that anything below the data marker in the template will be pushed down as the new rows of data are imported.

Data markers from the same data set can be placed next to each other, but placing data markers from different data sets side-by-side in an ExcelTemplate can cause extra rows to be inserted into the smaller data sets.

This series of posts explains how to get rid of the extra rows in output files that result from placing data markers side by side. If you’re not a current ExcelWriter user, you can download a free evaluation and follow along!

PART 1: Updating displayed ranges from hidden ranges
PART 2: Clearing out bad content

Part 3: Putting it together

For each named range in the workbook, UpdateRange() will need to be called. For each group of side-by-side data markers, ClearBadDisplay() will need to be called. I put UpdateRange() and ClearBadDisplay() in a module and called the following code in the WorkbookOpen() event: Continue reading Side-by-Side Data Markers (3 of 3)

Blogged