The Push for Go-Live (AKA the change we have been waiting for)

I sit at the keyboard with my hands shaking and sweating. I stop to remember all the memories that we experienced on this project. The joking about the family time we have spent on the project for “our” families. The picture with the team next to the Jesus poster. It was 2 am the day before the go-live. I smile about this moment. I was middle of a storm but at least we have good joke about it. I remember the night a fellow team worker forgot about his wedding anniversary that happened the previous month. Him running to the store to buy a gift card and the team helping him write this card.
In the middle of the project, I remember a teammate family having a car accident and driving off a mountain road and flipping several times. This reminded me that jobs will come and go but you will always have family. Looking back I learned on this project that if you don’t give time for yourself (personal, children and family) you can not thrive in life. You need to have a thriving life to succeed in life and business.
I am not a perfect person but my faults define me as a unique person. A child personality is defined when the child says no and the caretakers listen. This is a lesson I am learning currently, with my daughter.
Change is hard. I am the type of person that would love to live in one house my whole life (no change). I am now at at a spot with change on the horizon. The cards show the Pettinger family moving back to Denver. We will not be moving right now. We have time to sell the house and then move to Denver.
We are happy about the moments we had in Bellingham and the friends we have. We always have new babies running around and families waiting for the baby to arrive. You can always have someone to understand the challenges with the lack of sleep and the difficulty with boys aiming at the toilet.

NP Complete in the real world

Every time I have been asked to look at something that is a difficult and has not been resolved in the first tier support. 90% of the problems are easy to resolve especially if it is my specific technical knowledge. 10% of the problems are a challenge. The tricky challenges tend to have solution that is not straight forward.From a high level each could be defined in the following categories

  1. The website is slow and needs to be fast. Followup what are the downsides for implementing any performance improvement and my options.
  2. Why does the website have this issues and I need it fixed to do something else?
  3. Please make my website pretty and modern
  4. How can I reproduce this error?

The death of Monolithic Commerce

I just heard a quote from Elon Musk. The guy that takes on big projects and tries the impossible. The quote is “if the design is taking along time the design is wrong.”

In the science of programming, you have multiple classic dichotomy. The idea is you can be one or the other but never both. The most classic of this debating is monolithic vs microservices. This specific debate has been talked about since the beginning of technology and before the internet.

To understand the debate we need to look at the 1st major debate to have this debate. The debate centered on if the operating system should be designed as one large system doing everything or multiple systems interacting together. In the end linux was designed using a monolithic approach. Understanding the reasons why linux succeed using the monolithic approach will help us understanding why it fails to succeed in commerce.

The 1st reason why Linux succeed with a monolithic approach was everything was under one roof. The other operating system Linux was competing against was GNU using the Microservice approach. GNU had trouble from the start because of multiple separate subsystem developed by multiple people. The challenge is you are guaranteed to need integration testing and new bugs will be identified. A redesign could be required on a subsystem due to a bug that impacts a separate subsystem. GNU had the redesign issue multiple times. This happened because the design was brand new and the challenges were unknown. In commerce, the challenges are well understood and the multiple players have the best approach. The problem is no one player is master of everything. Salesforce and Adobe are trying.

At the end of the day monolithic requires one person to be the engineer/designer. This person needs to stay around for year upon years to have a positive impact. You need one chef in the kitchen during the life span of the software. Linux has Linus Torvald. In business reallying on one person is a bad business decision. This one person becomes the bottleneck. What happens if the person is hit by a bus? In business especially IT you need a team to meet the business needs. You need to adapt quickly.

Linux is something that Ph.D. scientist design, test and analyze. You put on the resume with proud if you ever submitted and was approved a code fix to Linux. The requirement to design a new component for Linux are extreme and the reviews are legendary. Linus has been known to hostility attack anything he deems as stupid. On commerce website business wants everything to be quick, easy and reliable. The business wants be able to have one-click checkout on a facebook advertisement. They don’t want to wait until the next decade before it is ready. The business needs everything to be simple and reliable without a rocket scientist.

Linux was able to embrace the fact that you do not want to best at everything. Linux works and is known to being reliable for decades. It not the best at anything but the good on average. In commerce, you can not be good at everything. I have worked with execillent software that provides a excellent search results, analytics, content entry, document management and payment provider. I have not found one vendor that can developer a exacellent experience all around. In the global ecommerce market today you need to be competive. To be competive you need to have a excellent website all around. To be competivie you need to have a suite of software. To be competive you need to abandon monolithic and embrace headless.

The Linux system has been able to improve over time with little impact to end users. End users rarely have a issue during a upgrade. It takes 5 minutes and you are upgraded. In Monolithic Commerce each implementation is customized. The reason why each installation is customized because no single vendor has been able to do everything excellent in Commerce. The commerce website always need to adapt to meet the business basic needs. Due to the customization, each upgrade is a risk and costly. I have seen multiple times where the cost of the upgrade was close to the cost of the actual implementation. You can especially this impact when the Commerce engine changes the front end technology. The problem is about every 4 years the front technology land scape is changing. The challenge what is possible today was not possible 4 years ago. What we optimize to today is different from what I would have optimized 4 years ago. Each time the technology to reach the user has matured (Web browser) and the method to reach the audience has adapted (social media platforms and advertisement).

By going with the monolithic approach is slows down the design process and the time to deliver. Locks the technology into one specific platform and force the website to be mediocre by ignoring the best of the breed. As Elon Musk say if you slowing down the design you need to change your design. You need to embrace headless to meet your business online strategy today and the future. Today you are the leader by embracing the technology. Tomorrow you will be the one still trapped and slow if you stay with Monolithic commerce.

The soft sell of Headless Commerce

I have a old client that has a classic challenge in the Commerce world. The problem is the client is using a Monlithic Commerce Software (Insite). The website was originally implemented multiple years ago. It was an optimized, simple and beautify website. The website has allowed the company to embrace online ordering and grow against the giants like Home Depot. The problem was the website was created multiple years ago. Time of changed. The market place of the past slow adapts to the change of times. When the website was created the only place you could by and find the product was only the companies website. Now the company wants to be able to sell on google and amazon. Previously you just need to have a website and a sitemap for people to find you. Now the times have changes. Now you need to have a special webpage (AMP) to be featured at the top of the webpage. Now you need to have a special markup to allow google to identify the product details. Now you need to upload a special product file to work with Amazon or a punchout provider.

The client was under the impression staying up to date with a monlithic application would be easy and simple. This was far from the truth. The monolithic application has had multiple major versions. Everything has changed including the field names. Each major version has had a different architect and caused different approach to match the architecture. Each major version could be consider a seperate commerce application. The only thing that stays the same is the name of the application. You are not guarantee the latest version is the best version.

The client needs to embrace headless commerce.

Steps to resolve Sitecore Commerce Certificate with thumbprint is not within a valid time window.

ClientCertificateValidationMiddleware: Certificate with thumbprint C18A42CDF58D769F2774D94367018CFBA7A2E89B is not within a valid time window.

1) Open PowerShell as admin

2) Run

New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname “woodward.sc”

3) Copy the thumbprint returned in the result.

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint Subject
———- ——-
E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD CN=woodward.sc

4) Edit the following files

  • C:\inetpub\wwwroot\CommerceAuthoring_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceMinions_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceOps_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceShops_Sc9\wwwroot\config.json

5) Replace the thumprint value with the value just created and save the change

            "Thumbprint": "E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD",

6) Edit C:\inetpub\wwwroot\woodward.sc\App_Config\Include\Y.Commerce.Engine\Sitecore.Commerce.Engine.Connect.config

Replace the certificate thumbprint

<CertificateThumprint> E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD</CertificateThumbprint>

7) Run IISRestart