English is Purple and One Dimensional
and why "Source Code" is a terrible place to put Software
What's the Alternative?
Step 3 is then to validate that we have successfully accomplished this by creating a Red Algorithm (basically a "report") that reassembles the Blue Model back into the original Purple English. Doing this proves, by it's very existence, that the model has enough internal detail to accurately represent the original idea.
The key is that by pulling apart the Purple into these two separate parts, a different "report", i.e. a different Red Algorithm, can take the same underlying facts from the model - but construct longer, possibly more detailed report about the idea... possibly in French, or German. It would use the same underlying facts. The same underlying elements and details. The same information being communicated - but arranged into a different syntax, grammar - and possibly using a different vocabulary, i.e. possibly a completely different language.
Each of these different reports however hopefully represents exactly the same idea - the same underlying facts - which should be Language Independent. Truth should be language independent.
What is "Truth"
The best description I've heard for the definition of truth is that...
So, while trying to communicate an idea with Bob, Alice will say some words, which hopefully have the same meaning to Bob as they do to her. And then, based on Bob's understanding of Alice's purple words, he will say words back to her to convey what he think's she meant.
And if Bob seems to be thinking of the same thing as Alice, then she may agree. And if not, she might disagree and say more purple words back to Bob, in order to attempt to update his understanding to more accurately match her understanding of the idea that they're trying to communicate about.
But this is all clearly an exercise futility, even when both parties are speaking the same language, because "reality" is completely Subjective. And all of this becomes dramatically more difficult when the parties are speaking different languages, like English and Python or C#, for example.
This opens the door to simply define this "digital twin" as being "Reality" - at which point the truthiness of literally any linguistic statement, can be Objectively Tested by simply checking if it "comports with reality" - where reality is defined as our Digital Twin.
Creating a "Digital Twin" for the underlying idea
The Blue Model described above, by contrast, is not a linguistic description of the idea. It is not a language at all, in fact. Instead, it is digital instantiation of the idea. A digital example of the idea that really serves as the platonic ideal of the idea that we are ultimately trying to capture with Language, and as a result, provides us with the the opportunity to agree on a shared "reality".
This "digital twin" can be created in virtually any no-code tool, from databases, to spreadsheets, to no-code services like Airtable, Tray.io, Bubble.io or others. The only requirement is that it is not "code". I.e. that it is just the decisions about how a system should behave, and should generally be exportable to json, xml, csv or a similar data-based, non-linguistic format.
This multi-dimensional data structure literally forms a physical picture in space. Not a description, but a digital instantiation of the idea being discussed..
With this digital twin in hand, all the project stakeholders can agree that it is an accurate representation of the idea. No words are needed. They can simply look at the Digital Twin - and it if looks, and acts, and behaves as expected - everyone can give a simple thumbs up or a thumbs down.
You could literally have 10 people approve the Digital Twin - and they could each literally speak a different language - and never actually communicate with each other directly in any way. Instead, they all simply look at the model and give a thumbs up or a thumbs down.
Once everyone involved agrees, at an abstract level, that the digital twin accurately represents the system, protocol, or software that we are trying to actually build - everything else gets dramatically easier.
Mail Merge
Dear Mary,So while we want the same basic content within each of the emails, we actually need 3 different versions of the email, each one including candidate specific details like their name and job. And, this email is just one of many different things that we need to do with this list of candidates.
Thank you for your recent application to work with us as a Graphic Designer. We will review your application and be in touch shortly. Sincerely, HR Manager Ellen.
Instead, however, we could also take the lessons learned in the 1980's, and split that 3 page purple content into it's two constituent parts.
A list of candidates, along with the job they are applying for, (a blue model)
Applicant Phone Job Address...
