An open letter to Jessica McDonald, President and CEO of BC Hydro

Sep 29, 2015

Dear Jessica,

First, let me express my sincere recognition of the tremendous responsibilities that you have on your shoulders. I do not envy that. You are doing a great job at running our province's lifeline, literally for many people.

I read your open letter about the website outage last month and I'm not terribly impressed by it. Yes, we all know that it was a big storm and that there were many outages. We know that your crews worked day and night to get the power back on for thousands of people around BC. The letter was supposed to be about the website, and yet only one paragraph in the entire letter was dedicated to describing what actions that you're going to take to ensure this type of outage does not occur again.

As a professional website developer, responsible for the hosting and maintenance of many websites for my business and clients, I have learned first-hand several ways to optimize websites to ensure that they are lean, mean and performant for my clients. This is important for their businesses and their customers.

A quick review of the BC Hydro website shows that it's not following several 'best practices' that are now very common and well-known in the website industry. Running the site through Google's freely-available PageSpeed Insights tool gives very low scores for both Mobile and Desktop experiences. This is unacceptible for a company the size and importance of BCHydro. I'm a one-man operation and I build websites far more performant for my clients, and I don't have contracts worth thousands or tens of thousands of dollars (I wish I did!). I deliver this level of service for my clients because it's the right thing to do. Your current website developers are failing to do this.

As clearly explained in the PageSpeed Insights analysis, there's several straightforward actions that can be taken to improve your website. Simply increasing the capacity is not sufficient. The architecture needs some improvements.

Here's a few suggestions for consideration:

Deliver static assets — images, JavaScript and CSS files — through a distributed content delivery network, not through the same bchydro.com host as your website.

Make the "Power Outages" section an entirely separate website, on separate servers (such as "outages.bchydro.com"). This helps to distribute the load and helps to avoid the single-point-of-failure that you experienced.

... and as you said in your letter, ensure redundancy for the website(s) as a whole. Additional servers spun up when the demand increases.

These are established best practices for large and small websites. I employ some of these practices for my own small clients, even if they only have 10 visitors a month. Because it's the right way to do it. The investment is minimal, but the resiliance and stability for everyone is dramatically improved.

Thank you for taking the time to read this letter, and I hope that you found this information helpful.