Quality Conf 16.2 Recap: Logging Like it Matters


On December 16, 2016, DevFacto hosted Quality Conf 16.2 – a full-day internal conference dedicated to learning and team building. A number of sessions were presented by our team members which focused on everything from personal to technical growth. In this post, we recap “Logging Like it Matters” which was originally presented by DevFacto consultant Mark Thiessen.

Read more

Quality Conf 16.2 Recap: Introduction to React


On December 16, 2016, DevFacto hosted Quality Conf 16.2 – a full-day internal conference dedicated to learning and team building.  A number of sessions were presented by our team members which focused on everything from personal to technical growth.  In this post, we recap “Introduction to React” which was originally presented by DevFacto consultant Chris Nissen. Read more

Quality Conf 16.2 Recap: The New SharePoint Framework

On December 16, 2016, DevFacto hosted Quality Conf 16.2 – a full-day internal conference dedicated to learning and team building.  A number of sessions were presented by our team members which focused on everything from personal to technical growth.  In this post, we recap “The New SharePoint Framework” which was originally presented by DevFacto consultants Chris Buchanan and Vili Bogdan.

Read more

How Workshops Work For Us

How Workshops Work For Us

When starting a project there’s a million things to do but little time. Productive meetings are tough at this stage. At a previous client site, a colleague and I went from zero knowledge to having a comprehensive set of features for a mobile app in a single day. Over the course of that day, our group of ten people discussed perhaps hundreds of small features, came to consensus and decided on the relative importance of each idea. After the workshop, participants were enthusiastic and energetic. Someone even said that the day flew by. Here’s how we did it:


Don’t call it a meeting.

The point isn’t to meet, it’s to work.


The right people.

We were very thoughtful about who was in the room, seriously considering what each participant brought to the table. They were chosen to have diverse expertise, be open, and have opinions.


The right space.

Teleconferencing doesn’t work for complex, interactive, fast-moving workshops. For our day-long workshop, we brought healthy snacks, coffee and juice to keep people energized. We took frequent breaks and littered the room with art, toys, and books to inspire new ideas.


The right process.

We used interactive exercises to avoid debates. For most topics, we would get participants to jot down thoughts on stickies, describe the idea in a few words and put it on the wall. The next participant could elaborate, clarify or question the original idea, but only by adding a sticky note of their own. We intentionally stifled discussion, using collaborative creation instead. By doing this we avoided getting stuck on a topic or bogging down in details.



Boyle’s Law (from Dennis Boyle from IDEO) states “Never attend a meeting without a prototype.” By accelerating to prototype as quickly as possible, discussion is tangible and focused. By having something to point at, participants can communicate more effectively, gaps become obvious, and conversation is constrained to realistic ideas.

When you need to get a lot done, make workshops work for you. Many of my ideas came from the Google Design Sprint. Check it out for more detail or drop us a line


Bug or Opportunity?

Bug or Opportunity?

So you’ve built something neat and it’s heading to production soon.

You’ve got pretty good test coverage and your tests are meaningful. You tried to break it as much as you could and couldn’t find any show stopping bugs. You’re proud of your work.

The customer should be grateful to have someone so thoughtful and… uh oh, the customer just sent you an email titled “NOTHING WORKS IN PROD! PLEASE FIX”. All caps can’t be good.

They must be doing something wrong. Someone probably fiddled with a config setting they shouldn’t have or used IE. It could be a bug in the framework.

You move past denial and into acceptance. Nope. It’s a bug and it’s something you didn’t anticipate. You screwed up big time, or so you think…

Hold on to your figurative negative horses, it’s not over yet. This is where the test of your customer service mojo begins. Your next few actions could determine whether the customer forever remembers a negative experience with us or if they become an advocate for our quality and service.

Ask someone who likes Costco why they like Costco. Chances are they won’t tell you they just like buying big stuff that wasn’t on their shopping list when they entered the store. For a lot of people, it’s the amazing return policy. You can return almost anything with or without the receipt anytime. When something goes wrong and you aren’t happy, they make sure that the path to you being happy again is free of obstacles. It’s easy and quick. They listen to you and get right to solving your problem. You just can’t help but love them even more than you would have if nothing had gone wrong in the first place.

My experiences with clients have some similarities. When teams I’ve worked with have been responsive to calls for help and fixed issues quickly, the customer also became an advocate for the team. They probably liked us more than they would have if everything had gone smoothly.

Now, I’m not saying that you should add bugs so that you can fix them and trick clients into loving you. But I do think that we should all keep in mind that fixing issues is often a great opportunity to turn a frustrated person into a fan, depending on how valued you make them feel when they need help and how effective you are at solving their problem.

Remember that your ability to quickly investigate, reproduce, and fix issues in production will partly depend on the quality of the logging you’ve built into your solution. So take the time now to make sure that future you can thank present you for having the right context data and tools available after inevitably receiving that email titled “HELP EVERYTHING IS BROKEN”.

Everyday IA – The Search for Hot Sauce

Today, I was tasked with picking up a bottle of Frank’s RedHot Sauce for supper. Once I entered the grocery store, I began scanning the large hanging boards that list the 6-8 types of items found in each aisle. My previous shopping experience lead me to look for the hot sauce near the ketchup and I know that ketchup is usually classified as a condiment. Unfortunately, I could not see “Condiments” on any of those large hanging boards. I did, however, see “Mexican” on one of the signs and thinking that perhaps hot sauce wasn’t far from salsa (they are both spicy), I ventured down that aisle. Alas, no hot sauce. Read more

Industry Trends: 2015 Summary

As consultants, we get opportunities to work with a variety of clients in different industries. We’re often advising and helping with new ideas and technology and it’s critical that we are up to date and aware of industry trends. Read more

Thinking in the New World of Technology

Technology is constantly changing not just the way we do business, but also the way we think about doing business. It is no longer enough to simply “keep up” with technology or maintain the status quo. What worked in the past, what works now, may not be what sets you apart from competition in the future. Read more

RESOLVED: Encountering Error 1603 While Installing SharePoint 2013 on Windows Server 2012 R2

While setting up some new development workstations, we encountered an error during SharePoint 2013 + SP1 installation which we had seen again and again.

To recap: The prerequisites install fine, SharePoint Setup runs, and then seemingly at the last step, it fails with:

osiserver.msi: “SharePoint Server 2013 encountered an error during setup”, Error Code 1603

Unsatisfied with the workarounds (read MSIBreak or the ORCA tool or changing the number of processors), and after having updated Windows with the latest patches, I called Microsoft and worked for weeks with their engineers at diagnosing the root issue of the problem, which for us was:

The SharePoint ArpWrite action (registering SharePoint 2013 as installed in the registry) attempted to access a missing registry key at HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer

So to resolve this, we wrote the following PowerShell script (run as Administrator):

if(!(Test-Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer)){
New-Item -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer | Out-Null

$regProps = Get-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer

if(! $regProps.logging){
New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer -Name logging -Value voicewarmup -PropertyType String | Out-Null

if(! $regProps.debug){
New-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\Installer -Name debug -Value 3 -PropertyType DWord | Out-Null

And much to our shock, the installation succeeded!

Hopefully, this article can help anyone else out there with this problem until Microsoft publishes a fix or an updated installer.

The Importance of Recognizing a Fundamental Shift

It was the fall of 1876 in the sleepy town of Brantford, Ontario. The town was not known for much yet — Wayne Gretzky would not be born here for another 85 years. However, something even bigger than the ‘Great One’ was imminent. Read more