Mario Cardinal

"The real voyage of discovery consists, not in seeking new landscapes, but in having new eyes" – Marcel Proust


Leave a comment

MVP Renewal Day

Today, while processing my email on this beautiful Canada Day, I was happy to find my MVP renewal among the many messages in my inbox.

mvpFor fifteen consecutive years, I am the proud recipient of the Most Valuable Professional (MVP) award from Microsoft. MVP status is awarded to credible technology experts who have demonstrated their deep commitment to helping others make the most of their technology, voluntarily sharing their passion and real-world knowledge of Microsoft products with the community. While there are more than 100 million technical community members on earth, only a small portion are selected to be recognized as MVPs. Each year, around 2,000 MVPs are honored. They are nominated by Microsoft and other community individuals for this annual award. Candidates are rigorously evaluated for their technical expertise, community leadership, and voluntary community contributions for the previous year. They come from more than 90 countries, speak over 40 different languages, and are awarded in more than 90 Microsoft technologies.

I suspect that I am receiving this award mainly for my outstanding contribution as host of the Visual Studio Talk Show podcast. This French-language podcast, where we discuss software architecture, began in November 2004 (Yes! 15 years ago). With the help of co-host Guy Barrette, we publish a show with a French-spoken technology expert on a monthly basis.

Here is a listing of the podcasts we published lately:

June 5, 2019 0232 – Stephane Lapointe – Gouvernance dans Azure
May 6, 2019 0231 – Laurent Duveau – Vue
April 1, 2019 0230 – Alain Vezina – Le métier du DevOps
March 3, 2019 0229 – Maxime Rouiller – Durables Functions
February 9, 2019 0228 – Etienne Tremblay – Azure Pipelines
January 5, 2019 0227 – Vincent Hubert – IoT
December 9, 2018 0226 – Bernard Fedotoff – SaaS
October 25, 2018 0225 – Frank Boucher – Azure DevTest Labs
October 5, 2018 0224 – Michel Perfetti – Azure DevOps
September 4, 2018 0223 – Fred Harper – Programmer avec le SDK de Fitbit
August 12, 2018 0222 – Eric Coté – React
July 12, 2018 0221 – Mathieu Guindon – Rubberduck VBA
June 4, 2018 0220 – Jérôme Laban – WebAssembly


Leave a comment

Continuous Testing with CI/CD, Rings and Impact Analysis

The key to building quality into a piece of software such as To-Do Studio is making sure we can get fast feedbacks on the impact of changes using a deployment pipeline with continuous testing.

In the last few months, using the Azure Pipelines service, we have worked hard to put this infrastructure in place. It relies on practices such as Continuous Integration and Delivery (CI/CD), deployment rings and impact analysis.

Continuous Integration is about automating build and test processes to make sure the resulting software is in a good state, ideally every time a developer changes code. Continuous Delivery goes one step further by automating a software release, which typically involves packaging the software for deployment in a production-like environment.

Deployment rings were first discussed in Jez Humble’s book. Rings promote a production-first DevOps mindset and limit impact on end users, while gradually deploying and validating changes in production.

Deployment rings are used to advance a software release, built in the initial stage of CI/CD, through a sequence of target users.

We identified four types of users:

  • Ring 0 – Staging : Developers and testers who validate the release before deploying it to real users.
  • Ring 1 – Alpha : Close circle of employees and volunteers who test new features as they become available.
  • Ring 2 – Beta : Early adopters who voluntarily preview releases, considered more stable than the ones in Alpha.
  • Ring 3 – Users : Users who consume the service, after passing through the alpha and beta early adopters.

rings

Let’s look at how a change goes through the deployment rings.

continuous-testing

  1. A developer commits a change (checkin) to our source code repository.
  2. The checkin triggers a Continuous Integration (CI) build.
  3. The last step of the continuous integration launches a continuous delivery trigger, which automatically starts deployment in the staging environment.
  4. The deployment publishes a new release to the Staging ring. Only the developers and testers are impacted by the change.
  5. The deployment publishes a new release to the Alpha ring. Only the Alpha users are impacted by the change.
  6. The deployment publishes a new release to the Beta ring. Only the Beta users are impacted by the change.
  7. The deployment publishes a new release to the Users ring. At this stage, everyone is affected by the change.
  8. It’s key to realize that the impact (“blast radius”) increases as your change moves through the rings. Exposing the change to the Alpha and the Beta users, is giving two opportunities to validate the change and hotfix critical bugs before a release to everyone.

At each ring, an impact analysis is performed. In case of insufficient quality, the deployment is rejected, and the developers must correct the problems. The process must then start over again. Impact (also called blast radius), is evaluated through observation, testing, analysis of telemetry, and user feedback. We rely primarily on the Application Insights and Azure Monitor services to perform the impact analysis.


Leave a comment

Subscribe to my Newsletter

Since a few months I publish a newsletter for my family and friends. One of the objectives of this newsletter is to share my entrepreneurial journey. It contains the latest news about To-Do Studio, the startup I founded with Erik Renaud. Our company designs and markets a software service that allows leaders to empower others to take initiative. The newsletter is intended to offer a privileged look at the path of a startup company.

newsletterEncouraged by the positive comments I receive, I decided to give access to the newsletter to readers of this blog. That’s why I invite you to subscribe to my newsletter.

Here is the link to subscribe: Destination To-Do Studio

The newsletter is free. It is published every 2 months, 6 times a year. The subscription does not require any obligation on your part. The only information you must provide to register is your email address (it will never be shared with third parties). You can unsubscribe at any time. If you wish to preview the content of the newsletter, I invite you to read the first issue here.

PS. Following registration, if you do not receive quickly a confirmation email, check your Junk Email inbox.


1 Comment

Market Positioning Statement

As I stated in a previous post, the first challenge facing startups is to find their Product/Market Fit. Product/Market Fit means that the solution (the product) is well suited to its target problem (the market who experienced the problem). To find the right Product/Market fit, you must not only fulfill a job-to-be-done but also ensure you have an obvious competitive advantage.

competitive-advantage

Startups that have a competitive advantage create a sustainable future for their businesses, with products that can grow and generate profits long after the initial launch.

During my master’s degree in Innovation and Technological Entrepreneurship, I learned to capture and formalize a competitive advantage using a “Market Positioning Statement”. Positioning is a choice of attributes that provides a credible, different, attractive and sustainable position within a marketplace and in the minds of customers. The positioning communicates what makes a product unique and different.

This statement usually comes in a form that looks something like this:

For [Target Market] who [Statement of Need], the [Product Name] is a [Product Category] that [Key Benefit / Reason to Buy] unlike [Competitors] our product [Primary Differentiation]

Here is the rendition of the Market Positioning Statement for To-Do Studio:

[Target Market]
Modern leader

[Statement of Need]
Want to avoid the hassle of follow-ups and tough talks that occur when pushing and pulling others to take initiative

[Product Name]
To-Do Studio

[Product Category]
Collaborative work management service

[Key Benefit / Reason to Buy]
Guides teams to self-organization

[Competitors]
Other current solutions such as chats, emails, calendars, to-do lists, kanban boards, spreadsheets or project managers

[Primary Differentiation]
Get things done because each teammate works in tandem with an automated guide (personalized coaching), that not only provides a daily schedule, but guides and directs the involvement (throughout the process)

Here is the positioning statement in sentence form:

For the modern leader who wants to avoid the hassle of follow-ups and tough talks that occur when pushing and pulling others to take initiative, To-Do Studio is a collaborative work management service that guides teams to self-organization. Unlike current solutions such as chats, emails, calendars, to-do lists, kanban boards, spreadsheets or project managers, To-Do Studio get things done because each teammate works in tandem with an automated guide (personalized coaching), that not only provides a daily schedule, but guides and directs the involvement (throughout the process).

The key competitive advantage of To-Do Studio is its automated guide (personalized coaching).


1 Comment

For five years we have been searching for the right Product/Market Fit

Often, I summarize the To-Do Studio journey saying that it took us five years of research and development (R&D) to find a simple and elegant solution to the following problem: How to allow teammates to complete a common to-do list? The reality is much more complex.

What I describe as R&D is rather a long quest to find the right Product/Market Fit. Of everything I discovered applying the Lean Startup practices, Product/Market Fit is the concept that remains the most inspiring for me. Compared to some other concepts such as MVP that I first discovered through reading The Lean Startup, Product/Market Fit is much less famous outside of the startup scene.

Product/Market Fit means that the solution (the product) is well suited to its target problem (the market who experienced the problem). Startups that achieve Product/Market Fit create a sustainable future for their businesses, with products that can grow and generate profits long after the initial launch. The life of any startup can be divided into two parts — ’before’ Product/Market Fit and ‘after’ Product/Market Fit. Obviously, to this day, To-Do Studio is in the ‘before’ part. Our goal in 2019 is to move into the ‘after’ part.

Over the last five years, using ongoing build-measure-learn cycles, we have progressed toward validated learning. Every day we had new assumptions for building the product, new measures to check results, and new learning opportunities that brought us closer to Product/Market Fit.

On the other hand, on three occasions, we abandoned perseverance and opted instead for a pivot. Pivoting is what you should consider when you conclude that you’re not making any progress (or not enough) toward Product/Market Fit. A pivot is a radical course correction, going in a new direction, with a new strategic hypothesis regarding the problem or solution space. In pivot mode, the unit of progress is creative destruction.

Here is a summary that presents the radical course correction of each pivot:

Problem Space Solution Space
Launch
April 2013
New market

For teammates who want to improve outcomes from shared accountability and aligns individual responsibility with team workflow

New product

Boards that guides collaboration between teammates using sticky notes to represent work items and columns to represent each stage of the workflow

Pivot 1
May 2014
New market

For individuals who want to schedule commitments and get a unified view of their “daily” commitments

New product

Daily planner that organize work by pairing a daily calendar with a list of to-do items. It keeps track which to-dos remain to be started, which are in progress and which are done.

Pivot 2
Sept 2016
New market

For people adopting work-life fusion who want to split their workload with their close ones

Product Evolution

Collective workspace that expands on our previous product by allowing to team up with others through a common list of to-do items, synchronized among teammates

Pivot 3
Jan 2018
New market

For leaders who need to empower others to get things done and want to avoid the hassle of follow-ups and tough talks that occur when pushing and pulling others to take initiative

Product Evolution

Collective workspace that expands on our previous product by providing each teammate with an automated assistant (personal coach)

A first interesting observation is the elapse of several years between each pivot. This can be explained by the following reasons:

  • The discovery process requires time. Making the right assumptions and finding out why they are not working is hard and time consuming;
  • For entrepreneurs, deciding to persevere against pitfalls is always the first choice. It takes a long period of thinking and many failures to agree to pivot;
  • In bootstrapping mode, since entrepreneurs divide their efforts on two fronts, the discovery process is much longer. They must complete the contracts that finance the business while continuing to pursuit the Product/Market Fit.

A second interesting observation is that each pivot involves a creative destruction of the target market. It seems that entrepreneurs are poorly equipped to define the problem space. As a convergent thinker, an entrepreneur is much more likely to focus on the solution than the problem.

The good news is that correctly identifying a problem space is a knowledge that can be learned. In our case, it was in December 2017 when I discovered the “Job to be Done” innovation approach. This acquisition of new know-how led us to our most recent pivot.

“Job to be Done” innovation approach presents a product not as a set of functionality but rather as a solution that a customer hires to get a job done.

Here are two blog posts I wrote following my discovery of the approach. It describes the positive impact it has on our quest to discover a better Product/Market Fit:


3 Comments

Configuring Cypress in CI with Azure DevOps Pipelines

Cypress is a front-end test automation framework built for the modern web. It is open source and written entirely in JavaScript. It addresses the key pain points developers and QA engineers face when testing modern applications:

  • A rich yet simple API for interactions with automatic waiting
  • Mocha, Chai, and Sinon bundled in
  • A sleek dashboard with automatic reloads for Test-Driven Development
  • Easy debugging
  • Network traffic control for validation and mocking
  • Automatic screenshots and videos

It is a very powerful tool that enables developers to write End-to-End tests entirely in JavaScript, directly accessing everything within the browser. It is also a versatile tool that can be used to test REST APIs.

At To-Do Studio, we use Cypress to test End-to-End scenarios, as well as REST APIs.

On developers’ computers, we install the Cypress Test Runner and write tests locally. Everything works perfectly. However, for CI/CD testing, we must configure Cypress with Azure DevOps Pipelines. The recipe for configuring Cypress is not as simple as it may seem at first. I’m writing this post to make sure that a configuration recipe is documented somewhere on the web to explain how to configure Cypress in Continuous Integration (CI) with Azure DevOps Pipelines. Thus, with the help of Google search, those who will have the same goal in the future will find the right answer easily.

Here is diagram presenting an overview of the major elements of the solution:

Deployment_overview

First, ensure during the build phase that the cypress tests files are zipped and published to the artifacts drop.

build

Second, during the release phase hosted on an Ubuntu agent, extract the zipped test files,run the tests using Cypress and publish the tests results. Here are the detailed steps:

1. Extract the zip file containing the tests

Extract the zip file that was published to the artifacts drop by the build pipeline.

extract

2. Run the tests

Start by creating the Cypress config file. Define the location of your tests with the integrationFolder configuration value. Do not use the testFiles configuration value or –spec command line option.

{
  "integrationFolder": "tests/e2e/specs",
  "baseUrl": "https://info-staging.to-do.studio",
  "projectId": "<insert your project Id>",
  "reporter": "junit",
  "reporterOptions": {
    "mochaFile": "tests/test-output-[hash].xml",
    "toConsole": true,
    "attachments": true
    },
  "video": false,
  "pluginsFile": "tests/e2e/plugins/index.js",
  "supportFile": "tests/e2e/support/index.js",
  "env": {
    "urlEnv": "staging"
  }
}

cypress_config

Follow by running the tests with Cypress using the command: npx cypress run –record –key <insert your record key>. npx install and run Cypress in a single step. npx is a npm package runner (x stands for eXecute). The typical use is to download and run a package temporarily. Please note that if you intent to record screenshots and videos with Cypresss Dashboard Service, you need to add the unique projectId into your cypress.json and pass the record key into the command. If you do not need visual results, simply omit the recording option and projectId.

run_tests

3. Publish the tests results

Here you will publish the junit mocha files created during the tests run. Make sure that your merge test results and that it fails if there are test failures.

publish_tests


Leave a comment

Virtual Studio: the Workplace of the 21st Century

The name of our software service To-Do Studio is a combination of two words: To-Do and Studio. We firmly believe that this name association correctly explains our product’s mission. We chose the word To-Do because the team work is performed via a common list of To-Do items, synchronized among teammates. We added the word Studio to indicate the creative and collective aspect of our service. A studio is a place of creativity, a collective workspace where teammates take initiative and assume responsibilities.

Just as Seth Godin, author and successful speaker on marketing issues, recently wrote on his blog, the studio is the modern workplace. Here’s how we paraphrase his words:

The success of leaders in a factory is based on compliance. More compliance leads to more profits. Do what you are told, faster and cheaper, and repeat.

The factory is a legacy of the twentieth century.

The studio, on the other hand, is a place of initiative and creativity. The initiative to create new things and better things. In short, a process that leads to better things.

It’s a peer to peer relationship. The hierarchy has virtually disappeared. All that remains is leadership.

This is the initiative coupled with responsibility. Authority is much less important, as are traditional measures of productivity.

You can distinguish a studio from a factory in minutes. Where do you work?

You can read the original post on Seth Godin’s blog here.

We are convinced that the studio is the future of work and that it will evolve toward a marriage between the physical and virtual world thanks to software such as our. We envision that each team will want to work with the help of a virtual studio. And we are determined to ensure that, for most companies, this virtual studio is To-Do Studio.

The virtual studio is the workplace of the 21st century.