"Like this site" and the dot product

It someone wants a complete copy of a website, this should be a warning sign. Copying at scale is bound with ethical and legal problems, which can quickly sink someone who is just starting in the field. That said, not only is a 1:1 copy very hard to achieve (no two sites are alike), but it would mean that the designer would need to compromise their creative freedom and create something that already exists in the marketplace. But as almost everyone knows, me-too sites are rarely as successful as their original counterparts. So they may become costly without providing a lot of benefit to the client or the designer. Multiplying the sites, their functionality or even user base contributes to making the web look as a distasteful assembly line—the one we were trying so hard to avoid in the past.

Partial copies of websites also aren't much better, but this is not obvious at first. Until we see how duplicating one functionality from one site and another one from another site leads to websites that are mashups of services. Services which can fail at any time without giving warning signs and for which we may have no useful fallback when this happens. Moreover these services are often inconsistent with each other in the way they are implemented and designed and in the assumptions they make. If the brand colors should have been only black and red, now the site needs to introduce buttons of various colors belonging to each service. Before we know it, we suddenly have the full mix of colors on our site. Moreover, few services would change their elements according to the color palette of a given brand. While using external services (which is a form of partial copy) gives us a sense of control, the reality is that we are not left with much. Every foreign element we insert starts to gather information from our sites, making us someone else's product. And it starts to weight too. And we need to always agree with the service limits and policy changes without asking too many questions.

“Like this site” could also be a symptom that the client doesn't have enough clarity of what they want. Working on any project with no clear goal is not much better than working on no project at all. Without enough clarity about the details, a project will lead to failure and this will hurt both the designer and the client. A designer who could foresee the failure in advance should not agree to work on this project (even when paid to do so) until most of the issues get resolved. We are sometimes paid to shut up and work until the project's failure. But this is detrimental to our psychology and our further ability to work. Therefore, it is often said that a professional should know when to say “No!”.

This is why “like this site” would rarely if ever work. But we could at least try to understand the reasoning behind it and the factors that lead the client to believe that this is the right solution for them.

A site can be seen as a collection of features evaluated from the client's perspective. If the client has site A, the features that might be interesting to them could be usability, accessibility, aesthetics, functionality, maintainability of both code and content, performance, standards-compliance, SEO or anything else. So if they score these features from 0 to 100, they give us a vague understanding of the current state of the site as they see it. “Like this site” means evaluation of B according to the same criteria and by the same person. This gives us two vectors with equal number of features. Then we could compute the dot product, which is used in the cosine similarity. For vectors with 3 features this is defined in the following way (although it works similarly for any number of features).

After all multiplications and additions, we get a number. If we wanted another vector, we would need to use the cross product. Here is the dot product expressed as a sum

and as a JavaScript code

The cosine similarity is then

We compute the norms, using the sample vectors defined by program code

So we get

The dot product is seen in many other cases. If we take two matrices and multiply them

each entry in the new matrix will be a dot product from a row vector of the first matrix and the column vector of the second matrix. (For the multiplication to be possible, the number of columns of the first matrix should be equal to the number of rows of the second matrix).

What if we have a neural network with some input values that are weighted differently and a neuron which produces an output from them? Looks like the dot product.

What if we have a small 3x3pixels image segment, whose pixels are represented through numeric values (possibly the red, green or blue channel) and we want to convolve it with a kernel of size 3x3? We compute a11*b11 + a12*b12 + a13*b13 + a21*b21 + a22*b22 + a23*b23 + a31*b31 + a32*b32 + a33*b33, and then replace the pixel value at the center of the original image with the normalized result of this sum. This looks again very similarly to the dot product.

If we have an evaluation method with many criteria and we would like to assign a different weight to each to understand how various options compare to each other, we could use again something similar to the dot product, without even realizing it. Our clients would be happy to learn about it.